User guide
How hyper-pm fits in your day — output formats, planning hierarchy, branches, sync, and troubleshooting.
What runs where
- Your repo (primary clone): normal
gitwork — branches you create withticket work, commits, pushes. - Data branch: an orphan branch that holds
.hyper-pm/config.jsonand the append-only JSONL event log. The CLI opens a disposable worktree to read and append events (see Worktrees). - GitHub (optional):
syncandticket import-githubwhen sync is enabled and credentials are available.
Beyond the terminal
The same CLI powers optional front-ends:
- Web UI (
hyper-pm-web) — local browser app plusPOST /api/runfor scripts; the server pins--repo,--temp-dir, and--format json. - MCP server (
hyper-pm-mcp) — stdio MCP for editors; toolhyper_pm_runtakesargvplus optional global fields.
Pick CLI for scripts and CI, Web for exploratory UI and simple HTTP automation, MCP when an assistant should drive hyper-pm from chat.
JSON vs text output
The default is --format json, which is ideal for scripting and tools like jq.
hyper-pm epic read | jq '.items[].id'For interactive use, put --format text (and any other global options) before the subcommand:
hyper-pm --format text epic read
hyper-pm --format text ticket read --status todo --status in_progressPlanning model
- Epic → Story → Ticket is the usual hierarchy. Tickets can also exist without a story (
ticket createwithout--story). - Statuses for epics, stories, and tickets use the same set:
backlog,todo,in_progress,done,cancelled(see Data model). - Soft deletes remove items from normal reads but stay in the event log for auditability.
Typical workflows
Start a new initiative
hyper-pm init(once per repo).- Create an epic, then stories under it, then tickets under a story (or standalone tickets).
- Run
hyper-pm doctorafter upgrades or if anything feels off.
Pick up a ticket
hyper-pm --format text ticket read --status todo(or filter by epic/story — see Tickets).hyper-pm ticket work --id <id>creates a branch, checks it out, sets status toin_progress, and links the branch on the ticket.- When finished: commit in your normal flow, then
hyper-pm ticket update --id <id> --status done(or your team’s convention).
Leave breadcrumbs
ticket commentappends a durable comment (stored as an event). It shows up onticket read --idin thecommentslist.auditlists raw events for compliance or debugging — see repo, sync & audit.
Work with GitHub
Configure repo slug and whether GitHub sync is allowed (see Configuration and GitHub sync). Git only: hyper-pm sync. Git + GitHub (issues, inbound, PR activity): hyper-pm sync --with-github (requires auth; sync must not be off in config).
hyper-pm sync
hyper-pm sync --with-githubOutbound issue creation on GitHub requires a valid epic → story → ticket chain for that ticket. Unlinked tickets are still updated if they already have a linked issue.
Discovering flags
The CLI is the source of truth for every flag:
hyper-pm --help
hyper-pm ticket read --helpThe docs site mirrors that behavior in Command overview and the per-topic CLI pages.
If something goes wrong
hyper-pm doctor— validates log replay.- Wrong repo? Use
--repo <path>(global, before the subcommand). - GitHub sync / auth: for
sync --with-github, ensureGITHUB_TOKENorgh auth login, andGITHUB_REPOor--github-repo/ config — see Configuration. Plainsynconly uses git and does not need a GitHub token.