Widget Dashboard
The widget dashboard is included on every plan.
What this is
The Overview → Dashboards tab is a configurable grid that each user can compose from 21 built-in widgets. You drag widgets in, resize them, rearrange them, and your layout persists. Super-admins can publish persona templates (CIO / CTO / CISO) that other users can apply in one click as a starting point.
The 21 widgets
Grouped into 7 categories:
| Category | Widgets |
|---|---|
| Risk | Tenant risk score, Top risky agents, Risk trend (90d) |
| Compliance | Framework posture grid, Upcoming audits, Compliance dips |
| Operations | Active agents, Session volume, HITL queue depth, Kill-switch status |
| Behavior | Anomaly count, Drift alerts, Behavioral baseline heatmap |
| Policy | Policy hit rate, Top fired policies, Pending change requests |
| Cost | Spend today, Spend by provider, Top 10 agents by cost |
| Security | Injection event count, DLP hits by severity, ARS success-rate trend |
Every widget has a period inherited from the topbar PeriodSwitch and a deep-link into the corresponding hub page for drill-down.
Persona templates
Three built-in templates ship with the product. Each is a curated layout that answers the questions that persona cares about most:
- CIO — operational status at a glance, cost trending, active-agent count, incident summary
- CTO — detection depth, ARS trend, policy hit rates, pending change requests
- CISO — compliance posture across all frameworks, high-severity DLP hits, injection events, HITL queue depth
Applying a template is non-destructive: it replaces your current layout but you can export / import your previous one.
Layout persistence
Layouts live in admin_users.dashboard_layout (JSONB) and are protected by RLS — your layout is yours. The React layer uses react-grid-layout with 12-column, 32-pixel-row snapping.
Backend: backend/behavry/admin/dashboard_layouts.py and dashboard_templates.py.
Editing
- View mode is the default; widgets are interactive but not draggable
- Edit mode unlocks drag/resize, adds a "+ Add Widget" button, and shows delete handles
- Toggle via the Edit layout button in the top-right of the Dashboards tab
When you're done editing, Save layout writes the new JSON; Cancel discards.
Export / import
- Export produces a JSON file with the layout and the widget selection. Safe to check into a personal dotfiles repo.
- Import accepts the same JSON file. Useful for sharing a layout with a colleague or moving between tenants.
Both actions are under Settings → Preferences → Dashboard layout.
Legacy fallback
If no layout is set, the dashboard renders a legacy fixed layout so nothing is ever blank on first login. Once a user saves their first custom layout, the legacy fallback is superseded.
API
| Method | Path | Purpose |
|---|---|---|
GET | /api/v1/dashboard/layout | Get current user's layout |
PUT | /api/v1/dashboard/layout | Save current user's layout |
GET | /api/v1/dashboard/templates | List persona templates |
POST | /api/v1/dashboard/layout/apply-template/{slug} | Apply a template to current user |
Related
- Dashboard Overview
- Cost Attribution — the Cost widgets read from here
- Compliance overview — the Compliance widgets read from here