MIT License Node.js 20+ git-native agent-optimized 11 item types TOON format v2026.6.17 79 actions

Project management
that lives in your repo

git-native project management for humans and AI agents โ€” zero config, append-only audit log, token-efficient TOON output, 9 extension capabilities, fully extensible.

$
$ npm install -g @unbrained/pm-cli
Quick start

Up and running in 30 seconds

Four commands. That's all it takes to install pm-cli and start tracking your first task.

$ npm install -g @unbrained/pm-cli
added 1 package, audited 1 package in 3s
$ pm init
โœ“ initialized .agents/pm/ โ€” ready to track work
$ pm create --type Task --title "My first task"
id: pm-tsk-abc123 type: Task status: open
$ pm list
pm-tsk-abc123 โ”‚ Task โ”‚ open โ”‚ My first task
$
Full quickstart guide Browse all 95 commands
Lifecycle

Six statuses, deterministic transitions

Every item follows the same lifecycle. Agents and humans share a predictable state machine with full audit trail.

draft
open
in_progress
blocked
closed
canceled

start-task claims + moves to in_progress ยท pause-task releases + returns to open ยท close-task closes + releases claim

Features

Everything you need, nothing you don't

Designed for the way modern teams โ€” and their AI agents โ€” actually work. 11 item types, 10 command families, 9 extension capabilities.

๐ŸŒฟ

Git-native storage

Items live in .agents/pm/ right inside your repository. Review, diff, and merge project items just like code. No external database.

.agents/pm/
๐Ÿค–

Agent-optimized TOON output

TOON format emits only changed fields โ€” sparse, token-efficient output that keeps LLM context windows lean while staying fully machine-readable.

TOON format
๐Ÿ“‹

Append-only JSONL history

Every mutation is recorded in a JSONL audit log with RFC6902 patches, content hashes, and full provenance from creation to close.

RFC6902 patches
๐Ÿ”Œ

9 extension capabilities

commands, renderers, hooks, schema, importers, search, parser, preflight, services. Ship your own with the extension lifecycle manager.

extensible
โšก

Zero-config start

One command โ€” pm init โ€” sets up everything with smart defaults. Start tracking work in under ten seconds.

pm init
๐Ÿ”

Hybrid search

Keyword search always available. Add semantic or hybrid search with OpenAI-compatible or Ollama providers plus Qdrant or LanceDB vector stores.

semantic search
๐Ÿงช

Linked tests & verification

Bind test commands to work items with assertion metadata. Run with pm test --run, track results in history, background test runs, sandbox-safe testing.

pm test
๐Ÿ“…

Time-aware planning

Built-in Events, Reminders, Milestones, and Meetings keep schedule metadata next to your work. Filter and inspect them through the current list, search, context, and item-detail commands.

events / reminders
๐Ÿ”’

Claim / Release lifecycle

Claim items to prevent double-work. Use start-task, pause-task, and close-task aliases for safe state transitions.

pm claim / release
๐Ÿ”—

Rich metadata model

Rich metadata for sprint, release, estimate, risk, confidence, acceptance criteria, definition of ready, blocked-by, severity, and more.

metadata-rich
๐Ÿ”„

Bulk operations

Update many items at once with pm update-many. Dry-run plans and rollback checkpoints keep broad changes reviewable.

update-many
๐ŸŒ

Machine contracts

Machine-readable contracts via pm contracts --json. Custom item types via config and extensions.

JSON schema
Item Types

11 built-in item types

Plus custom types via config and extensions. Each type has its own option policies โ€” required fields, disabled fields, and smart defaults.

๐Ÿ”ง Chore
โš–๏ธ Decision
๐Ÿ”๏ธ Epic
๐ŸŽช Event
โœจ Feature
๐Ÿ› Issue
๐Ÿ“… Meeting
๐Ÿ Milestone
๐Ÿ“ Plan
โฐ Reminder
โœ… Task

Custom types via pm config or extensions โ€” define your own schemas, fields, and workflows.

Commands

95 commands, 10 logical families

From bootstrap to lifecycle, every command is designed for both humans and agents. Browse the full reference โ†’

๐Ÿš€

Bootstrap

config, extension, health, init, install, package, packages, schema, upgrade

๐Ÿ”

Triage

aggregate, context, ctx, get, list, list-all, list-blocked, list-canceled, list-closed, list-draft, list-in-progress, list-open, search

โšก

Lifecycle

append, claim, close, close-task, create, delete, pause-task, release, restore, start-task, update, update-many

๐Ÿ“

Planning

plan

๐Ÿ“

Logs

comments, learnings, notes

๐Ÿ”—

Links

deps, docs, files

๐Ÿงช

Verification

gc, test, test-all, validate

๐Ÿ“œ

History

activity, history, stats

๐Ÿค–

Machines

contracts

โš™๏ธ

Other

close-many, copy, event, extension activate, extension adopt, extension adopt-all, extension catalog, extension deactivate, extension doctor, extension explore, extension init, extension install, extension manage, extension reload, extension uninstall, focus, history-compact, history-redact, history-repair, meet, package activate, package adopt, package adopt-all, package catalog, package deactivate, package doctor, package explore, package init, package install, package manage, package reload, package uninstall, packages activate, packages adopt, packages adopt-all, packages catalog, packages deactivate, packages doctor, packages explore, packages init, packages install, packages manage, packages reload, packages uninstall, remind, telemetry

Interactive demo

See pm-cli in action

Click any tab to see a real workflow. Output animates line by line โ€” just like your terminal.

Agent-optimized

What is TOON?

