Web UI

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.

User auth Project sharing Group management Offline PWA Knowledge graph qwen3-embedding:0.6b 95 CLI commands pm-web.unbrained.dev
Live App

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.unbrained.dev
┌─────────────────────────────────────────────────────────────────┐
  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                                                             
└──────────────┴──────────────────────────────────────────────────┘
Features

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.

GH

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.

Graph Runtime

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.
CLI Coverage

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.

pm activity pm aggregate pm append pm claim pm close pm close-many pm close-task pm comments pm config pm context pm contracts pm copy pm create pm ctx pm delete pm deps pm docs pm event pm extension pm extension activate pm extension adopt pm extension adopt-all pm extension catalog pm extension deactivate pm extension doctor pm extension explore pm extension init pm extension install pm extension manage pm extension reload pm extension uninstall pm files pm focus pm gc pm get pm health pm history pm history-compact pm history-redact pm history-repair pm init pm install pm learnings pm list pm list-all pm list-blocked pm list-canceled pm list-closed pm list-draft pm list-in-progress pm list-open pm meet pm notes pm package pm package activate pm package adopt pm package adopt-all pm package catalog pm package deactivate pm package doctor pm package explore pm package init pm package install pm package manage pm package reload pm package uninstall pm packages pm packages activate pm packages adopt pm packages adopt-all pm packages catalog pm packages deactivate pm packages doctor pm packages explore pm packages init pm packages install pm packages manage pm packages reload pm packages uninstall pm pause-task pm plan pm release pm remind pm restore pm schema pm search pm start-task pm stats pm telemetry pm test pm test-all pm update pm update-many pm upgrade pm validate
Collaboration

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.

Tech Stack

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.