{# Public community analytics dashboard — agentguardian.ai/analytics. Renders the day-1 minimum-viable shape from the analytics PRD §3.1: 4 hero numbers, the AIVSS distribution histogram (the differentiator), 3 supporting cells (per-ASI breakdown, adapter mix, Python×OS matrix), the real-time scan ticker. Self-contained chrome — reuses the colors_and_type.css design tokens shipped for the coverage page so the visual language is consistent. #} {{ page_title|default("Community Analytics") }} · AgentGuardian
AgentGuardian · Community Analytics
{{ "{:,}".format(hero.total_scans) }} Total scans {{ window_label|lower }}
{% if hero.median_aivss is not none %} {{ hero.median_aivss }} Median AIVSS community-wide (0–100) {% else %} Median AIVSS below k≥50 threshold {% endif %}
{% if hero.crash_free_rate_pct is not none %} {{ "%.2f"|format(hero.crash_free_rate_pct) }}% Crash-free scans target ≥ 99.5% {% else %} Crash-free scans below k≥50 threshold {% endif %}
{{ "{:,}".format(hero.monthly_active_installs) }} Monthly active installs opted-in telemetry

AIVSS distribution

Where the community is scoring · 10-pt buckets · higher = more secure

{% if histogram %}
{% for b in histogram %} {% set band_class = "exc" if b.lower >= 90 else ("good" if b.lower >= 80 else ("attn" if b.lower >= 60 else "fail")) %} {% set pct_of_max = (b.percent / max_bucket_pct * 100) if max_bucket_pct > 0 else 0 %}
{{ "%.1f"|format(b.percent) }}%
{% endfor %}
{% for b in histogram %}{{ b.lower }}–{{ b.upper }}{% endfor %}
{% else %}
Not enough data yet to publish a distribution.
Bucket needs ≥ 50 distinct opted-in installs · check back as adoption grows.
{% endif %}

Per-ASI failure mix

OWASP Agentic Top 10 · approximate weighted attribution

{% if asi %} {% for r in asi %} {% endfor %}
ASICategoryFailure rate
{{ r.asi }} {{ r.label }} {{ "%.2f"|format(r.failure_rate_pct) }}%
{% else %}

Below k≥50 threshold — not yet published.

{% endif %}

Adapter mix

Which agent frameworks are being tested

{% if adapters %} {% for r in adapters %} {% endfor %}
AdapterScansShareMedian
{{ r.adapter }} {{ "{:,}".format(r.scans) }} {{ "%.1f"|format(r.percent) }}% {{ r.median_aivss if r.median_aivss is not none else "—" }}
{% else %}

Each adapter row needs ≥ 50 distinct installs before publication — not yet there.

{% endif %}

Python × OS

Compatibility matrix · k≥50 per cell

{% if py_os %} {% for c in py_os %} {% endfor %}
PythonOSScans
{{ c.python }} {{ c.os }} {{ "{:,}".format(c.scans) }}
{% else %}

No cell yet has ≥ 50 distinct installs.

{% endif %}

Recent scans

Last 5 completed · live (refresh to update)

{% if recent %}
{% for r in recent %}
{{ r.aivss }} {{ r.band }} {{ r.adapter }}
{% endfor %}
{% else %}

No scans recorded yet.

{% endif %}

Every cell on this page enforces k ≥ 50 distinct install_ids before publication. Aggregates that don't yet meet the threshold are suppressed (shown as “—”). Telemetry is opt-in only — see the telemetry transparency docs. Total events received in this store: {{ "{:,}".format(total_in_store) }}.

AgentGuardian · Community analytics · Source: aggregator.py · Schema: events.py · Built from opted-in user telemetry · k≥50 enforced