Outcall
SpecificationsS010 · Dashboard

S010 · Dashboard

Specification module 010-dashboard

S010: Dashboard

FieldValue
SpecS010
FeatureDashboard (outcall-ui)
Date2026-04-22
StatusImplemented
Author@marktopper

Overview

The dashboard is a web UI served by outcalld's host API that provides a real-time view of the system's state: bridge status, DNS and proxy health, networks, connected containers, active rules, and the rule request queue. It is built as a single-page application embedded in the outcall-ui crate via rust-embed and served as static assets from the host API.

The dashboard is host-operator-only — it is served on the host socket and never exposed to agent containers.

User Scenarios

S010-US-001 [P2] As a host operator, I want a web dashboard to see the system state at a glance without memorizing CLI commands.

S010-US-002 [P2] As a host operator, I want to approve or reject agent rule requests from the dashboard.

S010-US-003 [P3] As a host operator, I want to see real-time traffic logs and blocked requests.

Requirements Summary

IDTypePriorityTitleStatus
S010-FR-001FunctionalP2Static assets via rust-embedImplemented
S010-FR-002FunctionalP2Served on host socketImplemented
S010-FR-003FunctionalP2System overview pageImplemented
S010-FR-004FunctionalP2Network listing pageImplemented
S010-FR-005FunctionalP2Container listing pageImplemented
S010-FR-006FunctionalP2Active rules viewImplemented
S010-FR-007FunctionalP2Rule request queue + approve/rejectImplemented
S010-FR-008FunctionalP3Traffic log viewDraft
S010-FR-009FunctionalP2No agent-side exposureImplemented
S010-FR-010FunctionalP3Auto-refresh / WebSocket updatesImplemented
S010-FR-011FunctionalP1Loopback-only local browser bridgeImplemented
S010-FR-012FunctionalP1Fragment token and authenticated API fetchesImplemented
S010-FR-013FunctionalP1Strict HTTP and origin validationImplemented
S010-FR-014FunctionalP1Bounded bridge resourcesImplemented
S010-FR-015FunctionalP1Late fragment-token activationImplemented
S010-FR-016FunctionalP2Responsive bounded layoutImplemented
S010-AS-001AcceptanceP2Dashboard loads in browserImplemented
S010-AS-002AcceptanceP2Bridge status displayedImplemented
S010-AS-003AcceptanceP2Approve rule requestDraft
S010-AS-004AcceptanceP1Authenticated local bridgeImplemented
S010-AS-005AcceptanceP1Rebinding and smuggling rejectedImplemented
S010-AS-006AcceptanceP1Token arrives after tokenless loadImplemented
S010-EC-001Edge CaseP2Dashboard on non-Linux (macOS dev)Implemented
S010-EC-002Edge CaseP2No containers runningImplemented
S010-EC-003Edge CaseP1DNS rebinding or cross-origin requestImplemented
S010-EC-004Edge CaseP1Invalid bridge tokenImplemented
S010-EC-005Edge CaseP1Ambiguous or oversized requestImplemented
S010-EC-006Edge CaseP2Concurrent connection capImplemented
S010-EC-007Edge CaseP1Fragment added after initial loadImplemented
S010-SC-001SuccessP2Page loads and shows live bridge stateImplemented
S010-SC-002SuccessP2Rule request can be approved via UIDraft
S010-SC-003SuccessP2Desktop and mobile layouts remain boundedImplemented

Cross-Spec Dependencies

  • Depends on: S001 (bridge status), S002 (network listing), S003 (rule listing, rule request approval via S003-IF-008/S003-IF-009), S004 (agent status), S006 (proxy status), S007 (DNS status), S008 (container listing), S009 (dynamic rule listing)
  • Required by: None (UI-only, no other system depends on it)

Out of Scope

  • Multi-user or remote dashboard authentication beyond the per-process local bridge token
  • Historical data / analytics (real-time view only)
  • Configuration editing via the dashboard (read-only + approve/reject)

On this page