{% if runs %} {% for group in runs|groupby('date_sort') %}
[ {{ group.list[0].date_label|upper }} ]
{% for run in group.list %} {% if run.dna | length > 1 %} {% endif %} {% endfor %}
Run ID Function Started Duration Spans Cost Status
{{ run.id[:8] }}… {{ run.name }} {% if run.agent_version %} {{ run.agent_version }} {% endif %} {{ run.started_at.strftime('%H:%M:%S') }} {{ run.duration_ms }}ms {{ run.span_count }} {% if run.status == 'running' %} {% elif run.cost_usd is not none and run.cost_usd > 0 %} {{ run.cost_usd | format_cost }} {% else %} {% endif %} {% if run.status == 'ok' %} ok {% elif run.status == 'error' %} error {% else %} running
{% endif %}
{% for block in run.dna %} {% if block.kind == 'overflow' %} +{{ block.count }} {% else %} {% endif %} {% endfor %}
{% endfor %} {% elif current_version %}
[ NO MATCHES ]

No runs tagged {{ current_version }}.

← show all runs

{% else %}
[ GET STARTED ]

No traces yet. Add @trace to any function and run it — your first trace will appear here automatically.

from glasspipe import trace

@trace
def my_agent(question):
    return "your answer here"

my_agent("hello")

Or seed sample data: glasspipe demo — this page refreshes itself.

{% endif %}