Skip to content

PM Dashboard

The PM (Project Manager) dashboard gives you a bird’s-eye view of all your projects. It discovers projects from active sessions, captures state snapshots, detects changes, and optionally invokes a Claude-powered PM agent for intelligent briefings. Press P to toggle the PM view.

  1. Have one or more tmux sessions with Claude Code running in project directories
  2. Press P to open the PM view
  3. Browse projects with /, expand with Space, jump to sessions with Enter
  4. Press i to trigger an on-demand PM briefing (requires Claude CLI)
  5. Press P or Esc to return to the session list

The PM view divides the terminal into three zones:

Shows AI-generated project analysis when a PM agent has run:

  • Summary: Overall status across all projects
  • Attention items: High-priority issues to act on
  • Breadcrumbs: Context notes Claude leaves for future invocations

Displays “No PM briefing yet” until the first PM agent invocation. Shows “Refreshing…” with a loading indicator during updates.

Lists all active projects with:

ColumnContent
Status iconHighest-priority session status
Project nameDirectory basename (bold)
PBICurrent PBI ID and title
ProgressTask completion (e.g., 3/5 tasks)
SessionsNumber of active sessions
ActivityTime since last activity
  • Sorted by attention priority (permission > error > waiting > working > idle), then by recency
  • Expandable: Press Space to show task breakdown, branch, commits, and PR info
  • Actionable: Press Enter to jump to filtered session list for that project

Chronological event log showing project activity:

Event TypeColorExample
task_completedGreenTask 38-3 completed
task_startedGreenTask 38-1 started
commitCyan3 new commits on main
branch_createdCyanBranch feature/pbi-38 created
pr_createdCyanPR #42 opened
session_status_changeYellowStatus changed to permission
pbi_completedGreenAll tasks completed

Events are pruned after 24 hours.

KeyAction
PToggle PM view on/off
TabSwitch focus between projects and events
/Navigate projects (zone 2) or scroll events (zone 3)
EnterJump to filtered sessions for selected project
SpaceExpand/collapse project row
PgUp/PgDnPage scroll events
g/GJump to top/bottom of events
iTrigger on-demand PM briefing
rManual refresh (invalidate caches)
Esc/PClose PM view

Projects are discovered from active session working directories. Multiple sessions in the same directory are grouped as one project. The project name is derived from the directory basename.

On each PM polling cycle (every 5 minutes, or on-demand):

  1. Discover projects from session CWDs
  2. Capture snapshot per project: git state, task counts, session status
  3. Diff against previous snapshot to detect changes
  4. Emit events for detected changes
  5. Append events to ~/.config/navi/pm/events.jsonl

The PM uses a multi-strategy resolver to determine which PBI each project is working on:

PriorityStrategySource
1Provider hintcurrent_pbi_id in provider output
2Session metadatacurrent_pbi field in session JSON
3Branch patternRegex match on branch name (e.g., feature/pbi-54-...)
4Status heuristicPrefer InProgress > Agreed > InReview > Proposed > Done
5First groupLegacy fallback

The resolution source is recorded for observability (visible in expanded project rows).

feature/pbi-(\d+) # matches feature/pbi-54-session-scoped
pbi-(\d+) # matches pbi-54 or pbi-54/desc
(\d+)- # matches 54-session-scoped

The optional PM agent uses Claude CLI to synthesize events into human-readable briefings.

The agent runs claude -p (pipe mode) with:

  • Structured JSON output via --json-schema
  • Read/Edit/Write tools for memory management
  • Sonnet model for cost efficiency
  • 120-second timeout

The agent is invoked when specific events occur:

EventTriggers Agent
task_completedYes
commitYes
session_status_changeNo (accumulated)
branch_createdNo (accumulated)
pr_createdNo (accumulated)
On-demand (i key)Yes

Non-triggering events accumulate and are included in the next invocation’s inbox.

Claude maintains context across invocations via a file-based memory system at ~/.config/navi/pm/:

~/.config/navi/pm/
├── system-prompt.md # Claude's instructions
├── output-schema.json # JSON schema for output
├── last-output.json # Cached briefing for fallback
├── memory/
│ ├── short-term.md # Recent context (~2000 tokens)
│ ├── long-term.md # Historical patterns (~3000 tokens)
│ └── projects/
│ ├── project-a.md # Per-project memory (~1000 tokens)
│ └── project-b.md
└── events.jsonl # Event log

Claude reads and updates memory files during each invocation, allowing it to:

  • Avoid repeating observations
  • Track long-term patterns
  • Build per-project context
  • Notice escalations or improvements
ScenarioBehavior
Non-zero exitFall back to cached briefing, mark as stale
Parse failureFall back to cached briefing, mark as stale
Rate limitingExponential backoff (1s, 2s, 4s), up to 3 retries
First-run failureReturns error (no cache to fall back to)

Stale briefings are displayed with a visual indicator so users know the data may be outdated.

The PM view adapts to terminal size:

Terminal HeightBehavior
Normal (30+ rows)Briefing 30%, Projects 30%, Events 40%
Short (15-29 rows)Briefing 1 line, remaining split 40/60
Very short (<15 rows)Briefing hidden, Projects/Events 40/60
Terminal WidthBehavior
120+ columnsAll columns visible
100-119 columnsHide last activity column
80-99 columnsHide session count, truncate names
<80 columns”Terminal too narrow” message

The PM system stores its data at ~/.config/navi/pm/. No manual configuration is required — the directory structure is created automatically on first use.

The PM agent requires the Claude CLI to be installed and authenticated. Without it, the PM view still works for project snapshots and events — only the briefing zone shows a placeholder.