[M]AIN
v0.1.1 · open source
tickets agents
can drive.
Local-first tickets in SQLite with an append-only op log. No prompts, --json everywhere, stable exit codes.
$npm install -g @openthink/pm
macOS (arm64, x64) · Linux x64 · no Rust needed
file work, order it
$ pm new --title "Add retry to the sync client"
PM-1
$ pm new --title "Write release notes"
PM-2
$ pm relate PM-2 --blocked-by PM-1
PM-2
$ pm graph
wave 0: PM-1
wave 1: PM-2
done: false
two agents, one ticket
$ PM_ACTOR=agent-a pm claim --ready
PM-1
$ PM_ACTOR=agent-b pm claim PM-1
pm: PM-1 is taken by agent-a (since 2026-09-30 20:01 UTC) …
exit 75 → pick another
// how it works
The log is the database. Tables replay from the op log; concurrent edits merge (last-writer-wins fields, label sets, Loro text).
Built to be scripted. pm ready is the work queue; exit 75 means someone else took it.
Sync is optional. A self-hosted hub syncs machines and decides claims first-come. pm app opens a board.
Every verb and --json shape: CLI contract · README.