Skip to main content
Forge Docs

Dashboard Guide

Complete walkthrough of the forge-ui web dashboard — views, engagement modes, Infinity Terminal, WebSocket API, and multi-device setup.

Level: L3 Ship Lord | Requires: forge-orchestrator running, forge-ui v3.1.0+

The forge-ui dashboard is your project's single pane of glass. Health scores, agent activity, an embedded terminal, and a command center — all in one browser window. Sessions survive close, disconnect, and device switches. You start a long task on your laptop, close the tab, and pick it up on your phone. The session is still there.

Quick Start

# From the forge-ui directory
cd ~/projects/NXTG-Forge/v3
npm run dev

Open http://localhost:5050 in your browser. That's it.

The dev server starts two services:

  • Port 5050 — Vite UI (your browser talks here)
  • Port 5051 — API server + WebSocket + terminal bridge

Running on WSL2? See Multi-Device Setup to access from Windows or other devices.

What You're Looking At

When you first load the dashboard, you'll see:

  • Left sidebar — Project selector, navigation between views
  • Main panel — The active view (Dashboard, Vision, Terminal, Command, Architect)
  • Right sidebar — Governance HUD: real-time quality check status, health grade, active agents
  • Top bar — Engagement mode selector, connection status indicator

The connection indicator shows Connected (green dot) when the WebSocket link to the API server is live. If it shows Disconnected, see Troubleshooting.

The Five Views

Dashboard

Your project's heartbeat. Shows:

SectionWhat It Shows
Mission StatementYour project's north star from .forge/SPEC.md
Project ProgressPhase indicators: Planning → Build → Verify → Fix → Complete
System HealthPercentage score with status message
Agent ActivityWhich agents are running, their current task, blocked status
Quick ActionsOne-click access to common commands (Status, New Feature, Run Tests, Deploy)

Sub-tabs inside Dashboard:

  • Overview — Mission + Progress + Health + Activity (default)
  • Agents — Agent Collaboration Network: active, thinking, blocked counts
  • Activity — Live event feed with All/Important/Errors filters

Vision

Shows the strategic goals driving your project — read from .forge/SPEC.md if you have one. Useful for checking that what your agents are building aligns with what you intended.

  • North Star vision statement
  • Strategic goals with progress bars
  • Constraints and boundaries
  • Alignment checker sidebar

Terminal

The Infinity Terminal — a full browser-based terminal that persists across browser close, network drops, and device switches.

See Infinity Terminal for complete usage.

Command

Execute Forge commands from the browser. Commands are grouped by category:

GroupCommands
Forgefrg-status, frg-sync, frg-test, frg-deploy, frg-gap-analysis
Analyzeanalyze-types, analyze-lint, analyze-bundle, analyze-security, analyze-dependencies
Testtest-coverage
Gitgit-status, git-diff
Deployverify-production

Click a command button to execute it. Output appears in the Execution Queue panel on the right.

Command Palette — Press Ctrl+K to open the quick command search:

  • Type to filter commands
  • Keyboard shortcuts: s=Status, f=Feature, g=Gap Analysis, t=Tests, c=Checkpoint, d=Deploy
  • Press Esc to close

Architect

Architecture Decision Records (ADRs) for your project. Create and approve decisions that get broadcast to all connected agents.

  • Browse past architecture decisions
  • Create new proposals (title, description, rationale, impact)
  • Approve pending proposals
  • Impact Analysis sidebar shows related decisions

Engagement Modes

The mode selector (top-right of the header) filters what you see based on your role. Five modes:

ModeWho It's ForWhat You See
CEOExecutivesHealth grade, progress summary, critical blockers only. Autonomous — agents decide and execute.
VPStrategic leadsStrategic context + recent decisions + top 3 blockers
EngineerDevelopersFull agent activity + technical details (default)
BuilderImplementation focusImplementation tasks + all task details
FounderFull accessEverything visible, no filters

Your selected mode persists across browser sessions (stored in localStorage). Switch mode at any time — takes effect immediately.

Infinity Terminal

