Skip to content
For the complete documentation index, see llms.txt.
EngineeringCLIAutomation
· · 2 min read

A CLI Task Manager for Scripts and Agents

GTD task management in the terminal: quick capture, JSON output for scripts, API-key auth for CI, and agent-friendly context commands.

TL;DR: npm install -g donebear gives you a real 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 mean CI jobs and AI coding agents can drive it too, not just people.

Terminal task tools usually make you pick one of two compromises. A plain-text system like taskwarrior or todo.txt never reaches your phone, or you get a real task manager whose CLI was clearly built last. Done Bear’s CLI is a first-class client of the same sync engine as every other app. A task you add in the terminal is on your phone before you’ve switched windows.

Capture without leaving the shell

donebear task add "Fix the flaky deploy test"

It lands in your Inbox, and you triage it into Today, Upcoming, Anytime or Someday: the GTD flow that makes systems stick. Listing, completing and searching are just 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 instead of ten. There’s a ready-made agent skill at donebear.com/skill.md too, so assistants like Claude Code drive the CLI without the trial and error.

If your agent speaks MCP rather than shell, the hosted MCP server exposes the same capabilities over OAuth. The Claude setup covers Claude Desktop and claude.ai.

Why sync is the point

A CLI task manager is only worth trusting if the terminal, your phone and your team see the same list. Done Bear is local-first, so the CLI works offline, writes commit locally first, and sync reconciles the rest in real time, including a teammate’s edits in a shared workspace.

Turns out the hard part was never getting tasks into a terminal. It was everything agreeing afterwards.

Get started

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 one-command Things 3 importer. Your first 250 tasks are free. See pricing.

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.