Desktop app that captures screen activity via UI Automation (with OCR fallback), 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.sqlite - Output: Obsidian vault (user-configured path) under
TaskFlow/subdirectory
- Rust (stable)
- Node.js with pnpm
- Python 3.11+
-
Frontend dependencies
pnpm install
-
Sidecar dependencies (use isolated venv to avoid numpy 2.x breaking torch)
cd sidecar python -m venv venv venv\Scripts\activate # Windows # source venv/bin/activate # macOS/Linux pip install uv uv pip install -r requirements.txt
First launch downloads the
all-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(34 tests: wiki ingest, rollup engine, OCR, 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 text capture with OCR fallback (WinRT
Windows.Media.Ocr) for unreadable windows - 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; 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)
