Skip to content

Agent run monitoring

What you’ll build: a control room for the agents you run — every run logged, the success rate trending, and failures surfaced immediately. This is the core PulseDeck use case: your Hermes / CrewAI / LangGraph / n8n agents reporting on themselves.

pulsedeck.app / dashboards / agents
SCREENSHOT

Finished agent dashboard: a runs-over-time chart, a success-rate metric, and a feed of failed runs.

Drop an image into public/shots/ and pass src.

  • PulseDeck running (Quickstart).
  • A registered source and its pd_… API key.
  • An agent or pipeline whose runs you want to track. Post once at the end of each run.
  • Category: agents
  • Stream: one per agent, e.g. research-bot

At the end of every run, the agent posts a report describing how it went: a metric for the success rate, a status block for the steps, an alert if the run failed, and an artifact linking to the full output or logs.

Terminal window
curl -X POST http://localhost:3001/api/v1/reports \
-H "Authorization: Bearer pd_xxxxx" \
-H "Idempotency-Key: research-bot-run-8412" \
-H "Content-Type: application/json" \
-d @run.json
{
"version": "1.0",
"source": { "id": "src_…" },
"category": { "slug": "agents" },
"stream": { "slug": "research-bot" },
"report": {
"title": "research-bot — run #8412",
"summary": "Completed with 1 step retried.",
"severity": "warning",
"occurred_at": "2026-06-23T12:30:00Z",
"tags": ["research-bot", "run"]
},
"blocks": [
{
"id": "rate", "type": "metric",
"key": "success_rate", "label": "Step success rate", "value": 92.3,
"unit": "%", "format": "percent", "precision": 1,
"trend": "down", "sentiment": "negative", "delta": -3.1, "comparison_label": "vs last run"
},
{
"id": "steps", "type": "status",
"items": [
{ "key": "fetch", "label": "Fetch sources", "status": "healthy" },
{ "key": "summarize", "label": "Summarize", "status": "degraded" },
{ "key": "publish", "label": "Publish", "status": "healthy" }
]
},
{
"id": "warn", "type": "alert",
"title": "Summarize step retried", "severity": "warning",
"message": "Rate-limited by the model API; succeeded on retry 2."
},
{
"id": "output", "type": "artifact",
"label": "Full run log", "url": "https://logs.example.com/runs/8412",
"mime_type": "text/plain"
}
]
}

Set severity to critical when the run fails outright, warning on retries, info on a clean run — so the failure feed only shows what needs attention.

  • A report_count widget — runs over time (cadence and gaps at a glance).
  • A metric widget — the latest success rate.
  • An alert_feed scoped to the agents category — failed and degraded runs surface here first.
{
"version": 1,
"widgets": [
{ "id": "cnt", "type": "report_count", "span": "half", "row": 0,
"config": { "scope": "category", "targetId": "cat_agents", "bucket": "day", "range": "30d" } },
{ "id": "rate", "type": "metric", "span": "half", "row": 0,
"config": { "streamId": "str_research_bot", "metricKey": "success_rate", "label": "Success rate" } },
{ "id": "fails", "type": "alert_feed", "span": "full", "row": 1,
"config": { "categoryId": "cat_agents", "limit": 15 } }
]
}
pulsedeck.app / dashboards / agents / edit
SCREENSHOT

Builder with a runs-over-time count, a success-rate metric, and a full-width failure feed.

Drop an image into public/shots/ and pass src.

  • Many agents — one stream per agent under agents; the count widget can scope to the whole category or a single stream.
  • One workspace per client (agencies) — each client’s agents report into their own workspace; you get a portfolio view per client.
  • Link everything — the artifact block turns each run into one click to the full logs or output.