{% extends "base.html" %} {% from "macros.html" import pill %} {% block title %}Overview — Agent Wasp{% endblock %} {% block page_css %} {% endblock %} {% block content %}

System Overview

Agent Wasp · WASP v2.7 · {{ timezone }}

{{ now }}
Full Brain
Loading neural data…
Neural Brain
— nodes
{{ model_status.active_provider or "—" }}
{{ model_status.active_model or "No model" }}
{{ skills_enabled }} skills · {{ stats.total }} memories
— edges
{%- set ai = agent_identity -%} {%- set xp = ai.total_xp | default(0) -%} {%- set lv = ai.lv | default({"level":1,"xp_progress":0,"xp_needed":100,"xp_next":100,"pct":0}) -%} {%- set age = ai.age | default({"years":0,"months":0,"days":0,"mode":"d","total_days":0}) -%} {# SVG ring: r=80, cx=cy=96, circ=2*pi*80≈502.7 #} {%- set circ = 502.7 -%} {%- set dash = (lv.pct * circ / 100) | round(1) -%} {%- set gap = (circ - dash) | round(1) -%}
Agent Life Lv {{ lv.level }}
{% if age.mode == "ymd" %} {{ age.years }} yr {{ age.months }} mo {{ age.days }} d {% elif age.mode == "md" %} {{ age.months }} mo {{ age.days }} d {% else %} {{ age.total_days }} DAYS {% endif %} ALIVE
{{ "{:,}".format(xp) }} XP
next level at {{ "{:,}".format(lv.xp_next) }}
{{ lv.xp_progress }} / {{ lv.xp_needed }} {{ lv.pct }}%
Events (24h)
0
{% if perf_summary and perf_summary.hourly and (perf_summary.hourly|length) > 1 %} {%- set H = perf_summary.hourly -%} {%- set ns = namespace(mx=1) -%} {%- for p in H %}{% if p.total > ns.mx %}{% set ns.mx = p.total %}{% endif %}{% endfor -%} {%- set n = H|length -%}
ok err
{% endif %}
{% if perf_summary and perf_summary.errors > 0 %} {{ perf_summary.errors }} err {% else %} clean {% endif %}
Memory
0
View
Skills
0 /{{ skills_count }}
View
Avg Latency
0ms
{% if perf_summary and perf_summary.hourly and (perf_summary.hourly|length) > 1 %} {%- set H = perf_summary.hourly -%} {%- set ns = namespace(mx=1) -%} {%- for p in H %}{% if p.avg_lat > ns.mx %}{% set ns.mx = p.avg_lat %}{% endif %}{% endfor -%} {%- set n = H|length -%} {%- set last = H[-1] -%} {% endif %}
{% if econ_today %}
cost
${{ "%.4f"|format(econ_today.cost_usd | default(0)) }}
{% endif %}
System Pulse LIVE
{% for cell in heatmap %} {% set cnt = cell.count %} {% if cnt == 0 %}{% set h = 4 %}{% set op = "opacity-10" %} {% elif cnt <= 3 %}{% set h = 10 %}{% set op = "opacity-30" %} {% elif cnt <= 10 %}{% set h = 20 %}{% set op = "opacity-50" %} {% elif cnt <= 30 %}{% set h = 32 %}{% set op = "opacity-70" %} {% else %}{% set h = 40 %}{% set op = "opacity-100" %}{% endif %}
{% endfor %}
{% if streak > 0 %}
🔥 {{ streak }}-day streak
{% endif %}

Memory

{{ stats.total }} total
{% set mem_items = [ ("facts", stats.facts, "--p", "text-primary"), ("episodic", stats.episodic, "--s", "text-secondary"), ("semantic", stats.semantic, "--a", "text-accent"), ("policy", stats.policy, "--in", "text-info"), ("working", stats.working, "--wa", "text-warning"), ("meta", stats.meta, "--er", "text-error"), ] %} {% set total_safe = stats.total if stats.total > 0 else 1 %}
{% for name, count, cssvar, color in mem_items %} {% set pct = ((count / total_safe) * 100) | round(1) %}
{{ name }} {{ count }}
{% endfor %}

Scheduler

{% set active_jobs = scheduler_jobs | selectattr("paused", "equalto", false) | list %} {{ active_jobs | length }} active {% if scheduler_jobs | selectattr("paused") | list | length > 0 %} {{ scheduler_jobs | selectattr("paused") | list | length }} paused {% endif %}
{% for job in scheduler_jobs %}
{% if job.paused %} {% else %} {% endif %} {{ job.name }}
{{ job.run_count }}×
{% else %}
No jobs
{% endfor %}
{% if perf_summary %}

Performance (24h)

Full metrics →
{% set perf_items = [ ("Events", perf_summary.total_events | default(0), "text-primary", ""), ("Avg Latency", (perf_summary.avg_latency_ms | default(0)) ~ "ms", "text-warning", ""), ("Errors", perf_summary.errors | default(0), "text-error" if perf_summary.errors | default(0) > 0 else "text-success", ""), ("Cost Today", "$" ~ "%.4f"|format(econ_today.cost_usd | default(0)) if econ_today else "—", "text-warning", ""), ] %} {% for label, val, color, _ in perf_items %}
{{ val }}
{{ label }}
{% endfor %}
{% if perf_summary.top_events %}
{% for ev in perf_summary.top_events[:6] %} {{ ev.type }}: {{ ev.count }} {% endfor %}
{% endif %}
{% endif %}

Active Model

{{ model_status.active_model or "None" }} via {{ model_status.active_provider or "—" }}
{% if model_status.fallback_order %}
fallback {% for m in model_status.fallback_order %} {{ m }} {% if not loop.last %}{% endif %} {% endfor %}
{% endif %} Manage
{% if digest %}

Wasp Digest {% if digest.stats and digest.stats.week_label %}{{ digest.stats.week_label }}{% endif %}

{{ digest.generated_at[:16] | replace("T"," ") if digest.generated_at else "" }}
{{ digest.text }}
{% set s = digest.stats if digest.stats else {} %}
{% if s.get('total_messages_7d') %}{{ s['total_messages_7d'] }} conversations (7d){% endif %} {% if s.get('total_skill_calls_7d') %}{{ s['total_skill_calls_7d'] }} skill calls{% endif %} {% if s.get('dream_count') %}{{ s['dream_count'] }} dream cycles{% endif %} {% if s.get('procedures_count') %}{{ s['procedures_count'] }} procedures{% endif %} {% if s.get('epistemic_top_domain') %}{{ s['epistemic_top_domain'] }} {{ s.get('epistemic_top_confidence',0) }}%{% endif %} {% if s.get('best_skill') %}Best: {{ s['best_skill'] }} {{ s.get('best_skill_pct',0) }}%{% endif %}
{% else %}

Wasp Digest

Auto-generated weekly narrative. Click Generate to trigger now.

{% endif %}

Quick Actions

{% set actions = [ ("health_check", "Health Check", "btn-success", "M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z", "Run health check?"), ("reflection", "Reflect", "btn-info", "M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-3 7h3m-3 4h3m-6-4h.01M9 16h.01", "Run reflection?"), ("proactive", "Proactive", "btn-primary", "M8 10h.01M12 10h.01M16 10h.01M9 16H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-5l-5 5v-5z", "Send a proactive Telegram message?"), ("memory_cleanup","Cleanup", "btn-warning", "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16", "Run memory cleanup?"), ] %} {% for job, label, cls, icon_path, confirm_msg in actions %}
{% endfor %}

All actions are CSRF-gated and audited in the log.

{% endblock %} {% block extra_scripts %} {% endblock %}