The command line
A tracker that speaks shell.
One tracker binary. Ordinary use is tracker init then tracker to open Home. The rest of the command surface covers tickets, boards, agents, gates, evidence, governance, and sync. Commands support --json and stable exit codes; only explicit interactive setup paths ask for input.
Three ways to sit in it
Shell, TUI, or Home. Your call.
The plain CLI is for scripts and agents. When a human wants to live in the tracker for a while, three interactive front ends share the exact same data and rules.
REPLtracker shell
Slash commands with no per-call startup cost: /board, /ticket create, /dispatch run, /approvals. Fastest way to grind through a grooming session.
/ticket move APP-1 in_review/inboxFull screentracker tui
Board tab uses the same polished table as tracker board, with keyboard scrolling for long lists and optional Kanban cards. Queues, detail, search, review, and ops stay keyboard-first. Single keys claim, move, comment, approve, and complete tickets.
nmcpvd/Browsertracker
Atlas Home on 127.0.0.1:7432: workspaces, projects, attention, backup health. Legacy tracker web serve --open is the single-workspace board. Loopback only, one essential session cookie, --read-only when you want a wallboard.
tracker--open--read-onlyThe command map
73 commands, nine neighborhoods.
Counted from the release source, not marketing. Run tracker help for the live list or read the full command reference for every flag.
4Setup
Initialize a workspace, tune config, and repair the index when something looks off.
initconfigdoctorreindex10Tickets
Create, edit, link, label, classify, schedule, and search the work itself, one at a time or in bulk.
ticketprojecttemplatesclassifyschedulebulkrendersearchinspecttimeline15Views
Read the same tickets from every useful angle, then save the angles you like.
boardbacklogblockednextqueuereview-queueowner-queuewhodashboardinboxapprovalsmentionsviewswatchunwatchPersonal queues include assigned backlog as pending work after ready and unblocked tickets. tracker next shows its readiness reason; it does not automatically promote or claim the ticket.
7Agents
Register agents, apply team presets, dispatch runs, and expose the MCP server.
agentteamdispatchrungoalintegrationsmcp8Delivery
Tie tickets to branches, pull requests, checks, gates, evidence, and handoffs.
changechecksghgitgateevidencehandoffworktree12Governance
Permission profiles, collaborators, trust, signing, audits, and redaction for teams that need proof.
governancepermissionspermission-profilecollaboratormembershiptrustauditkeysignverifyredactadmin6Sync
Move workspaces between machines with bundles, remotes, and conflict tooling.
remotesyncbundleconflictimportexport6Lifecycle
Back up, archive, compact, sweep, and automate the boring maintenance.
backuparchivecompactsweepnotifyautomation5Interactive
The REPL shell, full-screen TUI, local web board, verified self-update, and version metadata.
shelltuiwebupdateversionThe JSON contract
Pipe it anywhere. Parse it everywhere.
Add --json to any command and stdout becomes exactly one JSON document. Notifications, warnings, and errors go to stderr, so a pipeline never has to guess what it just read.
$ tracker version --json
{
"build_date": "2026-09-14T21:17:25Z",
"commit": "3277570d8fef1a2b1b364e085f4b18091ab27671",
"format_version": "v1",
"go_version": "go1.26.6",
"kind": "tracker_version",
"platform": "darwin/arm64",
"version": "v1.15.0"
}
{
"format_version": "v1",
"ok": false,
"error": { "code": "not_found", "message": "ticket APP-99 not found", "exit": 3 }
}
Branch on error.code or the exit status, never on message text. And never parse the pretty tables: the JSON is the interface.
Exit codes
Eight codes, no surprises.
Exit codes are part of the public contract, so scripts and agents can branch without reading a single byte of output. Exit 4 on a status change is the workflow working, not a crash: only some status edges exist, and Atlas refuses the rest.
| Code | Meaning | What it usually is |
|---|---|---|
0 | ok | It worked. |
1 | internal | A real bug, or a missing required flag. |
2 | invalid_input | Bad status, type, priority, or actor. Malformed query. |
3 | not_found | No such ticket, project, agent, or view. |
4 | conflict | Forbidden transition, ticket already claimed, already exists. |
5 | permission_denied | Policy, separation of duties, or the wrong reviewer. |
6 | busy | Another writer holds the workspace lock. |
7 | repair_needed | Index is unreadable, or doctor found it stale. Run tracker doctor --repair or tracker reindex. |
Nothing ever prompts. A missing required flag fails immediately naming the flag instead of waiting on stdin, which is exactly what you want under automation.
A day in the loop
Claim, work, prove, hand off.
This is the whole working rhythm, human or agent. Mutation commands resolve identity from --actor, then TRACKER_ACTOR, then actor.default; missing identity exits 2 before any write. Include --reason so the audit trail says why.
# what can I work on right now tracker agent available builder-1 --json # take it tracker ticket claim APP-12 --actor agent:builder-1 --reason "start work" tracker ticket move APP-12 in_progress --actor agent:builder-1 --reason "start work" # leave a durable trace as you go tracker ticket comment APP-12 --body "swapped the retry to exponential backoff" \ --actor agent:builder-1 --reason "progress note" # hand it over tracker ticket request-review APP-12 --actor agent:builder-1 --reason "ready for review" # and as the reviewer tracker ticket approve APP-12 --actor agent:reviewer-1 --reason "review passed"
Statuses move through backlog, ready, in progress, in review, done, and canceled, with blocked as the exception lane. Review and done are reached through request-review, approve, or complete because those commands also run the completion policy and gates. Under review_gate, approval itself finishes the ticket; complete cannot skip review. The details live in tickets and workflow.
Next stop
Give your agents the same CLI.
Everything on this page works for an AI agent too. The For agents page adds the MCP server, permission profiles, and the safety model on top.