Orchestration
From crash signal to executor handoff in one durable pipeline. Queues, retries, dead letters — the boring rails that make the rest possible.
RunGuard sits between your app crashes and the coding agents your team already pays for. We catch the error, apply safety policy, build a review-grade packet, and dispatch — Copilot, Cursor, Claude, or OpenAI. Your keys. Your seats. Our rails.
RunGuard is deliberately narrow: orchestration, safety, context, tracking. Everything else — including the actual fix — runs on your AI account.
From crash signal to executor handoff in one durable pipeline. Queues, retries, dead letters — the boring rails that make the rest possible.
Protected paths, ignore patterns, never auto-merge. Apply rules before a single token gets billed to your AI account.
Every incident becomes a review-grade Markdown packet — repo, classification, frequency, suspected file, the policy that was applied.
One timeline per incident: queued, dispatched, executor run, result — with the executor's external link and hold reason attached.
Every error walks the same line: ingest, classify, apply policy, build the packet, dispatch, track. No skipped stops, no shortcuts.
Raw stacks are noise. The crash packet is structured Markdown your executor (and your reviewer) can act on — repo, classification, suspected file, the safety policy that was applied.
TypeError: Cannot read properties of undefined (reading 'trim')
at parseJSON (/app/src/utils/parse.js:3:22)
at handleSubmit (/app/src/routes/checkout.js:48:12)
at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
at next (/app/node_modules/express/lib/router/route.js:144:13)
at /app/src/middleware/auth.js:21:5
at Layer.handle [as handle_request] (/app/node_modules/express/lib/router/layer.js:95:5)
...Investigate this production error and propose a small, reviewable fix.
Prefer a failing regression test first when reproducible.
Open a PR for review — never auto-merge. Leave an investigation note if confidence is low.
GitHub Copilot and Claude Code Action ship today. Cursor, OpenAI, Cloudflare AI, and GitHub Actions are next. The shape stays the same: you own the model and the bill — RunGuard owns the rails.
We file a labeled Issue with the crash packet. Copilot picks it up.
We file an issue prefixed with @claude. Your claude-code-action workflow fires with your key.
Hand off the packet to a Cursor agent run, tracked back to the incident.
Same shape. Your key, your model, your spend, our orchestration.
Run the fix attempt on your Cloudflare account, billed to your gateway.
Trigger a workflow_dispatch with the packet — fix in your own runner.
Auth, billing, migrations — declared off-limits in Settings. Policy is checked before dispatch, not after.
We hand the executor a crash packet on a labeled Issue. Any PR the executor proposes is yours to review — merging is always a human action.
Executor credentials live in your accounts, not ours. RunGuard never proxies your AI tokens.
Every route carries its state, hold reason, executor run, and external link — from queued through merged PR.
Connect a repo, install the SDK, and route your first incident in under fifteen minutes.