tm is a coding agent for your terminal. Talk to it live. When a task can run
without you, hand it to a background worker as a ticket. Workers submit evidence; you
accept, reject or retry. Every step is an event in a log you can replay.
$ tm ticket dispatch "Add per-key rate limiting to POST /v1/export"
Dispatched ticket T-2: ready for a worker (tm run T-2)
$ tm ticket list
ID Kind State Priority Due Objective
T-1 work ready 0 - Fix off-by-one in the pagination cursor
T-2 work ready 0 - Add per-key rate limiting to POST /v1/export
$ tm ticket accept T-1
error: can't do that from this state: T-1 is ready, so it can't be
accepted. Run it: tm run T-1
$ tm doctor
check status detail
invariants ok no invariant violations
hash-chain ok 0 events verified
index-health warn no commits yet
$ █
Most agents make you babysit one long chat. tm splits the work: a fast interactive agent for the thinking, and background workers for anything you can spec in a sentence.
@ completes file paths, ! runs shell, Shift+Tab cycles auto / plan / ask./bg fix the pagination bug in the chat, or tm ticket dispatch "..." from the shell, turns a sentence into a queued ticket.The terminal clips are the real tm binary against a live provider, recorded in docs/showcase. The right-hand frame is the real web client.
@calc.py completion, tool calls, a real crash repro.
1, the ticket closes.
Built on the idea that tools should be as intelligent as the agents using them. Read the thesis.
tm doctor verifies it). Record a run to a cassette and replay it offline, or fork a ticket at any event.tm mcp), an ACP agent for Zed (tm acp), a VS Code extension, and a typed TypeScript client.One binary, prebuilt for macOS and Linux (arm64 and x86_64). You need one configured provider, for example ANTHROPIC_API_KEY. See the install guide and providers.
$ brew install alliecatowo/tap/ticket-master
$ cd your-repo
$ tm init
$ tm
$ cargo install --locked \
--git https://github.com/alliecatowo/ticket-master.git tm-cli
$ tm init && tm