pm-cli in your
browser
pm-web is the offline-capable PWA for pm CLI workspaces. It provides user authentication, multiple projects, fine-grained sharing with users and groups, multi-user real-time editing, an interactive knowledge graph with physics simulation, tag cluster visualization, GitHub-connected workflows, Ollama semantic search, admin interface, import/export, and a UI generated against pm CLI 2026.6.17.
pm CLI workspaces, in the browser
pm-web shells out to the real pm CLI for project operations in isolated project directories. The public site regenerates command, schema, guide, and doc data from the latest CLI so its public reference tracks the current release.
┌─────────────────────────────────────────────────────────────────┐
│ pm-web · My Project ▾ [share] [settings] [log out] │
├──────────────┬──────────────────────────────────────────────────┤
│ │ │
│ Items │ Open Items (12) │
│ Plans │ │
│ ────────── │ T-001 Implement auth middleware [claimed] │
│ Search │ T-002 Add project sharing API [open] │
│ Stats │ T-003 Write migration scripts [in-progress]│
│ Calendar │ T-004 Set up Docker compose [open] │
│ Activity │ P-001 Migrate auth [plan · 3 steps] │
│ Graph │ │
│ GitHub │ › Create · Filter · Sort · ⌘K Search │
│ ────────── │ │
│ Health │ │
│ Admin │ │
└──────────────┴──────────────────────────────────────────────────┘
Everything pm-cli, no terminal required
pm-web turns the CLI contract into a fast PWA-style interface: project CRUD, collaboration, GitHub linking/import, import/export, graph inspection, search, health, validation, and generated command coverage.
User Authentication
Register and log in with email and password. Sessions are scoped per user. Each account manages its own set of projects with independent access control.
Multiple Projects
Create as many projects as you need. Each project gets a dedicated pm workspace root, isolated from every other project and stored with server-side access control.
Project Sharing
Share any project with other registered users or entire groups. Assign view-only or edit permissions per collaborator. Revoke access at any time.
Group Management
Create groups and add members to share multiple projects with a team in one step. Group membership changes propagate to all shared projects automatically.
Full Item CRUD
Create, update, close, and delete the current pm item types: Chore, Decision, Epic, Event, Feature, Issue, Meeting, Milestone, Plan, Reminder, Task. All mutations go through the real pm CLI and appear in history.
Dependencies & Relationships
Add dependency metadata between items, surface blockers from real blocked_by CLI fields, and inspect relationship graphs. The graph view includes a Dependency Graph mode that filters to blocking edges and highlights the full critical path.
Interactive Knowledge Graph
Force-directed Canvas 2D graph with physics simulation, zoom/pan, draggable nodes, directed arrows, blocker counts, and critical-path rings. Tag cluster visualization groups nodes by shared tags with adjustable depth controls. Switch between graph presets (dependency, tag, type, status) with keyboard shortcut G. Click any node to highlight its neighbors; double-click to open the item. Color-coded by type, status, or tags. Uses pm-graph export with Neo4j when installed, falls back to live pm data.
Task Lifecycle
The full pm task lifecycle is supported in the UI: claim, release, start, and pause tasks. Status transitions follow the same rules as the CLI.
Comments, Notes & Learnings
Add and browse threaded comments, notes, and learnings on any item. All entries are timestamped and visible inline — a persistent knowledge base built into every project.
Linked Tests
Attach test commands to any item directly from the browser. View existing linked tests and add new ones — keeping acceptance criteria and test coverage in one place.
Deadlines, Sprints & Releases
Set deadlines (absolute or relative: +1d, +2w), sprint identifiers, release tags, assignees, and time estimates on every item. Filter your board by any of these fields.
Activity & Calendar
Track all changes in the activity feed. View scheduled items on a calendar, spot overdue tasks, and navigate history by date.
Search & Filters
Keyword, semantic, and hybrid search across items. New pm-web projects configure local Ollama qwen3-embedding:0.6b for semantic search by default, subject to the Ollama service and model being available.
GitHub Sync
Connect GitHub repositories, view linked repository context, and import GitHub issues into pm projects without leaving the app.
Import & Export
Download project data as JSON, CSV, or YAML for backup or handoff, then upload/import JSON item snapshots when moving workspaces or restoring state.
Real-Time Project Events
Server-sent project events keep collaborators current as project data changes, with UI refreshes designed for multi-user editing flows.
Offline PWA & Mobile
pm-web is a Progressive Web App — install it on desktop or mobile from your browser. A service worker caches the app shell so the UI loads and navigates offline, with changes syncing when connectivity returns.
Admin Interface
Site administrators get a dedicated admin panel to manage users, inspect projects, revoke access, and monitor system health — separate from per-project owner controls.
Project Health
A dedicated Health view shows a 0–100 health score with color coding and a full list of issues: stale items, missing context, blocked work, and more.
Bulk Operations
Bulk-update fields across filtered sets of items — status, assignee, priority, sprint. A dedicated Bulk Close modal lets you close or cancel entire batches with a required reason, with a dry-run preview before apply.
Templates & Item Cloning
Create from pre-built templates, or use any existing item as a template — fields are pre-filled and ready to customize, making repetitive work fast without leaving the UI.
Stats & Aggregate
Project stats show open vs. closed item counts, velocity trends, and priority distributions. Aggregate views give governance-ready breakdowns by type and status.
Keyboard Shortcuts
Navigate without lifting your hands: N to create an item, / to search, Ctrl+K for the global search modal, Esc to close any modal. In the graph view: Space to pause/resume physics, F to fit all nodes, R to reset layout, I to toggle item info, G to cycle graph presets.
Context & Aggregate
Generate pm context and aggregate views directly in the browser. Perfect for preparing standup notes or feeding context to an AI agent.
Agentic Plans
Create, review, and materialize Plan items directly in the browser. Each plan holds ordered steps with per-step status (pending, in-progress, blocked, completed). Approve a plan before an agent executes it, then materialize steps into real pm items with a single click. Full step lifecycle: add, complete, block, remove, and delete plans.
Changelog & Release Notes
Browse the project CHANGELOG directly in the browser. pm-web surfaces pm changelog output as formatted release notes so your team can review what changed between versions without leaving the app.
Interactive force-directed graph — pm-graph + Neo4j
pm-web renders a Canvas 2D force-directed graph with physics simulation (repulsion, spring forces, centering) running at 60fps. Zoom via scroll or pinch, pan by dragging the background, drag individual nodes to re-arrange, and click to highlight a node's direct neighbors. Dependency Graph mode filters to BLOCKED_BY, DEPENDS_ON, and BLOCKS edges, then highlights the longest blocker chain as the critical path. pm-web first delegates graph export to pm-graph/Neo4j; if unavailable it builds the graph from live pm items, blocked_by, deps, tags, status, type, assignee, sprint, and release metadata.
| Surface | Generated Fact |
|---|---|
| Commands | pm-graph ping, pm-graph export, pm-graph cypher, pm-graph sync, pm-graph status, pm-graph query, pm-graph neighbors |
| Sources | parent, deps, dependencies, type, status, assignee, sprint, release, tags |
| Neo4j | Sync uses NEO4J_URI, NEO4J_USER or NEO4J_USERNAME, NEO4J_PASSWORD, and optional NEO4J_DATABASE. |
Generated from the current CLI contract
This command list is rendered from the same generated data the rest of the site uses: pm contracts --json, pm help --json, and local guide output from pm CLI 2026.6.17, generated 2026-06-18T12:19:05.634Z.
Fine-grained sharing & groups
Share projects with individual users or entire groups. Two permission levels give you control over who can read and who can write.
View permission
- ✓ Browse all items and their details
- ✓ Read comments, notes, and learnings
- ✓ Run search, stats, health, and context
- ✓ View activity feed and calendar
- — Cannot create or modify items
- — Cannot add comments or notes
Edit permission
- ✓ Everything in View permission
- ✓ Create, update, close, and delete items
- ✓ Claim, release, start, and pause tasks
- ✓ Add comments, notes, and learnings
- ✓ Manage dependencies and relationships
- — Cannot manage project sharing settings
Groups let you share a project with an entire team in one action. Add or remove members from the group and all shared projects update instantly. Only the project owner can change sharing settings.
How pm-web is built
A clean, purpose-built stack with no heavyweight frameworks — just solid primitives that let the pm CLI stay in the driver's seat.
| Layer | Technology |
|---|---|
| Backend | Express.js + TypeScript — lightweight API server handling auth, project management, and proxying CLI commands to containers. |
| Database | PostgreSQL — stores user accounts, projects, sharing relationships, and group memberships. The pm CLI itself reads/writes files, not the DB. |
| PM runtime | The real @unbrained/pm-cli runs against isolated project directories. UI actions translate to pm CLI invocations and preserve the CLI audit trail. |
| Frontend | Vanilla TypeScript compiled to browser JavaScript — no React or Vue runtime. Fast, dependency-light, PWA-ready UI that stays close to the CLI model. |
| Search | Local Ollama embeddings with qwen3-embedding:0.6b configured for semantic pm-web search, plus pm CLI keyword and hybrid search modes. |
| Graph | pm-web exposes a relationship graph from live pm data and can delegate export/sync to the pm-graph extension. Neo4j sync uses NEO4J_URI, NEO4J_USER, and NEO4J_PASSWORD. |
| Auth | Session-based authentication with bcrypt password hashing. Permissions are checked server-side on every request. |
| Deployment | Docker + Docker Compose. Each pm project directory is a volume mount; the pm CLI container is spawned and reused per project. |
Try pm-web now
No installation needed. Register at pm-web.unbrained.dev, create your first project, and start managing work from your browser in seconds.