Project Manager -- Track projects, issues, and AI agent sessions across multiple repos from the command line.
pm is a developer-first CLI for managing parallel development across many repositories. It combines lightweight project tracking, issue management, agent session recording, health scoring, and a web dashboard -- all backed by a local SQLite database.
When you're developing across many repos with AI coding agents, you need a way to:
- Keep track of which projects are active and their current state
- Manage issues and features without leaving the terminal
- Launch AI agent sessions tied to specific issues and worktrees
- Get a quick health check across all your projects at a glance
- Export data and generate reports for weekly reviews
- Project tracking -- Add, scan, and organize repos by group
- Issue management -- Track bugs, features, and chores with priorities and tags
- Agent sessions -- Launch, close, and resume Claude Code agents in worktrees, tied to issues, with commit tracking and last-active timestamps
- Health scoring -- 0-100 composite score across 5 dimensions (git cleanliness, activity, issues, releases, branches)
- GitHub metadata -- Auto-detect branch count, GitHub Pages status, and repo description on project refresh
- Standards checking -- Verify projects follow conventions (Makefile, CLAUDE.md, tests, etc.)
- Web dashboard -- Embedded React UI served alongside a REST API
- Issue import -- Bulk-import issues from markdown files with LLM-powered or keyword-based type/priority classification
- Data export -- JSON, CSV, and Markdown export for projects, issues, and sessions
- MCP server -- Model Context Protocol server for Claude Code integration
- Auto-detect project -- Running
pmin a project directory shows its status automatically
# Install
go install github.com/joescharf/pm@latest
# Initialize configuration
pm config init
# Add a project (current directory)
pm project add .
# Or scan a parent directory to discover all git repos
pm project scan ~/code
# Create an issue
pm issue add --title "Add user authentication"
# Import a backlog of issues from markdown
pm issue import backlog.md --dry-run
# Check status across all projects
pm status
# Launch the web dashboard
pm servebrew install joescharf/tap/pmThe Homebrew cask installs a signed and Apple-notarized universal binary.
Download pm_macos_universal.pkg from the latest release. The .pkg is signed, notarized, and stapled -- double-click to install to /usr/local/bin/pm.
go install github.com/joescharf/pm@latestgit clone https://github.com/joescharf/pm.git
cd pm
make build
# Binary is at ./bin/pmConfiguration lives at ~/.config/pm/config.yaml. Initialize it with:
pm config initKey settings:
| Key | Default | Env Var | Description |
|---|---|---|---|
state_dir |
~/.config/pm |
PM_STATE_DIR |
State/data directory |
db_path |
~/.config/pm/pm.db |
PM_DB_PATH |
SQLite database path |
github.default_org |
"" |
PM_GITHUB_DEFAULT_ORG |
Default GitHub org |
agent.model |
"opus" |
PM_AGENT_MODEL |
Claude model for agents |
agent.auto_launch |
false |
PM_AGENT_AUTO_LAUNCH |
Auto-launch agents on worktree create |
anthropic.api_key |
"" |
ANTHROPIC_API_KEY |
API key for LLM features (issue import) |
anthropic.model |
"claude-haiku-4-5-20251001" |
PM_ANTHROPIC_MODEL |
Model for LLM extraction |
Precedence: flags > environment variables > config file > defaults.
See the full configuration docs for details.
pm project add|remove|list|show|scan|refresh Manage tracked projects
pm issue add|list|show|update|close|link|import Manage issues and features
pm status [project] Cross-project status dashboard
pm agent launch|close|list|history Manage AI agent sessions
pm worktree list|create Manage git worktrees (alias: wt)
pm tag list|create|delete Manage issue tags
pm standards [project] Check project standardization
pm export Export data (JSON/CSV/Markdown)
pm report weekly Generate weekly summary
pm serve [start|stop|restart|status] Start web UI + REST API (foreground or background)
pm config init|show|edit Manage configuration
pm mcp Start MCP stdio server
pm version Print version info
Global flags: --verbose (-v), --dry-run (-n), --config <path>
pm serve starts an embedded web UI at http://localhost:8080 (use pm serve start to run in the background) with:
- Dashboard -- Overview of all projects with health scores, open issue counts, quick links, and a Refresh All button to update project metadata on demand
- Projects -- Detailed project view with git metadata, issues, and health breakdown
- Issues -- All issues grouped by project with status/priority/tag filters
- Sessions -- Agent session list with project column, clickable detail view showing git state (commits, ahead/behind, dirty status)
- REST API -- Full CRUD API at
/api/v1/for programmatic access
The UI is a React/TypeScript SPA built with Vite, TanStack Query, and shadcn/ui, embedded directly into the Go binary.
Full documentation is available in the docs site:
Build and serve docs locally:
make docs-deps # one-time setup
make docs-serve # starts at http://localhost:8000See LICENSE for details.