Skip to content
For the complete documentation index, see llms.txt.
EngineeringCLIAutomation
Updated (published July 2, 2026) · 2 min read

A CLI task manager for scripts, CI and agents

GTD task management in the terminal: quick capture, JSON for scripts, API-key auth for CI, and context commands for agents, synced with every Done Bear app.

A brown bear in a blue shirt working at a laptop.

TL;DR: npm install -g donebear installs the Done Bear CLI, a GTD task manager in the terminal on the same real-time sync as the web, desktop and iOS apps. --json output, DONEBEAR_TOKEN auth and donebear context let CI jobs and AI coding agents drive it as well as people.

Done Bear’s CLI talks to the same sync engine as every other Done Bear app. A task you add in the terminal is the same task on your phone, in the same five views, with no export or bridge between them.

Capture without leaving the shell

donebear task add "Fix the flaky deploy test"

It lands in Today by default. Pass --when inbox when you’re only capturing, then triage it into Today, Upcoming, Anytime or Someday later: the GTD flow that makes systems stick. Listing, completing and searching are as short: donebear task list, donebear task done, donebear search "deploy". On macOS the Raycast extension covers the moments you’d rather click.

Scripts: JSON out, tokens in

donebear task list --json
donebear search "launch" --format csv
donebear search "blocked" --total   # count only, handy in shell conditions

CI and non-interactive scripts skip the browser login. Create a long-lived key and export it:

donebear api-key create "CI"
export DONEBEAR_TOKEN=<token>
donebear task list --json

Token precedence runs --token, then DONEBEAR_TOKEN, then your stored login, so a script can override auth for one command without touching your session. Pin the workspace with --workspace <slug> and scripts never depend on whoever’s default they inherited.

What people build with it:

  • A nightly CI job that files a task when a dependency audit fails.
  • A git hook that adds “write release notes for vX.Y” when you tag.
  • A cron script that posts your overdue-task count to your status bar.

Agents: context on demand

donebear spec                      # the full command surface, no auth needed
donebear context --json            # snapshot of your workspace for an agent

spec tells an agent what the CLI can do. context tells it what’s true right now: views, projects and tasks in one call. There’s a ready-made agent skill at donebear.com/skill.md too, so assistants like Claude Code drive the CLI without trial and error.

If your agent uses MCP instead of the shell, the hosted MCP server exposes the same capabilities over OAuth. The Claude setup covers Claude Desktop and claude.ai.

Every client sees the same list

A CLI task manager is only worth trusting if the terminal, your phone and your team see the same list. The CLI writes through the same server that orders every change, and the apps are local-first: they commit writes locally and sync reconciles the rest in real time, including a teammate’s edits in a shared workspace.

Getting tasks into a terminal is the easy part. Getting every client to agree afterwards is the work.

Install and add a first task

npm install -g donebear
donebear auth login
donebear task add "Try Done Bear from the terminal"

The CLI docs have the full command reference, automation patterns and the Things 3 importer. If you’re leaving Things 3, the Things 3 alternative comparison covers what changes. Free up to 250 tasks. See pricing.

Start free with agent access

The same list your CLI and Claude already use. Free up to 250 tasks. No credit card.

Get new posts by email

New writing on GTD, local-first software, and building a calm task manager, sent when it is published. Nothing else, and you can leave any time.