Suvra

Dashboard Overview

The Suvra dashboard is a server-rendered enterprise UI shipped with the Control Plane. It exposes the same enforcement, approval, audit, and administration surfaces that the HTTP API provides, gated by the same RBAC permissions.

Access

  • Open https://<subdomain>.<clientdomain> (default suvra.<yourdomain>)
  • First visit: /dashboard/bootstrap-admin creates the first tenant admin
  • Subsequent visits: /dashboard/login authenticates tenant users with email + password
  • Admin / bootstrap login still accepts the shared SUVRA_AUTH_TOKEN for setup flows

CSRF is enforced on every POST /dashboard/* endpoint (including logout). A mode banner is shown when SUVRA_MODE != strict.

Overview page (/dashboard)

The home page shows four KPI cards plus a recent-activity feed. Requires audit.read.

KPI cards

CardSourceLink
Total EventsAudit event count for the active tenant
Pending ApprovalsOpen approval requests/dashboard/approvals?status=pending
Allowsallow decision count
Deniesdeny decision count

Recent Activity — last ~10 events with columns: Time, Actor, Action, Target, Decision badge, Status badge. Click Detail to open the same decision-trace drawer used in Audit Explorer.

Onboarding banner — shown until the 5-step checklist is complete, then hidden automatically.

Navigation

SectionPathWhat it shows
Home/dashboardKPI cards + recent activity
Onboarding/dashboard/onboardingFirst-run checklist derived from real tenant state
Policy/dashboard/policySuvraPolicy global + agent policies, detail & edit
Policy Detail/dashboard/policy/detail?policy_id=...Per-policy rule cards, add/remove rules, assigned agents
Effective View/dashboard/policy/effective?agent_id=...Merged global + agent rules per agent
Rules Library/dashboard/rules17 categories, 64 reusable rules, add-to-policy
Simulator/dashboard/simulateDry-run an action, see decision + policy stack + matched rule
Approvals/dashboard/approvalsPending / approved / denied / all tabs with approve+execute
Audit/dashboard/auditFull audit log with filters, rollback, CSV / JSON export
Agents/dashboard/agentsAgent registry: edit metadata, bind policy/node, push refresh
Nodes/dashboard/nodesRegistered nodes, derived health, push policy (one or all)
Users/dashboard/usersTenant users, invites, role assignment, suspend/disable
License/dashboard/billingPlan, usage, license import / plan request
Account/dashboard/accountSessions and logout-all

The active user, tenant, and resolved roles are shown in the dashboard header. Tabs and mutating controls are hidden when the signed-in principal lacks the required permission, and every route also enforces server-side authorization returning HTTP 403 on deny.

Onboarding checklist

/dashboard/onboarding is a 5-step first-run checklist derived from real tenant state — already-configured orgs are not pushed through onboarding again. After completion the checklist remains available but the overview banner disappears.

#StepDone when
1Create first admin userAn active admin role assignment exists for the tenant
2Connect first agentAt least one agent is registered via integration or API
3Review SuvraPolicyA global policy is initialized
4Run simulator exampleA simulate event exists in the audit log
5See audit logAudit trail is populated after the simulation

A "hosted control plane" fallback is available from the onboarding page for tenants that do not want to run their own node yet.

Explainability polish

Audit rows and approval details render buyer-friendly "why" summaries derived from the same structured decision trace the simulator and export endpoints produce. Pagination and export links omit inactive boolean filters so follow-up navigation stays stable.

License import

/dashboard/billing/import-license expects a signed license envelope by default (base64 Ed25519 signature over the canonical JSON license payload). SUVRA_LICENSE_VERIFY=0 disables verification for dev/testing. Use tools/license_keygen.py to generate Ed25519 key pairs and signed licenses.

Related