Getting Started

Dodo is a local task management CLI with a web UI. Tasks are stored as JSONL in a .dodo/ directory, making them easy to track in version control.

Install

bun add --exact @matthamlin/dodo

Or with npm:

npm install --save-exact @matthamlin/dodo

Quick Start

1) Initialize

dodo init

This creates a .dodo/ directory with a tasks.jsonl file. You can skip this step — most commands auto-initialize if needed.

2) Create a task

dodo add "Fix login bug"

Add details with flags:

dodo add "Setup database" --description "Configure PostgreSQL" --tags "setup,backend"

3) List tasks

dodo list

Tasks are displayed as a tree. Done tasks are hidden by default — pass --all to include them.

4) Update status

dodo update abc12345 --status in-progress

5) Complete a task

dodo complete abc12345

Storage

Tasks live in .dodo/tasks.jsonl — one JSON object per line. This format is:

  • Human-readable — you can inspect it with any text editor
  • Git-friendly — diffs are clean, merges are straightforward
  • Atomic — writes use a temp file + rename to prevent corruption

Add .dodo/ to your repository to share tasks with your team.

Next Steps