Dashboard Guide

The admin dashboard is organised around five top-level tabs.

Home

Renders a grid tile per service that exposes a web UI (admin.sock). Each tile reflects the latest probe result — green for healthy, grey for unhealthy — and links straight to the service’s own dashboard through the reverse proxy.

A banner at the top reflects the IP whitelist state: red when no IPs are whitelisted (the router accepts any source), green when enforcement is active.

Router

The full service catalogue. The left sidebar lists every discovered service with its current health dot. Click a service to open its detail pane, which has tabs for:

  • OpenRPC — browse and try all JSON-RPC methods interactively.
  • Preview — embed the service’s own UI directly in an iframe.
  • Diagnostics — raw probe metadata, socket path, version.
  • MCP — the Model Context Protocol gateway for AI tools.
  • Sockets — all sockets registered by this service.
  • Logs — recent routing error log entries for this service.

The Agent button (top-right) opens a multi-service chat where you can ask questions across all services. The agent discovers methods, generates and executes code, and returns a plain-language summary.

Terminal

An interactive nu shell running directly in the browser via xterm.js.

Sessions are not run by the router itself. The router submits a short-lived job to hero_proc with tty: true and is_process: true, tracks the resulting job, and proxies the WebSocket between xterm.js and hero_proc’s PTY endpoint. Every session runs as the OS user that owns the hero_proc process.

Admin

Two cards:

IP whitelist — add or remove the IPs allowed to reach the admin UI over TCP. The list is persisted in the hero_proc secret store under ADMIN_SECRETS so it survives restarts and is shared with other Hero admin UIs.

SSH authorized_keys — add, list, and remove SSH public keys for the OS user running the router. Keys are validated and written atomically to ~/.ssh/authorized_keys.

Docs

In-app documentation compiled into the binary at build time. Updating the docs requires rebuilding the binary.

Add OpenRPC Spec

Add any OpenRPC spec by local file path or HTTP(S) URL. It will be fetched, validated, and added to the sidebar.

Socket paths, local files, or HTTP(S) URLs.
Overrides the title from the spec.