Skip to main content

Widget Dashboard

Feature row 52 — Sprints WD / UX1 / UX1.1

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:

CategoryWidgets
RiskTenant risk score, Top risky agents, Risk trend (90d)
ComplianceFramework posture grid, Upcoming audits, Compliance dips
OperationsActive agents, Session volume, HITL queue depth, Kill-switch status
BehaviorAnomaly count, Drift alerts, Behavioral baseline heatmap
PolicyPolicy hit rate, Top fired policies, Pending change requests
CostSpend today, Spend by provider, Top 10 agents by cost
SecurityInjection 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

MethodPathPurpose
GET/api/v1/dashboard/layoutGet current user's layout
PUT/api/v1/dashboard/layoutSave current user's layout
GET/api/v1/dashboard/templatesList persona templates
POST/api/v1/dashboard/layout/apply-template/{slug}Apply a template to current user