{% extends "base.html" %} {% set page_title = "Overview" %} {% block title %}Overview | Suvra{% endblock %} {% block content %} {# ── Hero ── #}
Action Layer Active

The action layer for AI agents.

Control what they do, remember everything they did, and get smarter every time they do it. Every shell command, database write, and MCP tool call is classified — catastrophic blocked, risky gated for approval, safe allowed — and recorded.

{% if onboarding and onboarding.show_banner %}

Guided Enterprise Onboarding

Complete the conservative first-run path for {{ onboarding.tenant_id }}.

Open checklist

{{ onboarding.completed_steps }} of {{ onboarding.total_steps }} steps complete.

{% endif %} {# ── KPI Row ── #}

Actions Today

{% if actions_today.total == 0 %}

No activity

{% else %}

{{ actions_today.total }}

{% endif %} {% if actions_today.trend %}
↑ {{ actions_today.trend }}
{% endif %}
{% if actions_today.total > 0 %}
{{ actions_today.allowed }} allowed {{ actions_today.denied }} denied {{ actions_today.approval_required }} approval
{% endif %}

Pending Approvals

{{ pending_approvals.count or 'None' }}

{% if pending_approvals.count > 0 %} needs action {% else %} clear {% endif %}

{{ pending_approvals.subtitle }}

Active Agents

{{ active_agents.count }}

{% if active_agents.anomaly_feature_enabled and active_agents.anomaly_count > 0 %} {{ active_agents.anomaly_count }} with anomalies {% else %} all healthy {% endif %}

{{ active_agents.count }} registered agents

{# ── Policy sync status line ── #}

Policy Sync: {% if nodes_summary.total == 0 %} no nodes registered {% else %} {{ nodes_summary.healthy }} / {{ nodes_summary.total }} nodes {{ 'in sync' if (nodes_summary.all_in_sync or nodes_summary.total == 0) else 'stale' }} — {{ nodes_summary.subtitle }} {% endif %}

{# ── Two-column: Recent Decisions + Needs Your Attention ── #}

Recent Decisions

View all →
{% if recent_decisions['items']|length == 0 %}

No actions recorded yet

{% else %} {% endif %}

Needs Your Attention

{% if pending_approvals['items']|length == 0 %}
✓ No pending approvals
{% else %} {% if pending_approvals.overflow_count > 0 %}

and {{ pending_approvals.overflow_count }} more →

{% endif %} {% endif %}
{# ── Trend over time ── Merged in from the retired Insights page. Only the parts nothing else showed were kept: the decision trend, the drift indicator, and which action types get blocked most. Insights' headline counters duplicated the hero above exactly, and its per-agent table is now covered — with more signal — by /dashboard/fleet. #} {% if trend_data %}

Trend

how enforcement is moving over time
{% if drift.level == 'red' %}⚠{% elif drift.level == 'green' %}✓{% else %}○{% endif %}
Quality Drift: {{ drift.label }} — denial rate {{ drift.recent_rate }} (last 3 days) vs {{ drift.prior_rate }} (prior 4 days) · {{ drift.delta }}

8-Day Decision Trend

Allowed
Denied
Needs Approval
{% for day in trend_data %}
{% if day.total > 0 %}
{% else %}
{% endif %}
{{ day.total }} {{ day.date[5:] }}
{% endfor %}
{% if top_action_patterns %}

Most-blocked actions

    {% for action, count in top_action_patterns %}
  • {{ action }} {{ count }}
  • {% endfor %}
{% endif %}
{% endif %} {# ── System health strip ── #}
{% if system_health.db_healthy %} Control Plane: Healthy · Suvra v{{ system_health.version }} {% else %} Control Plane: Degraded · Suvra v{{ system_health.version }} {% endif %}
Governance Kernel {{ infrastructure.governance }}
Evaluation Engine {{ infrastructure.eval_engine }}
{% endblock %}