Production errors, handed straight to your coding agent

Runheed catches exceptions in the apps your agents build and serves them to Claude Code, Cursor or any MCP client. Your agent reads the stack trace, fixes the bug and marks it resolved.

30-day money-back guarantee. Cancel from the billing portal any time.

claude code
> anything new in production since yesterday's deploy?
search_errors(status: unresolved)
[UNRESOLVED] TypeError: Cannot read properties of undefined (reading 'total')
src/routes/checkout.ts:42 · 318 events · tool: Edit · session 8f3a
The cart is empty when a coupon removes the last item. Adding a guard and a test.
resolve_error(comment: "fixed in 4c1e9a2")
[RESOLVED] Error marked resolved.

How the loop works

  1. 1.

    Your app throws

    The SDK sends the exception with its stack trace, breadcrumbs, request details and, when you set it, the agent session that wrote the code.

  2. 2.

    We group it

    Repeats fold into one issue by fingerprint, so your agent sees "TypeError in checkout.ts:42, 318 times" instead of 318 alerts.

  3. 3.

    Your agent reads it

    Ask Claude Code or Cursor "what broke in production today?" It searches errors and pulls the full context through the MCP server.

  4. 4.

    Your agent closes it

    After the fix ships, the agent marks the error resolved with the commit in the note. If it comes back, it reopens on its own.

Two snippets and you're done

Add the SDK to your app with the DSN from your project. Then give your agent a key and the MCP server. Most setups take five minutes, and your agent can do both steps for you.

  • Node.js and TypeScript SDK with an Express error handler
  • Python SDK with FastAPI, Django and Flask hooks
  • A plain JSON endpoint for everything else
  • Authorization, cookie and API-key headers are redacted on arrival
server.tstypescript
import runheed from 'runheed';

runheed.init({ dsn: process.env.RUNHEED_DSN });
runheed.setAgent({ name: 'claude-code', sessionId });
terminalbash
claude mcp add runheed \
  -e RUNHEED_API_KEY=al_... -- npx -y runheed-mcp

What your agent gets on every error

General error trackers were built for people reading dashboards. These are the fields an agent needs to go from report to fix without asking you.

Stack trace and source location

File, function, line and column for each frame, with your own code marked so the agent opens the right file first.

Agent context

Which agent, version and session shipped the code, and which tool or action was running when it failed.

Breadcrumbs

The steps your code records before the failure, such as requests, queries and log lines.

Grouping and regressions

Duplicates fold into one issue. A resolved error that happens again goes back to unresolved.

Trends and a health score

Error counts for 24 hours, 7 or 30 days, the top offenders and a 0 to 100 project health score your agent can check after a deploy.

Email alerts

One email when a new kind of error appears, plus usage notices at 80% and 100% of your monthly events.

Flat monthly pricing

Compare plans
Solo
$29/mo
50,000 events a month, 3 projects, 30-day history
Pro
$79/mo
250,000 events a month, 15 projects, 90-day history
Scale
$199/mo
1,000,000 events a month, unlimited projects, 180-day history

Every plan includes the MCP server and unlimited agent keys. You are never billed for overage.

Questions

What does Runheed do?

It is an error tracker with an MCP server. Your app reports exceptions through a small SDK. Errors are grouped by fingerprint with the stack trace, breadcrumbs, request details and the agent context (agent, session, tool). Your coding agent then reads them through the MCP server, fixes the code and resolves the error with a note such as the commit hash.

Which agents and editors does it work with?

Anything that speaks the Model Context Protocol: Claude Code, Cursor, Claude Desktop, Windsurf, Cline, Zed and custom agents built on an MCP client. The server runs locally over stdio and talks to your workspace with an agent key.

Which languages are supported?

Node.js and TypeScript have a first-party SDK with an Express error handler. A Python SDK with FastAPI, Django and Flask hooks is included. Anything else can POST JSON to the ingest endpoint with the project key.

Is there a free plan?

No. Every plan is paid, which keeps the service small, fast and supported. Each plan has a 30-day money-back guarantee: email hello@greatwork.company within 30 days of your first payment and we refund it in full.

What counts as an event?

Each error report your app sends counts as one event, including repeats of an error that is already grouped. When you reach the monthly limit, new events are rejected until the next month (UTC) and you get an email at 80% and 100%. You are never billed for overage.

How is this different from Sentry?

Sentry is a full application monitoring suite with a large free tier and its own MCP server. We do one job: get production errors in front of your coding agent with the context it needs, and let it close the loop. Pricing is flat with no seats to count. If you need performance tracing, session replay or release health, Sentry is the better fit.

What data do you store, and for how long?

Error type and message, stack frames, breadcrumbs, environment and release, agent context, request method and URL, and any user id or extra data your code attaches. Authorization, cookie and API-key headers are redacted on arrival. Events are deleted after your plan history window (30, 90 or 180 days).

Can I cancel any time?

Yes. Open Manage billing in Settings to cancel, switch plans, update your card or download invoices. Service runs to the end of the period you paid for.

Let your agent fix what it shipped

Set it up in five minutes. If it doesn't earn its keep in the first 30 days, email us for a full refund.

Start for $29/mo