@autter/runtime-browserErrors and usage from the browser, a few kilobytes behind a publishable client key. Light enough that nobody argues about adding it.

Autter Runtime watches production through a lightweight open source SDK, folds the noise into a handful of incidents, traces each one to the deploy and the pull request that caused it, then investigates against your real code and opens the fix as a PR. You get pinged when it is ready. Nothing merges without you.
@autter/runtime-browser · node · next · open source
TypeError: Cannot read properties of undefinedcheckout-web · cart/summary.ts:112×214FetchError: upstream timed outpayments-api · client.ts:57×57RangeError: invalid time valueweb-booking · slots.ts:41×12incident #482 opened · deploy 8f3c2a1 · matches PR #482
investigating → fix PR on the way
Any tool can show you ten thousand occurrences. The work is turning them into the three problems worth waking someone for. Autter fingerprints every occurrence, folds repeats into issues, and promotes an issue only when it earns it.
Eight stages, run unattended from the first occurrence to the closed case. Your part starts at review and ends at merge.
A production error crosses the wire. The SDK captures the occurrence with its stack trace, service, environment, and release, and severity is read at the door: fatal, error, warning, or info.
02:47:31 UTC · checkout-web · productionTypeError: Cannot read properties of undefined (reading 'total')cart/summary.ts:112 · severity: errorA stable fingerprint built from the error type, the normalized message, and the top stack frames folds thousands of raw occurrences into one issue. Counts accumulate on the group, not in your inbox.
fingerprint 9d41c7 · 214 occurrences · 61 sessionsfolded into one issue · threshold crossedincident #482 openedWhen an issue is promoted to an incident, Autter walks your deployment history. A deploy that landed just before the first occurrence is matched to the merged pull request that shipped it: the suspected cause, named.
deploy 8f3c2a1 landed 22 min before first occurrencematches merged PR #482 · cart totals refactorsuspected cause attached to the incidentStack frames are mapped to files in your indexed codebase and the real source is pulled. The root cause analysis is grounded strictly in your code: no invented files, no invented symbols.
frame cart/summary.ts:112 → mapped to the indexed reporeal source pulled from the branch you ship fromroot cause: discount path returns an undefined subtotalThe same agentic runner that powers Autter's reviews writes the fix and opens a pull request on its own branch. The incident carries a problem, impact, and solution summary, and your reviewers get pinged.
branch autter/fix-incident-482 · fix PR #489 openedsummary attached: problem · impact · solutionemail sent to on-call reviewersYou review, approve, and merge. Autter opens pull requests; humans keep the merge button.
PR #489 approved and merged by your teamdeploy 4b19e77 · fix live in productionAfter the fix ships, the incident stays open while occurrence counts are watched. Silence is measured, not assumed.
occurrences since deploy 4b19e77: 0watching release healthThe incident closes with the whole record attached: every occurrence, the correlation, the investigation, the fix, and who approved it.
incident #482 closedfull record retained: trace → cause → fix → mergeAutter does not paste a stack trace into a model and hope. Four records converge on every case file before a fix is attempted, and each one is pulled from your stack, not inferred from the error text.
Runtime starts with an SDK you can read in an afternoon: open source, a few kilobytes in the browser, OpenTelemetry on the server. Connectors for the observability stack you already run are on the way.
@autter/runtime-browserErrors and usage from the browser, a few kilobytes behind a publishable client key. Light enough that nobody argues about adding it.
@autter/runtime-nodeServer-side errors and OpenTelemetry signals, plus a same-origin relay for the browser tracker.
@autter/runtime-nextBoth halves wired into Next.js with one import.
The loop runs unattended exactly as far as judgment allows, then it pings you. Four clauses hold on every incident.
The 3 a.m. page becomes a 9 a.m. pull request.
Autter runs the whole loop while you sleep: detects the error, folds the noise, finds the deploy that caused it, writes the fix, and opens the PR. It stops exactly where judgment starts, because self-driving still needs a driver's seat.