Desktop app that captures screen activity on Windows and Linux, processes it with AI summarization/filtering, and maintains an Obsidian "second brain" wiki.
- Rust core (
src-tauri/): Tauri 2 backend with SQLite storage, rollup engine, wiki writer - React/TS frontend (
src/): Vite-powered UI with timeline, settings, vault browser - Python FastAPI sidecar (
sidecar/, port 7878): AI summarize/filter/embed endpoints - Storage: SQLite at
%APPDATA%\com.taskflow.desktop\taskflow.sqliteon Windows, or~/.local/share/com.taskflow.desktop/taskflow.sqliteon Linux - Output: Obsidian vault (user-configured path) under
TaskFlow/subdirectory
- Rust (stable)
- Node.js with pnpm
- Python 3.11+
- Linux window capture: Hyprland (
hyprctl) or X11 (xprop) - Optional Linux deep capture OCR:
tesseract, plusgrimon Hyprland orimport/maimon X11 - Optional Linux idle detection:
xprintidle(X11) or logindIdleHint(Wayland)
-
Frontend dependencies
pnpm install
-
Sidecar dependencies (use isolated venv to avoid numpy 2.x breaking torch)
bash sidecar/setup.sh
On Windows, run
sidecar\setup.batinstead. The script creates.venv-sidecarand pins Python 3.11 whenuvis available. First launch downloads theall-MiniLM-L6-v2embedding model (~80MB). -
Run in development
pnpm tauri dev
The Python sidecar starts automatically when the Tauri app launches.
- Verify Rust code:
cd src-tauri && cargo check --lib - Run tests:
cd src-tauri && cargo test --lib(wiki ingest, rollup engine, OCR, Linux capture parsing, retention, etc.) - Build frontend:
pnpm build(typecheck + vite)
cargo build or pnpm tauri build: Full link hits LNK1318 (Windows PDB limit). Use cargo check --lib for verification.
- Capture: UI Automation on Windows; Hyprland/X11 window titles on Linux, with in-memory OCR fallback when
tesseractand a screenshot utility are installed - Rollup engine: ~10-min event windows → workstream nodes (
TaskFlow/Projects/<slug>.md) - Wiki: Obsidian vault with Apps/Sites/Activity/Projects hubs + daily notes derived from rollups
- Privacy: OCR never writes bitmaps to disk on either platform; Obsidian itself is capture-excluded
- Retention: Nulls
events.contentafter configured hours while keeping row for stats/feed
See .agents/skills/run-taskflow/SKILL.md for:
- Headless sidecar harness (boot, drive
/summarizeand/filterwithout GUI) - Setup gotchas and debugging tips
AGENTS.md: Architecture facts, command reference, conventionsPRODUCT.md: Design philosophy (narrative-over-numbers, keyboard-first, local-first)
