Admin
Superadmin platform controls.
Cross-tenant platform controls. The entire Admin section is gated to
role = superadmin and is not visible in the sidebar to regular tenant
users. The sidebar label is rendered in red.
Platform
Route: /admin
Role gating: superadmin.
Health overview across the platform:
- Tenant count.
- User count.
- Agent count.
- Storage usage (PostgreSQL + SeaweedFS).
- System uptime.
Links into the Tenants and All Users sub-pages.
Tenants
Route: /admin/tenants
Role gating: superadmin.
Table of every tenant on the platform.
Columns
- Name.
- Subscription tier.
- User count.
- Created date.
Actions
- New tenant. Modal collects name, slug, tier, optional owner
email. A
webhook_secretis auto-generated for the new tenant. - Edit. Tier and limits (e.g., max agents, max storage).
- Delete. Cascades across the tenant's incidents, servers, policies, agents, and audit log.
- Impersonate. Server-side cookie swap; the original superadmin
access cookie is preserved in
original_access_token(httpOnly) so the operation is reversible.
Impersonation banner
While impersonating, a banner is rendered at the top of every page
showing the impersonated tenant name, with an Exit Impersonation
button. The exit action calls /admin/stop-impersonating, which
restores the original superadmin cookie and clears the banner.
JavaScript cannot read either token; the swap is entirely server-side.
All Users
Route: /admin/users
Role gating: superadmin.
Cross-tenant user list, filterable by tenant via dropdown.
Columns
- Email.
- Tenant.
- Role (
user/admin/superadmin). - Status (
active/inactive). - Last login.
Actions
- Force password reset.
- Deactivate.
- Delete.
- Edit role.
Related routes
- settings — tenant-scoped user management lives there for non-superadmins