Dashboard

Live Execution Dashboard

Real-time visibility into plan execution, costs, traces, and configuration. 9 tabs, zero config, served at localhost:3100/dashboard.

Real-Time WebSocket Cost Trends + Anomaly Run Comparison Quorum Visualization Keyboard Navigation Export JSON/CSV Light/Dark Theme Skill Catalog Responsive Layout

Getting Started

The dashboard launches automatically when the MCP server starts. No separate install required.

Via MCP (auto-starts with VS Code)

// .vscode/mcp.json — auto-configured by setup
{
  "servers": {
    "plan-forge": {
      "command": "node",
      "args": ["pforge-mcp/server.mjs"]
    }
  }
}

Dashboard-only mode (no MCP stdio)

node pforge-mcp/server.mjs --dashboard-only

# Dashboard → http://localhost:3100/dashboard
# WebSocket → ws://localhost:3101

Progress

Live view of the currently executing plan. Each slice is rendered as a card showing its status (pending, executing, completed, failed), the AI model used, execution time, and token cost. The progress bar updates in real time via WebSocket events. Slices using API-based models like Grok display a purple API badge.

The Plan Browser panel lists all plan files in docs/plans/ with their status, slice count, and branch. Click Estimate to preview cost/token estimates or Run to launch execution directly. Expand Select slices to toggle individual slices on/off before running — unchecked slices are passed as --skip-slices.

Dashboard Progress tab with plan browser showing 6 plans, plus slice cards — 3 completed, 1 executing
📋

Runs

Historical log of every plan execution with powerful filtering, sorting, and analysis tools.

  • Filter Bar — filter by plan, status, model, mode, and date range. Filters combine with AND logic.
  • Sortable Columns — click any column header to cycle through ascending, descending, and default sort order.
  • Run Detail Drawer — click any row to slide open a right-panel drawer showing per-slice detail cards with status, worker, tokens, cost, gate errors, and expandable gate output.
  • Run Comparison — toggle Compare mode, select two runs, and view side-by-side cards with cost/duration/token deltas color-coded (green = lower, red = higher).
  • Export — export filtered runs as JSON or CSV via the Export dropdown menu.
  • Keyboard Navigation — press j/k to move between rows, Enter to open detail, Esc to close.
Dashboard Runs tab showing historical execution log
💰

Cost

Cumulative cost visualization across all runs. The donut chart breaks down spend by model, and the monthly bar chart shows cost over time. Data comes from cost-history.json.

The Cost Trend Line Chart plots per-run cost with a dashed average line. Points are color-coded: green (within 2× average), amber (2-3×), red (>3×). An Anomaly Detection Banner appears automatically when any of the latest 5 runs exceeds 3× the historical average — click to dismiss.

The Model Comparison table aggregates per-model performance: run count, pass rate (color-coded), average duration, cost per run, and total tokens. Export Cost downloads cost data as JSON.

Dashboard Cost tab showing cumulative cost chart across runs
🎯

Actions

One-click access to 11 forge operations. Run Smith (environment diagnostics), Sweep (TODO/FIXME detection with structured table view), Analyze (plan consistency scoring), Analyze (Quorum) (multi-model consensus analysis), Diagnose (multi-model bug investigation), Status (editable phase status with inline dropdowns), Validate (setup file checks), and Extensions (catalog browser). Results display inline below each card.

Create Branch creates a git branch from the plan's branch strategy. Auto-Commit generates a conventional commit from the current slice goal. Diff shows changed files color-coded against the scope contract — green for in-scope, yellow for out-of-scope, red for forbidden. The Sweep action now renders results as a filterable table with type badges (TODO, FIXME, HACK, STUB).

Dashboard Actions tab showing 11 action cards including git ops, sweep, and status editor
⚙️

Config

View and edit project configuration without touching files. Set the active preset, template version, enabled agents (Claude, Cursor, Codex, Grok), and default model routing. The API Providers section shows which external model providers are configured — set XAI_API_KEY to enable Grok models (grok-4, grok-3, grok-3-mini). The OpenBrain Memory section shows whether the OpenBrain MCP server is connected for persistent project memory. Changes save to .forge/config.json.

When OpenBrain is connected, the Memory Search panel lets you search project knowledge directly from the dashboard. Type a query and get matching memory entries rendered as cards with titles and excerpts.

Dashboard Config tab showing preset, agents, model routing, API providers, OpenBrain memory status, and memory search
🔍

Traces

OTLP-compatible execution trace viewer. Each plan run produces a trace with spans for every slice, gate check, and tool invocation. Select a run to see its full span tree with timing, status codes, and error details. Compatible with OpenTelemetry collectors for export to Jaeger, Zipkin, or Azure Monitor.

Quorum Visualization — when a run used quorum mode, a purple banner shows model legs, success rate, and dispatch duration. Slice spans show a 🔮 badge with leg counts. Click any quorum span to see a detail panel with complexity score, threshold, models dispatched, successful legs, dispatch duration, and reviewer cost.

Enhanced Span Attributes — clicking any span now renders a formatted attribute table (not raw JSON) with friendly labels, expandable log summaries, and structured event rendering with per-event attributes and severity coloring.

Dashboard Traces tab showing execution trace span tree
🛠️

Skills

Monitor multi-step skill executions in real time. Skills like /code-review, /database-migration, and /staging-deploy emit step-level events via WebSocket. Each step shows its status (pending, running, completed, failed) with a progress indicator.

The Skill Catalog grid shows all available skills (both built-in and custom). Custom skills from .github/skills/ are tagged with a blue custom badge; built-in skills show a gray built-in badge. The catalog loads from the /api/skills endpoint.

Dashboard Skills tab showing code-review skill with 4 steps in progress
🔄

Replay

Session replay for completed runs. Select any historical run and replay its execution timeline step by step. See exactly which slices ran, when gates passed or failed, and how costs accumulated. Useful for post-mortems, team reviews, and debugging failed executions.

Dashboard Replay tab showing session replay viewer
🧩

Extensions

Browse and manage community extensions directly from the dashboard. Each extension card shows the name, description, author, version, and what it provides (agents, instructions, prompts, MCP config). Cards include Install and Uninstall buttons — click to install or remove extensions without leaving the dashboard. Installed extensions show a green checkmark. Extensions are curated in the community catalog.

Dashboard Extensions tab with install/uninstall buttons on extension cards

How It Works

📡

WebSocket Hub

Port 3101 broadcasts real-time events — slice progress, cost updates, skill steps, trace spans. The dashboard auto-reconnects on disconnect.

🗂️

REST API

Port 3100 serves the dashboard UI and exposes JSON endpoints for run history, cost data, config, traces, skills, and action execution.

💾

Persistent Data

Run history, cost records, and traces persist in .forge/ JSON files. Data survives server restarts and is scoped per project.

Power UX

⌨️

Keyboard Navigation

Press 19 to switch tabs, j/k to navigate rows, Enter to open details, Esc to close panels. Press ? to show all shortcuts.

🌙

Light / Dark Theme

Toggle between dark and light themes via the header button. Your preference persists in localStorage. Chart colors adapt automatically.

📱

Responsive Layout

Dashboard adapts to tablet (1024px) and mobile (768px) breakpoints. Non-essential columns hide on smaller screens, and layouts switch from grid to stack.

📤

Export Data

Export run history as JSON or CSV from the Runs tab, or export cost data as JSON from the Cost tab. Filtered results export only matching runs.