Core
Views and search
One set of tickets, many angles. Views are read commands: they never mutate, they all take --json, and the useful ones can be saved and replayed by name.
The standard views
| Command | What it answers |
|---|---|
tracker board | Default polished table. --style kanban selects optional cards. --view replays a saved board. |
tracker backlog | Everything not yet groomed to ready. |
tracker blocked | Tickets whose blockers are unresolved right now, derived from live status. |
tracker next | The single best next ticket for an actor: ready work first, then backlog whose blockers are all done (unblocked_for_me), then the rest of the queue. |
tracker queue | An actor's work queue grouped by category, printed in this order: ready_for_me, unblocked_for_me (backlog whose blockers are all done), claimed_by_me, blocked_for_me, needs_review, awaiting_owner, stale_claims, policy_violations. --json keys the same groups by name. |
tracker review-queue | What is waiting on review, per reviewer. |
tracker owner-queue | Decisions only a human owner can make. |
tracker who | Who holds what, across the workspace. |
tracker dashboard | The delivery summary across projects and runs. |
tracker timeline | A ticket's event timeline. |
tracker inbox | Derived human to-dos: open gates and handoff-ready runs. |
tracker approvals | Open approval work in one list. |
tracker mentions | Where an actor was mentioned. |
Inbox items are derived, not stored: open gates surface as gate:<id> and handoff-ready runs as handoff:<id>. Nothing to clean up.
Search syntax
Search is a tiny query language over indexed fields plus free text.
tracker search 'status=in_progress' tracker search 'project=AUTH text~logout flow' tracker search 'type=bug label=security assignee=agent:builder-1' tracker search 'text~"scenario 1000"'
- Fields:
status=,type=,project=,assignee=,label=. - Free text:
text~. Multi-word values work bare (text~logout flow) or quoted. - A malformed query is exit 2 with a JSON error under
--json, so scripts fail loudly.
Saved views
tracker views save sprint-42 --kind search --query 'project=APP label=sprint-42' tracker views run sprint-42 tracker views list tracker views delete sprint-42
Kinds: board, search, queue, next. Saved views also power other tools: bulk --view expands one into ticket IDs, and the web board can load one from its URL state.
Watchers
tracker watch ticket APP-1 --actor human:owner tracker watch project APP --actor human:owner --event ticket.moved tracker watch list tracker unwatch ticket APP-1 --actor human:owner
Watchers feed notification audience resolution. If a watched ticket, project, or view disappears, the watcher is marked inactive instead of dropped, so nothing silently unsubscribes.
The TUI
tracker tui is the full-screen cockpit: Board, Queues, Detail, Search, Review, Owner, Inbox, Views, and Ops tabs in one screen.
| Key | Action |
|---|---|
/ | Open the slash command palette. |
n / e | Create or edit a ticket. |
m / s | Move or assign the selected ticket. |
c | Toggle claim and release. |
o | Comment. |
p / v / x / d | Request review, approve, reject, complete. |
l / u | Link and unlink dependencies. |
b then y | Preview a bulk action, then apply the preview. |
tab / shift+tab | Switch tabs. |
The palette accepts the same slash commands as tracker shell, so muscle memory transfers between the two.
Rendering a single ticket for a PR description or a handoff? tracker render APP-1 prints clean Markdown for exactly one ticket.