Architecture overview · Platform engineers and ops leads
Vigil · SwiftVector Governance Observability TypeScript · React · Node.js Reference implementation

Governance Observability

Light Station is the operator-facing console for governed AI systems. It provides a persistent operating picture of agent proposals, policy verdicts, evidence chains, and human escalations — across any jurisdiction running on the AgentVector architecture.

Architectural Constraints from the Agency Paradox are enforced in each jurisdiction as composed Codex Laws; Light Station surfaces their verdicts.

CI/CD tells you what deployed. Vigil tells you what executed. Light Station tells you what the Principal needs to decide. Light Station does not govern. It observes governance and relays Steward commands. A console outage does not weaken enforcement.

The observability gap

Light Station is not generic observability. Traditional APM tells you about performance and failure. Light Station tells you about authority, policy, verdict, and escalation.

It surfaces what the agent proposed, what law evaluated it, whether it was allowed or denied, what evidence was recorded, and where human authority intervened. These are governance-specific signals that do not exist in conventional monitoring tools.

Without a persistent operating picture, governance fails silently. HOLD verdicts pile up unseen. Budget degradation goes unnoticed until the agent halts. Audit trails remain invisible until something goes wrong. The operator cannot exercise authority they cannot see.

The architectural response is a passive operator console: separate from the governing kernel, read-mostly by default, with a narrow command surface for the decisions only a Principal can make. Light Station is that console for the Vigil desktop-agent jurisdiction.

Where Light Station sits

Light Station is an application layer operating under a Vigil jurisdiction. It consumes Vigil's HTTP governance contract — it does not import the Swift kernel. The language boundary is the adapter seam: request/response shapes for state, queue, audit, budget, and the /events SSE stream.

Principal Human authority
Browser or mobile via Tailscale. Reviews escalations, commits knowledge, authorizes sprints. Two-tap approve/reject on Clearance from the field.
Light Station Operator console · TypeScript
React SPA + Express API. Observes governance state, fans out SSE to the browser, relays Steward commands. Does not evaluate proposals or issue verdicts.
↓ HTTP + SSE
Vigil Governance kernel · Swift
Constitutional enforcement. Three verdicts: ALLOW / DENY / ESCALATE. Deterministic. Fail-closed. Full evaluation trace per decision.
Desktop agent Acting system
OpenClaw, Claude Code, or any agent with tool access. Proposes actions before execution. Executes only on ALLOW verdict. Unaware of the console.
Service ownership matters. launchd owns Light Station — not the agent. The agent cannot disable the layer that monitors it. This is a structural requirement of human-in-command operations, not a deployment preference.

Architecture

Light Station is a locally-hosted Node.js service with a React front end. It maintains local application state in SQLite and proxies governance state from Vigil through a State Bridge that listens to the upstream SSE stream.

Components

ComponentRoleTechnology
React SPA13 lighthouse views — Lantern Room, Lookout, Clearance, Chartroom, and moreVite, Zustand, Tailwind
Express APIREST endpoints + SSE fan-out to browser clientsNode 20, port 7789
State BridgeVigil SSE listener, 500-event ring buffer, 10s state refresh, 30s disconnect detectionTypeScript
SQLiteSprints, tickets, knowledge graph, logbook, signal cardsbetter-sqlite3
Vigil adapterContract seam between TypeScript and Swift — mock + live clients behind one interfaceinterface.ts

SSE data pipeline

Governance events flow from Vigil to the operator in real time. The State Bridge is the critical integration point — it maintains a ring buffer, refreshes full state on a schedule, and marks the connection degraded when events stop arriving.

1 Agent proposes action → Vigil /evaluate → verdict: ALLOW, DENY, or ESCALATE
2 Vigil emits GovernanceEvent on /events SSE stream
3 State Bridge ingests event, updates ring buffer, optionally auto-ingests to Logbook
4 Express fans out to browser clients on /api/stream
5 Lookout and Clearance views update in real time via Zustand stores

Two pillars

Governance observability

Verdict stream, approval queue, audit ledger, budget posture, agent roster. Everything Vigil decides, visible to the Principal.

Knowledge substrate

Structured graph (Landmarks, Chart, Soundings), write-once Logbook, Memory Proposals, and Briefing API for agent session context.

Core surfaces

Light Station organizes operator workflows around a lighthouse metaphor. Each view maps to a distinct governance or knowledge function.

ViewLighthouse nameFunction
Operating pictureLantern RoomSession overview, live stats, governance feed
Verdict streamLookoutLive governance event stream with law references
Escalation queueClearanceHOLD verdicts awaiting Principal approve/reject
Evidence logLogbookWrite-once steward record; auto-ingests significant events
Audit trailLedgerHash-chained audit log proxied from Vigil
Composition mapChartroomKnowledge graph with governed Memory Proposals
Thermal / resource postureProvisionsToken budget console; Normal → Degraded → Gated → Halted
AI intakeBeaconSignal Cards — agent proposes triage, Principal commits
Deep researchSounding ReportResearch briefs promoted from Logbook or Beacon
Sprint boardVoyageKanban sprint management with token budget
Work itemsManifestTicket tracking with status workflow
Agent rosterCrewActive agents under observation
Policy configRegistryVigil configuration viewer
Lookout · Verdict stream

