Admin Dashboard
Every Sovrium app auto-mounts a native admin dashboard at /_admin — an operator console for viewing and operating on the running app's data. It is a read-only operational data console: you inspect records, automation runs, form submissions, accounts, files, and analytics, but you never edit configuration here. Configuration is code-only — you change an app by editing its app.ts / app.yaml and re-deploying.
Access model
- Admin-only. The console and its
/api/admin/*routes require an admin session (caller.role === 'admin'). There is no editor/viewer tier. - Anonymous → 404. Unauthenticated or non-admin requests get a
404envelope, never a401/403— the surface's existence is unobservable (anti-enumeration; see Security Hardening). - No config editing. There is no schema/JSON/YAML editor, no draft → publish, no version ledger — those were removed when Sovrium went config-code-only. The dashboard reflects state; it never mutates configuration.
- English-only. The console renders its own chrome in English — sign-in, sidebar, headings, table columns, empty states, confirmations, toasts. It pins that language rather than negotiating it, so an operator on a French-locale browser still gets a consistent console instead of a half-translated one. This is the console's own interface only: your app is unaffected and still renders in whatever language its
languagesconfig declares.
Signing in
The sign-in page is at /_admin/login. Everything else under /_admin answers 404
until you hold an admin session — including /_admin itself, which returns 404 rather
than redirecting you to the sign-in page, because the console does not advertise its own
existence. So navigate to /_admin/login directly; there is no link to follow.
Once you are signed in, /_admin/login redirects to the console root.

Overview
The console root (/_admin) is a Dashboard overview: at-a-glance KPI tiles and a short activity trend across the app's domains — records written, automation runs, form submissions, users — over a shared period preset (24h / 7d / 30d).

Application surfaces
Day-to-day operational data, grouped under Application in the sidebar:
| Surface | Route | What you see |
|---|---|---|
| Records | /_admin/tables |
Every table's records — sort, filter, open a row in a detail drawer. |
| Submissions | /_admin/forms |
Form submissions inbox, per form, with the captured payload. |
| Files | /_admin/buckets |
Uploaded files per bucket, with size and MIME. |



System surfaces
Runtime operations and accounts, grouped under System:
| Surface | Route | What you see |
|---|---|---|
| Runs | /_admin/automations |
Automation-run history — status, duration, per-step trace. |
| Conversations | /_admin/agents |
AI agent conversations and their messages. |
| Users | /_admin/users |
The account directory and role distribution, with an Invite affordance and a per-user role change. |
| Invitations | /_admin/users/invitations |
Outstanding invitations — issue one, resend it, or revoke it. See Invitations. |
| Connections | /_admin/connections |
Outbound credentials this app presents to third-party services — the app.connections[] directory (OAuth2, API key, basic, bearer). See Connections. |
| Analytics | /_admin/pages |
Privacy-friendly page analytics. |


Developers
- API (
/_admin/api) — the Scalar-rendered OpenAPI reference for the app's REST surface. - MCP (
/_admin/mcp) — how to connect an AI client over the Model Context Protocol. - Design system (
/_admin/design-system) — the app's tokens, voice and component catalog drawn at their rendered values. See Design System Console.
Account self-service and search
- API keys (
/_admin/api-keys) — the signed-in operator's own long-lived credentials: mint, copy once, revoke. Available whenauth.apiKeysis on. See API Keys. /gdpr— the signed-in user's own data export and account erasure (GDPR self-service).- ⌘K search — a global, indexed command palette that jumps to any record or surface from anywhere in the console.

The read API
The console is backed by the /api/admin/* read API — the same endpoints you can call directly for incident reports, on-call handoffs, or SOC2 / GDPR review. Every endpoint is admin-gated, emits a canonical audit-log event, and returns 404 on unauthorized access.
| Shape | Endpoint pattern | Body |
|---|---|---|
| Overview | GET /api/admin/{domain}/overview |
Period-aware totals, a bucketed time series, and derived health metrics. |
| List | GET /api/admin/{domain} |
Cursor-paginated items, each with an operator-grade _admin metadata block. |
Domains include config, automations, users, tables, buckets, and forms. Overview endpoints share one period preset (24h / 7d / 30d); list endpoints accept cursor pagination, free-text search, and ?include_deleted=true.
# Version reflection — the smallest read endpoint
curl -H 'Cookie: <admin session>' http://localhost:3000/api/admin/config/version
# Period-scoped overview
curl -H 'Cookie: <admin session>' 'http://localhost:3000/api/admin/tables/overview?period=7d'Design-system export
Two further read endpoints project the app's design system — its tokens plus the principles, voice and usage rules declared under design. Both are admin-gated and return 404 to anyone else, and neither accepts a write.
| Endpoint | Format |
|---|---|
GET /api/admin/design-system.json |
A W3C Design Tokens (DTCG) 2025.10 document. |
GET /api/admin/design-system.md |
A markdown brief written to be pasted into an AI agent's context. |
curl -H 'Cookie: <admin session>' http://localhost:3000/api/admin/design-system.mdThey read design and theme only — never an environment-variable value, never record data — so the output is safe to paste into a shared context window. The same content is available offline from sovrium design-system.
The Design System Console renders the same projection as a page, and can publish it behind a revocable share link — an unlisted GET /s/design-system/{token} that anyone can read with no login, and that 404s the moment you revoke it.
Related Pages
- User Management — the mutating admin operations the dashboard reflects.
- Activity Monitoring — the audit-log stream every admin call writes to.
- Analytics — the traffic-analytics read surface.
- Security Hardening — RBAC, 404-not-403, rate limiting.
- Connect Claude over MCP — the AI-client integration linked from Developers.
- Design System Console — the design-system page and its revocable share link.
Last updated September 1, 2026
This documentation was written with AI, so errors or outdated content are possible. Sovrium is in beta. Contributions and corrections are welcome.