An intent-based task manager that answers what am I doing now? before it answers what exists. Everything lives in SQLite on your machine. The API binds to loopback only. No analytics, no telemetry, no network dependency — and an operating layer built for sub-agents to work alongside you.
VibeTasks carries a second layer for agents doing the work with you — a queue to claim from, a session that closes with a baton, and a learning loop that promotes what repeats into enforceable artifacts. Sub-agents reach it through the local CLI and API. It stays out of your task view: the main page never fetches or summarizes operating-layer data.
Sub-agents pull the next item from a shared queue instead of colliding on the same task. Claim, work, release — the coordination primitive for more than one agent.
Every session closes into an exportable baton — what was done, what's next, what to watch. The next agent picks up continuity instead of context.
A learning starts as an observation, gets validated, and is promoted into an enforceable artifact — or retired. Repeated lessons stop being tribal knowledge.
A deliberate separation. The operating layer is for the agents. The task surface is for you. One never leaks into the other — so the tool you look at stays about your work, not the machinery running underneath it.
One workspace, zero tasks, sync_enabled = false. Nothing to configure, nothing phoning home.
On macOS the database lives at ~/Library/Application Support/VibeTasks/tasks.sqlite. Point VIBETASKS_DB elsewhere — including :memory: for tests.
Requires Node 20+. Light and dark modes follow your OS on first use; the header toggle saves only the theme, only on that device.