The terminal inside your dashboard. Start a forge command, close the browser, reopen it later — the session is still running.

Starting a Terminal Session

  1. Click the Terminal tab
  2. The terminal connects automatically and shows your shell prompt
  3. Run any command: forge status, forge dashboard, or any shell command

How Persistence Works

Browser (xterm.js) → WebSocket → PTY Bridge → Shell process

               Session state stored in memory
               Session ID: "default-session"
               Auto-reconnect on browser reopen

The terminal does not require Zellij or tmux — persistence is built into the PTY bridge. Zellij is an optional enhancement for local terminal use, not a dependency.

Multiple Devices

Open the same URL on another device (see Multi-Device Setup) — you're looking at the same session. Type in one browser, see it in the other.

Project / Runspace Switcher

The left sidebar shows all projects forge-ui knows about. Click a project to switch context — the Dashboard, Vision, and Command views all update to show that project's data.

Projects are discovered by querying the forge-orchestrator's MCP server. If a project isn't showing up, run forge init in that project directory first.

Governance HUD

The right sidebar is the Governance HUD — always visible. It shows real-time quality check status.

SectionWhat It Shows
Health GradeA through F score across 8 quality dimensions
Active AgentsCount of running agents
Blocking DecisionsDecisions awaiting approval that block task completion
Memory InsightsRecent learnings captured from agent runs
Worker Pool MetricsAgent pool utilization

The HUD updates automatically when the forge-orchestrator detects state changes.

Multi-Device Setup (WSL2)

Running forge-ui inside WSL2 and want to access from Windows or your phone?

Step 1: Check your WSL2 IP

ip addr show eth0 | grep 'inet ' | awk '{print $2}' | cut -d/ -f1
# Example: 192.168.1.206

Step 2: Add Windows Firewall rule (run in PowerShell as Administrator)

New-NetFirewallRule `
  -DisplayName "NXTG Forge Dashboard" `
  -Direction Inbound `
  -LocalPort 5050,5051 `
  -Protocol TCP `
  -Action Allow

Step 3: Access from other devices

http://192.168.1.206:5050

The UI uses Vite's proxy, so all /api and /ws requests are automatically forwarded to the API server. No configuration needed.

Do NOT set VITE_API_URL or VITE_WS_URL in .env — hardcoding localhost breaks multi-device access. Relative URLs through the Vite proxy work for all devices automatically.

WebSocket API

The forge-ui API server exposes a WebSocket endpoint for real-time updates. The Vite dev proxy forwards /ws to ws://localhost:5051/ws.

Connection

ws://localhost:5051/ws?token=<token>

Authentication: Every connection requires a token passed as a query parameter. Connections without a valid token are rejected immediately.

Message Format

All messages (both directions) use JSON:

{
  "type": "event.name",
  "payload": { },
  "timestamp": "2026-03-08T22:00:00.000Z"
}

Server → Client Events

EventWhenPayload
state.updateOn connect + any state changeFull project state object
governance.updateForge governance state changesGovernance state object
command.resultAfter command.execute request{ output, success, correlationId }
pongIn response to ping{ timestamp }
errorAuth failure or invalid message{ error: "message" }

Client → Server Messages

MessageActionResponse
pingHeartbeat keepaliveServer replies pong
state.updateUpdate project stateBroadcasts updated state to all clients
command.executeRun a forge commandServer replies command.result to requesting client only

REST API Quick Reference

EndpointMethodDescription
/api/healthGETServer health check — returns { status: "healthy" }
/api/governance/stateGETCurrent governance state
/api/governance/blockersGETBlocking decisions list
/api/forge/statusGETProject task board status
/api/stateGETFull dashboard state

Port Reference

PortServiceBound To
5050Vite Dev Server (UI)0.0.0.0 (all interfaces)
5051API Server + WebSocket + PTY Bridge0.0.0.0 (all interfaces)

Both ports bind to 0.0.0.0 so they're reachable from any device on the network — that's what makes multi-device access work without extra configuration.

Next Steps

Dashboard Guide | NXTG.AI