Live feed of agent proposals with ALLOW / DENY / ESCALATE outcomes and the law that evaluated each.

Clearance · Escalation queue

Pending human-authority decisions. Actions suspended until an authorized operator resolves them. Mobile-first for field approval.

Ledger · Evidence log

Hash-chained record of every governed decision. Replayable on demand. Same inputs — same verdict, provably.

Chartroom · Knowledge graph

Landmark, Chart, and Sounding layers. Agents propose memory; the Principal commits. Briefing API feeds context back to the agent.

Beacon · Signal intake

AI-assisted triage of inbound information. Suggests routes — create ticket, propose knowledge, log to watchlog — but never auto-acts.

Provisions · Resource posture

Token budget enforcement ladder. System-level compute and thermal state for Apple Silicon deployments running governed workloads.

View the interactive prototype → Uses legacy view names (Command, Queue, Observe) — being updated to match the lighthouse metaphor.

Operator flows

Three flows define how the Principal exercises authority through Light Station. Each demonstrates the propose-don't-decide pattern: the agent or system proposes; only the Principal commits.

Flow A — Agent action to Steward decision Clearance
1OpenClaw proposes shell command → Vigil evaluates under Law 8 (Authority)
2Verdict: ESCALATE (HOLD) — action suspended
3SSE event appears in Lookout and Clearance queue
4Principal approves or rejects in Clearance (reject requires reason)
5Light Station relays to Vigil /queue/:id/approve|reject
6Steward action recorded with STEWARD attribution in audit ledger
Flow B — Knowledge feedback loop Chartroom
1Agent session proposes kg_proposal with proposed edges
2Proposal appears in Chartroom Proposals tab
3Principal reviews per-edge accept/reject
4On approve → kg_node and edges created in knowledge graph
5Briefing API returns recently committed proposals to agent on next session
Flow C — Logbook auto-ingestion Logbook
1Significant governance event: DENY, HOLD, enforcement transition, or budget threshold (80/90/100%)
2State Bridge maybeIngestEvent() writes to Logbook
3Entry is write-once — no update endpoint exists
4Principal may promote entry to Sounding layer in Chartroom
Live demo. Five deterministic experiments exercise the full governance loop: web search (allow), workspace write (allow), shell exec (escalate), out-of-sandbox write (deny), budget stress (degraded/gated). Run with ./scripts/run-demo.sh against a live Vigil instance.

Fail-closed operator UX

Most dashboards degrade gracefully when upstream data is stale. Light Station refuses to. When Vigil is unreachable, the operator sees a disconnected state and Steward controls are disabled — not cached queue data from five minutes ago.

StateUI behaviorAPI behavior
ConnectedLive stream, Clearance queue actionable, enforcement level visible200 — proxied from Vigil
DegradedSSE stale (>30s); banner shown; state refresh from /governance/state200 with stale indicator
DisconnectedDisconnected banner; approve/reject controls disabled; no stale queue data502 { "error": "Vigil unreachable" }

Verdict mapping

Light Station surfaces Vigil's three verdicts with consistent operator semantics across all views.

VerdictVigil sourceOperator action
ALLOWallowObserve in Lookout. Agent executes.
DENYdeny / rejectReview in Lookout and Ledger. Agent does not execute.
HOLDescalateResolve in Clearance. Agent suspended until Principal acts.

This is a P0 invariant tested in CI: queue endpoints return 502 when Vigil is unreachable. The mock client enables full development and test coverage without a live Swift daemon.

Reference implementation

Apple Silicon home lab · Forge

Light Station's first production instance runs on a Mac Mini M4 Pro cluster via launchd. Claude Code is the agent under observation. Tailscale provides remote access for field approval on Clearance — no public internet exposure.

ServicePortOwner
Light Station API7789launchd (com.agentincommand.lightstation)
Vigil daemon18820launchd (Swift)
Vite dev server5173Development only

This lab environment is the live proof-of-concept for governance observability at the desktop scale — the same architecture that scales to enterprise and regulated workflows.

Roadmap

Light Station is designed to scale beyond the desktop reference implementation. The following table separates what ships today from what is planned.

Shipped · v0.2.0Roadmap
macOS launchd + Tailscale deploymentK3s cluster observability across runtimes
Single-operator SQLite substrateMulti-tenant enterprise console
OpenClaw + Claude Code lab agentMulti-agent governance dashboards
13 lighthouse views + Beacon/Signal intakePlugin architecture for custom surfaces
Apple Silicon thermal monitoring (Forge lab)Regulated industry workflow integrations

Cross-runtime observability — governing agents across K3s and macOS from a single operating picture — is the long-term thesis. The macOS path is the reference proof; cluster-scale deployment follows the same constitutional pattern.

Vigil · TSVector
Governing jurisdiction

Light Station observes Vigil. The kernel decides; the console shows. Constitutional policy, three laws, fail-closed enforcement.

Vigil architecture →
FlightLaw · SwiftVector
Aviation operator surface

Flightworks Sentinel provides the aviation equivalent — governing what AI proposes before it reaches the autopilot. Same pattern, different domain.

Flightworks architecture →