Dashboard

The Hoziron web dashboard (internally the "console") is a real, actively developed browser-based operations UI — it is not a future/planned feature. It's built with React 19 + TypeScript + Vite, using Mantine as its component/theme system, and ships embedded inside the hoziron-server binary (no separate deploy step).

Its information architecture is specified in ADR-062 (19 tier-1/expand-group screens, verified against the live route table) — the pages below follow that same structure.

Enabling it

The dashboard is a surface, same as api, registry, and mcp — disabled by default. Enable it via the --surfaces flag or config.toml:

hoziron-server --surfaces api,dashboard
[surfaces.dashboard]
enabled = true
mount = "api"   # shares the API surface's listener (default when enabled)
base_path = "/dashboard"

By default the dashboard is mounted on the API surface's listener rather than owning its own address — mount = "api" shares whatever api binds to (address, TLS, IP allowlist, request limits). Setting listen directly on the dashboard surface instead would make it a main route in its own right; it can't declare the same address as another main route (that's a hard config-validation error — see TLS and networking), so give it its own distinct address if you want it independently addressable. With the default mount = "api", once running, open http://<host>:4200/dashboard.

Screens

ScreenCoversReference
Dashboard OverviewOrchestration, Gateway, Business Activity, Feed, Compliance, and Integrations panelsoverview below
IncidentsStructural-violation feedincidents.md
AgentsList + detail (config, skills, tools, memory, schedules, history), Live Consoleagents.md
WorkflowsList + detail, Workflow Studio (node-graph authoring), Run Detailworkflows.md
CatalogRegistry, Competencies, Skills, Integrations, Studio, shared Package Detailcatalog.md
ObservabilityMetrics & Budget, Gateway & Providers (+ read-only effective config)observability.md
Observability › Audit TrailSearchable, filterable, exportable audit logaudit-trail.md
Observability › MemoryGlobal, cross-agent, PII-redacted memory browsermemory.md
Security OverviewRead-only security statussecurity-overview.md
SettingsChannels, Cron Schedulersettings.md
AuthenticationThe console's own OIDC/local login flowauthentication.md

There is no Devices, Webhooks, Approvals, or standalone Platform Config screen in the console. Webhook-driven invocation is surfaced via Settings › Channels, backed by the generic HTTP webhook channel adapter. There is no human-in-the-loop approval queue anywhere in this platform — see reference/api/approvals.md. Platform configuration is read-only by design (config.toml + restart, no console write path); the effective configuration is shown as a panel on Observability's Gateway & Providers screen.

Dashboard Overview

The / route renders six panels in one screen: Orchestration (agent/workflow rollup), Gateway (routing pool state), Business Activity, Feed, Compliance, and Integrations. Each panel tile links out to the corresponding deeper screen above — the overview is a summary/navigation surface, not where you take action.

Authentication

The dashboard surface honors the same [auth] configuration as the API surface — see authentication.md for the actual login-gate UX (OIDC redirect/callback, dev-mode bypass, token expiry) rather than just the config.

Current status

The console is under active development, and page depth varies — see each page's own reference for what it currently shows. security-overview.md in particular is a read-only status dump with no API-key or RBAC-matrix UI.

Everything the dashboard does is also available through:


Related: