Skip to content
View runvouch's full-sized avatar

Block or report runvouch

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
runvouch/README.md

RunVouch

RunVouch

The watchdog for unattended AI agents: proof they did the job, and an alert the moment they don't (or start spending), with a tamper-evident proof per run.
Claude Code Routines · headless claude -p · OpenClaw · n8n · cron

Website · Docs · Verify a run · Field notes · MCP Registry · Product Hunt

PyPI npm GitHub Action MCP Registry Smithery License: MIT

A green run means the scheduler worked, not that the task got done. RunVouch alerts within minutes when a scheduled agent is missing, failed, looping, over budget, drifting, or reported success without evidence.

pip install runvouch     # or: npm install -g runvouch  (zero-dependency client + rv CLI)
rv agent nightly-report --cadence 24h --cap-run-cost 2 --evidence
rv run nightly-report --evidence-file out/report.html -- claude -p "build tonight's report"

No client, no header: every agent also has a ping URL, so anything that can call a URL can report.

0 3 * * * /usr/local/bin/nightly.sh; curl -fsS -m 10 https://api.runvouch.com/ping/<token>/$?

Nothing for success, /start to open a run, /fail, or the exit code. rv agent NAME prints the URL.

Verifiable runs

Every finished run gets a sha256 record, every UTC day a Merkle root chained to the previous day and stamped in Bitcoin with OpenTimestamps. The day files are public at https://api.runvouch.com/proof/ and templates/verify_proof.py (stdlib only) checks a proof without our code. On every plan, Free included.

rv proof RUN_ID --verify     # recomputes leaf + Merkle path against the public day file, exit 0 or 1

Check it yourself, no account: https://runvouch.com/verify hands you one real sealed run from our own fleet, recomputes every hash in your browser, and has a button that edits a field so you can watch it break.

Mechanism and limits: https://runvouch.com/docs/proof · who needs it: https://runvouch.com/verifiable-agent-runs

Detectors

Alert Meaning
MISSED expected run never started (dead scheduler, expired auth, crash before first line)
FAILED run ended non-zero / status=fail
NO_EVIDENCE run said ok but required proof (file written, URL 200, assertion) is missing, green ≠ done
RETRY_STORM same tool + identical input ≥ N times in one run (the invisible loop that costs $437)
BUDGET_RUN / BUDGET_DAY cost or tokens over the cap you set; the agent is paused and its next run is refused until rv agent NAME --resume
DRIFT duration / output size off its 7-run baseline (robust MAD), silently doing something else
STALLED started, no end and no heartbeat past max runtime

Alerts go to e-mail, Telegram, Slack, any JSON webhook, PagerDuty (Team) and the dashboard.

Layout

runvouch/server.py            FastAPI + SQLite, all detectors, dashboard at /
runvouch/cli.py               `aw`, stdlib-only client: rv agent / rv run -- CMD / rv status / rv alerts
integrations/claude-code-plugin Claude Code plugin: SessionStart/PostToolUse/Stop hooks → RunVouch
integrations/mcp                MCP server (stdio): runvouch_status/alerts/ack/runs/run_start/run_end
site/index.html                 landing page
tests/                          7 detector tests (pytest)
docs/SELF_HOSTING.md            run it yourself: Docker or venv, what differs from hosted

Self-hosting

One process, one SQLite file, Docker or a venv. Full guide in docs/SELF_HOSTING.md (ten minutes, what differs from the hosted service, how to move later).

cp .env.example .env && docker compose up -d          # or: pip install -r requirements.txt && ./run.sh
curl -X POST "localhost:8787/admin/accounts?name=me&plan=team" -H "X-Admin-Token: $RUNVOUCH_ADMIN_TOKEN"   # -> api_key

Use

export RUNVOUCH_KEY=rv_... RUNVOUCH_URL=http://localhost:8787
rv agent nightly-report --cadence 24h --cap-run-cost 2 --evidence
rv run nightly-report --evidence-file out/report.html -- claude -p "build tonight's report"
rv status ; rv alerts

Claude Code plugin: see integrations/claude-code-plugin/README.md. MCP: claude mcp add runvouch -e RUNVOUCH_KEY=... -- python3 integrations/mcp/runvouch_mcp.py

Test and contribute

.venv/bin/pip install -r requirements-dev.txt && .venv/bin/python -m pytest -q tests

See CONTRIBUTING.md.

Hosted vs self-host

Hosted at runvouch.com: free for 3 agents, $19 Solo, $99 Team, alerts, dashboard, backups, EU hosting. Self-host: this repo, MIT. Same code.

Compare

vs Healthchecks.io · vs Cronitor · vs Langfuse

License

MIT.

Popular repositories Loading

  1. runvouch runvouch Public

    Dead man's switch, cost cap and outcome check for unattended AI agents (Claude Code, OpenClaw, n8n, cron)

    HTML

  2. claude-plugin claude-plugin Public

    Claude Code plugin for RunVouch — hooks report start, tool calls, cost and outcome of scheduled runs

    Shell

  3. awesome-mcp-servers-punkpeye awesome-mcp-servers-punkpeye Public

    Forked from punkpeye/awesome-mcp-servers

    A collection of MCP servers.

  4. awesome-claude-code awesome-claude-code Public

    Forked from jmanhype/awesome-claude-code

    🎨 Awesome list of Claude Code plugins, MCP servers, editor integrations, and resources

  5. awesome-sysadmin awesome-sysadmin Public

    Forked from awesome-foss/awesome-sysadmin

    A curated list of amazingly awesome open-source sysadmin resources.

  6. vouch-action vouch-action Public

    GitHub Action: wrap a scheduled job so RunVouch alerts when it is MISSED, FAILED or finished without evidence