Ecosystem
A file-based project tracker with two interfaces. A CLI for automation and AI assistants. A milestone-centric web board for visual planning. No database, no cloud, no accounts.
cairn init
cairn add "Build the thing" --milestone "v1.0" --priority 1
cairn add "Ship it" --milestone "v1.0" --depends-on 1
cairn serve # open http://localhost:3000
Tasks organised by milestone in a visual board. Drag cards between milestones, reorder within columns, click to edit.
Tasks declare dependencies. Blocked state is computed automatically. Complete a dependency and everything it blocked becomes actionable.
Global tasks for trackable work. Locally scoped subtasks for decomposition. Promote subtasks to global tasks when they grow.
Every operation is a single command. Built for scripting, automation, and AI assistant integration.
Change a task via CLI, see it update on the board instantly. SSE-based push notifications with targeted DOM patching.
Everything is TOML files in a .cairn/ directory. Human-readable, version-controllable, editable with any text editor.
Autocomplete search for adding dependencies. Type a task title or #ID and pick from matching results.
Click any task on the board to open a detail panel. Edit every field, manage subtasks and dependencies, all without leaving the board.
A single Go binary. No database, no runtime, no package manager. Build and run.
Cairn stores tasks as TOML files in a .cairn/ directory. Each task is a numbered directory containing a meta.toml file. The CLI and web board both read and write these files directly. No synchronisation layer, no conflict resolution — just files.
.cairn/
cairn.toml # global config + ID counter
milestones.toml # milestone definitions
tasks/
1/
meta.toml # task data
tasks/
1/meta.toml # subtask 1/1
2/meta.toml # subtask 1/2
2/
meta.toml
3/
meta.toml