The Token-Optimized Object Notation emits only changed fields โ€” a sparse, machine-readable format designed to keep LLM context windows lean.

Sparse, token-efficient output

Traditional JSON APIs return the full object on every read. TOON returns only the fields that changed โ€” dramatically reducing token usage when agents are working in tight loops.

Built for agents

  • Progressive context โ€” lean agent snapshots without broad list scans
  • Machine contracts โ€” JSON Schema for every command
  • Append-only history โ€” RFC6902 patches for state replay
  • Claim/Release โ€” prevent double-work across agents
  • Background tests + sandbox mode
# After: pm create --title "Add SSO" --type Feature
id: pm-fea-7x9k2m
type: Feature
title: Add SSO
status: open
priority: 2
created: 2026-05-04T10:30:00Z
createdBy: agent

# After: pm update pm-fea-7x9k2m --status in_progress
id: pm-fea-7x9k2m
status: in_progress โ† only changed field
updated: 2026-05-04T11:15:00Z

# History entry (JSONL)
{
  "op": "update",
  "id": "pm-fea-7x9k2m",
  "patch": [
    {"op":"replace","path":"/status","value":"in_progress"}
  ],
  "ts": "2026-05-04T11:15:00Z"
}
Use cases

Built for every workflow

Whether you're a solo dev, a team lead, an AI agent, or an open-source maintainer โ€” pm-cli adapts to how you work.

๐Ÿ‘จโ€๐Ÿ’ป

Solo developer

Personal project tracking

Track todos, features, and bugs alongside your code. No overhead, no sync issues โ€” everything lives in git.

pm init pm create --title "Add auth flow" --type Feature --priority 1 pm start-task auth-01 pm close-task auth-01 "Auth shipped with tests"
๐Ÿค–

AI coding agent

Autonomous task execution

Agents use TOON output and JSON contracts for deterministic, token-efficient project management in tight loops.

pm context --depth brief --json pm claim bug-42 pm test-all --json | jq '.ok' pm close-task bug-42 "Fixed: added null check"
๐Ÿ‘ฅ

Team sprint

Collaborative planning

Use the software-sprint preset for sprint-based workflows with claim/release, linked files, and structured reviews.

pm init bash presets/software-sprint/setup.sh pm create --type Task --sprint S3 --estimate 120 --assignee alice pm list-all --sprint S3 pm stats
๐ŸŒ

Open-source maintainer

Issue triage & releases

Import GitHub issues, triage with search and aggregation, track milestones, and manage releases โ€” all from the CLI.

pm install github.com/unbraind/pm-github pm search regression auth pm create --type Milestone --title "v2.0 Release" pm aggregate --group-by type
Latest release

What's new in v2026.6.17

Generated from the current pm CLI changelog. v2026.6.17 (2026-06-17) includes 10 tracked changes across Added, Other.

See full changelog โ†’

โœจ

Added

  • GH-216: default lifecycle transition suggestions (pm-y1z0)
  • GH-217: scheduling type creation shortcuts (pm-76r5)
  • Sentry PM-CLI-1R: 'cannot add command init as already have command init' โ€” top-level init double-registration throws raw Commander error (pm-zyez)
  • GH-258: strict unknown-key rejection across all structured CSV/markdown link & metadata parsers (validation parity with test --add) (pm-0v9k)

+5 more in the changelog

v2026.6.17 ยท 2026-06-17
๐Ÿ“ฆ

Other

  • Document schema/fields.json runtime custom field authoring in CONFIGURATION.md (pm-izx5)
v2026.6.17 ยท 2026-06-17
Why pm-cli

Not another project management tool

pm-cli is fundamentally different from SaaS tools. Your data is yours, your workflow is in git, and agents are first-class citizens.

pm-cliJiraLinearNotion
Lives in git repoโœ“โœ—โœ—โœ—
Agent-optimized output (TOON)โœ“โœ—โœ—โœ—
Offline-firstโœ“โœ—โœ—โœ—
Append-only audit log (RFC6902)โœ“PartialPartialโœ—
Zero configโœ“โœ—โœ—โœ—
Free & open sourceโœ“โœ—โœ—โœ—
CI/CD integrationโœ“APIAPIAPI
Extensible plugins (9 cap types)โœ“Marketplaceโœ—โœ—
Linked test executionโœ“โœ—โœ—โœ—
Calendar & schedulingโœ“โœ“Partialโœ—
Semantic / hybrid searchโœ“โœ—โœ—โœ—
Machine-readable contractsโœ“โœ—โœ—โœ—
Bulk operations with rollbackโœ“โœ—โœ—โœ—
Token-efficient output formatโœ“โœ—โœ—โœ—
Presets

Pre-configured PM workspaces

Drop a preset into any initialized project for the right settings, templates, and governance rules.

Package Store

Ready-to-install pm packages

26 official and community packages: the web app, graph sync, importers, renderers, integrations, scaffolds, and preconfigured workspace presets.

pm-beads official

Beads JSONL importer extension for pm-cli

commandsimportersschema
pm-brief official

Token-budgeted agent briefs and next-work plans for pm workspaces

commandsrenderersschema
pm-calendar official

Show agenda, day, week, and month views for deadlines, reminders, and scheduled events.

commands
pm-changelog official

Generate CHANGELOG.md and release notes from completed pm items for local releases, GitHub Actions, runners, and scripts. Can run as a standalone CLI/API package or as `pm changelog generate`.

commandsimportersschema
Get started

Up and running in seconds

Install globally, initialize any repo, start tracking. That's it. Works with any language, any stack, any team size.