watching agents that run while you sleep

Your agents don't crash.
They go quiet — and keep spending.

A green run means the scheduler worked, not that the task got done. RunVouch is the dead man's switch, cost cap and outcome check for Claude Code Routines, headless claude -p, OpenClaw, n8n and cron.

no card2-minute setuptelegram · slack · webhookself-host (MIT)
 runvouch.com/app · last night · 5 agents
  • 02:00 nightly-reportMissed. Expected 02:00, nothing by 02:15missed
  • 03:00 inbox-triageExit 0, but no evidence: digest.html unchangedunproven
  • 03:30 repo-janitorRetry storm: cat CHANGELOG.md ×41 in 4 minloop
  • 04:00 price-scraper$0.41 · 12 tool calls · output 118 KBvouched
  • 05:00 lead-enricher$7.90 this run · daily cap $5 hitbudget
🔔 Telegram, 03:34 — repo-janitor: same tool + same input 41×. Each call looks fine; together it's a loop. Pause agent

Why "it ran" is the wrong question

$1,800 in two nights

A Max subscriber scheduled overnight Claude Code runs. Nobody noticed until the bill. A per-run cost cap stops this at $2.

$437 for 14,000 identical calls

An agent got stuck on a missing file. Every single call looked normal in the logs; the pattern only exists across calls. That's a retry storm — RunVouch counts them and alerts at 8.

Green run, empty report

The routine "succeeded". The report it was supposed to publish never changed. Ping monitors can't see that. Evidence checks can.

Sources: Claude Code issue #37686, community incident reports 2026. Read the write-ups →

Two lines around any job. Eight detectors behind it.

Register the agent

Name it, set how often it should run, what it may cost, and what proof counts as "done".

rv agent nightly-report \
  --cadence 24h --cap-run-cost 2 --evidence

Wrap the run

Cron, systemd, GitHub Actions, a Routine — anything. Exit code, duration, output and evidence are captured automatically.

rv run nightly-report \
  --evidence-file out/report.html \
  -- claude -p "build tonight's report"

Get told, not surprised

Missed, failed, unproven, looping, over budget, drifting or stalled → Telegram, Slack or any webhook within minutes. Ask your MCP client "are my agents healthy?"

rv status
nightly-report   ok   $0.41   0 alerts

Why a Routine alone isn't enough

"A green status means the routine ran — it does not mean the task in your prompt succeeded." — Claude Code documentation, scheduled tasks

Platforms schedule your agent. None of them tell you it silently produced nothing, looped on a missing file, or crossed a daily budget. That is the whole job of RunVouch — and it works the same for Claude Code, OpenClaw, n8n and plain cron:

Claude Code

RUNVOUCH_AGENT=nightly \
claude -p "build the report"

Plugin hooks report start, tools, cost, stop.

OpenClaw / n8n

rv run inbox-agent --cap-day-cost 10 \
  -- openclaw task run inbox

Or two HTTP calls from any workflow.

cron / scripts

0 2 * * * rv run etl \
  --evidence-file out.parquet -- python3 etl.py

Zero dependencies. Fails open.

What RunVouch catches vouched

MISSED

Expected run never started. Dead scheduler, expired token, crash before the first line.

FAILED

Non-zero exit or explicit failure, with the last stderr lines in the alert.

NO_EVIDENCE

Run says ok, but the file didn't change, the URL 404s, the assertion is false. Green ≠ done.

RETRY_STORM

Same tool, identical input, N times in one run. The invisible loop that burns money.

BUDGET

Per-run and per-day cost or token caps. Alert, then pause the agent.

DRIFT

Duration or output size off its 7-run baseline. The agent is quietly doing something else.

STALLED

Started, no end, no heartbeat past the max runtime. Hung on a prompt nobody will answer.

COST

Tokens and dollars per run, read straight from Claude Code transcripts. Weekly cost report per agent.

What the alert looks like

Telegram · 02:16
⚠️ RunVouch [MISSED] nightly-report
no run started for 16 min (cadence 24h + grace). Scheduler dead, auth expired, or agent crashed before first ping.
Slack · #agents · 05:02
⚠️ RunVouch [BUDGET_DAY] lead-enricher
24h cost 7.90 > daily cap 5.00 — pause agent · view runs

Works with what you already run

Claude Code Routinesclaude -p (headless)Claude Code hooksMCPOpenClawn8ncron / systemdGitHub ActionsLangGraphPython / Node / bash

Native Claude Code plugin (hooks report start, every tool call and stop), an MCP server so agents can check on each other, and a zero-dependency CLI for everything else.

Why not Healthchecks, Cronitor or Langfuse?

Ping monitors
Healthchecks · Cronitor
Trace platforms
Langfuse · LangSmith · Arize
RunVouch
Knows the job ran on timeyesnoyes
Knows the job actually did something (evidence)nonoyes
Detects retry storms across tool callsnomanual, in tracesautomatic
Hard cost cap per run / per daynodashboards, no capyes + pause
Setup1 URLSDK in your code2 lines or a plugin
Built forops teams, cronML teams debugging promptspeople running agents unattended
Price$0–85/moper seat / per million spans€0 · €9 · €29

Detailed comparisons: Healthchecks.io · Cronitor · Langfuse

Pricing

Free

€0
  • 3 agents
  • All 8 detectors
  • Telegram & webhook alerts
  • 7-day history
Start free

Solo

€9/month
  • 15 agents
  • 90-day history
  • Weekly cost report
  • Priority alerts
Upgrade to Solo — €9/mo

Team

€29/month
  • 100 agents
  • Slack & PagerDuty
  • Shared dashboard
  • API export
Upgrade to Team — €29/mo

Get your key

Only used to identify your account and match a future subscription. No newsletter, no card. Prices in euro, VAT handled at checkout by Lemon Squeezy; upgrade with the same email you sign up with.

Questions

Why do you need my email for a free key?

Because the key is the account. If you upgrade later, the payment is matched to the same email; if you lose the key, we can rotate it. We don't send marketing mail.

Why 3 agents on the free plan?

Most solo builders run one to three scheduled agents. Free covers that completely, forever. Paid plans are for people who run more — that's the only difference besides history and reports.

Does RunVouch see my prompts or data?

No. It receives what your job reports: start/end, exit status, tool names and a hash of their input (for loop detection), cost/tokens, output size, and true/false evidence results. Evidence checks on files run on your machine; only the verdict is sent.

What if RunVouch is down?

rv run fails open: your job still runs unmonitored and prints a warning. Monitoring must never break the thing it monitors.

Can I self-host?

Yes — the server is a single MIT-licensed Python file with SQLite. The hosted version is the same code plus alerts, backups and the dashboard.

Where does it run?

EU (Netherlands) infrastructure behind Cloudflare. Data stays in the EU.