{% extends "_base.html" %} {% from "_partials.html" import avatar %} {% set active = 'usage' %} {% block title %}trovex — usage{% endblock %} {% block topbar_meta %} {{ total_queries }} queries · {{ unique_users }} users {% endblock %} {# ── Derive an aggregate volume series from the per-user sparklines ──── #} {# Route already passes 24-bucket sparklines per user; summing them is a #} {# view-side roll-up, not invented data. #} {% set ns = namespace(buckets=[], total=0, peak=0) %} {% if per_user %} {% set first_len = (per_user | map(attribute='sparkline') | select | map('length') | list) %} {% if first_len %} {% set width = first_len | max %} {% for i in range(width) %} {% set col = namespace(sum=0) %} {% for u in per_user %} {% if u.sparkline and i < (u.sparkline | length) %} {% set col.sum = col.sum + u.sparkline[i] %} {% endif %} {% endfor %} {% set _ = ns.buckets.append(col.sum) %} {% set ns.total = ns.total + col.sum %} {% if col.sum > ns.peak %}{% set ns.peak = col.sum %}{% endif %} {% endfor %} {% endif %} {% endif %} {% block content %}

MCP usage

who queries trovex, with what, when
{# ── Summary tiles ────────────────────────────────────── #}
queries
{{ "{:,}".format(total_queries) }}
last {{ days }}d
tokens served
{{ "{:,}".format(total_tokens) }}
via trovex() tool
active users
{{ unique_users }}
distinct handles
avg latency
{{ avg_elapsed }}ms
embed + search
{# ── Query volume over the window (SVG area + line) ───── #} {% if ns.total > 0 and ns.buckets | length > 1 %} {% set n = ns.buckets | length %} {% set vmax = [ns.peak, 1] | max %}
query volume
{{ "{:,}".format(ns.total) }} over {{ days }}d · peak {{ ns.peak }}/bucket
{# baseline #} {# area path #} {# stroke line #}
{% endif %} {# ── Filter bar ──────────────────────────────────────── #}
user
window
{% for d in [1, 7, 14, 30] %} {{ d }}d {% endfor %}
{# ── Per-user leaderboard ────────────────────────────── #} {% if per_user %} {% set top_q = (per_user | map(attribute='queries') | list | max) or 1 %}

Activity per user

{{ per_user | length }} ranked by volume
{% for u in per_user %}
{{ avatar(u.user, 32) }}
{{ u.user }}
{{ u.last_seen_label }}
filter →
{# share-of-volume bar — borrows the .dist visual language #}
{{ "{:,}".format(u.queries) }} queries {{ "{:,}".format(u.resp_tokens) }} tokens {{ u.avg_elapsed_ms | round | int }}ms avg
{% if u.sparkline %} {% endif %}
{% endfor %}
{% endif %} {# ── Activity feed grouped by time ───────────────────── #}

Activity feed

{{ total_queries }} {% if total_queries == 1 %}event{% else %}events{% endif %}
{% if total_queries == 0 %}
no queries{% if user %} for {{ user }}{% endif %} in last {{ days }}d
have any devs run the install yet? → /install
{% else %} {% for bucket_name, rows in buckets.items() %} {% if rows %}
{{ bucket_name }} {{ rows | length }}
    {% for r in rows %}
  1. {{ r.time_label }}
    {{ avatar(r.user, 22) }}
    {{ r.user }} {{ r.query }}
    {{ r.n_results }} results{% if r.summary %} +summary{% endif %} · {{ "{:,}".format(r.response_tokens_est) }} tokens · {{ r.elapsed_ms }}ms · {{ r.age_label }}
  2. {% endfor %}
{% endif %} {% endfor %} {% endif %}
{% endblock %} {% block head %} {% endblock %}