Product How it works Features Security What is bugstack? SDKs JavaScript SDK Python SDK Go SDK Ruby SDK Docs Pricing Blog Book a Demo
Log In Get started

Autonomous software maintenance

An autonomous maintenance department for your software.

bugstack picks up the errors your team hasn't got to, finds the cause, and proves the fix in an isolated sandbox before it opens a pull request. A teammate whose whole job is upkeep.

Live today: crashes, package and security upgrades, failing CI, failed deploys. See what shipped this week.

Mergedbugstack-ai opened this pull request

Fix: Add missing "returned" status label to fix undefined lookup crash

What happened

GET /api/bench/fulfillment returned a 500 (TypeError: Cannot read properties of undefined, reading 'toUpperCase') instead of the fulfillment board rows.

Why it broke

fulfillment/route.ts:23 reads STATUS_LABEL[o.status]!.toUpperCase(); order ord_3003 in orders.ts has status "returned", which isn't a key in STATUS_LABEL, so the lookup is undefined and the ! assertion doesn't stop the crash.

Risk

Low; this only adds a missing map entry, but if new statuses are added later without a matching label the same crash could recur.

  • ✓ 4 of 4 checks passed
  • ✓ 1 file changed, +1 −1
  • ✓ Merged by a person, 12 minutes after it opened

The fix is a real pull request: number 77, which bugstack opened on our own repository on 11 September 2026 for a defect we planted as a test. The totals are from our internal benchmark of 25 September 2026. The 30 minutes is our own estimate for a routine fix.

01 · The problem

Software maintenance is expensive, slow and done by hand.

Without bugstack

Maintenance backlog 47 open 48 open 49 open TypeError in fulfillment3 weeks · unassigned postcss has a known vulnerability19 days 500s on /api/invoices12 days · unassigned next is 4 versions behind2 months Flaky test blocks CI9 days KeyError in reportsnew · unassigned lodash security updatenew · unassigned

Each item takes hours to investigate, so the pile only grows.

With bugstack

Maintenance backlog bugstack on it 0 waiting on you to dig in TypeError in fulfillment investigatingMerged postcss has a known vulnerability PR ready 500s on /api/invoices Merged next is 4 versions behind PR ready Flaky test blocks CI Merged KeyError in reports PR ready lodash security update PR ready

bugstack works through the pile on its own, and your team reviews finished fixes.

Your best engineers shouldn't be spending their week on upkeep.

A typical developer spends 17 of every 41 hours on maintenance (Stripe, 2018). bugstack takes that work, so your team ships what's next.

02 · Proof

Every bug fix is proven before you see it.

bugstack copies your repository into an isolated sandbox and writes a test that reproduces the bug. The test has to fail on your current code, for the bug’s own reason. Then the fix goes in: the same test has to pass and the rest of your test suite has to stay green. Only then does a pull request open.

bugstack sandbox · isolated · network cut ✓copied your repository into a sandboxmain @ 8f3a2c1 ✓installed dependencies · network cut ▸test fulfillment.repro.test.ts, before the fix ✗FAIL TypeError: reading 'toUpperCase' of undefined same error as production · bug reproduced ▸apply fix + returned: "Returned", ✓PASS fulfillment.repro.test.ts ✓the rest of your suite 212 of 212 still pass Proven in the sandbox: fails before, passes after

Red for the right reason

The test has to fail with the bug’s own error. One that fails for anything else, a typo or a bad import, never counts.

Sealed off

The sandbox gets none of bugstack’s keys and none of your secrets. The network is cut before the first test runs, and the sandbox is destroyed when the fix is done.

The test ships with the fix

The pull request carries the proof and the test itself, so the bug stays fixed. Your own CI runs on it too.

03 · A teammate

Review it like a colleague's work.

Ask a question or request a change on bugstack's pull request. With replies switched on for the repository, it answers in the thread and pushes the change, the way a teammate would.

Open Fix: add missing "returned" status label bugstack opened this pull request The cause, the fix and the test. Proven in the sandbox. DK dana-k commented Could the next new status crash this page too? bugstack replied Yes, it could. I added a fallback label so an unknown status can't crash the page, and a test that proves it. Pushed in 1 commit. bugstack pushed 1 commit Add a fallback label for unknown statuses 5 of 5 checks pass DK dana-k approved Nice catch, thanks.

One pull request per problem

It updates the one it opened instead of piling on new ones.

Your edits come first

If someone on your team has changed its pull request, it never overwrites them.

It follows up

If the bug keeps happening while the fix waits, it tells you on the pull request.

04 · Upgrades

Upgrades and security patches, kept current.

Not a pile of stale bot pull requests. One per package, with the lockfile rebuilt and your checks passing, updated in place when a newer version ships. Upgrade pull requests are for npm today; PyPI, RubyGems and Go packages are scanned and reported.

Open Upgrade postcss 8.4.31 → 8.5.12 Upgrade postcss 8.4.31 → 8.5.23 Fixes a known vulnerability Lockfile rebuiltpackage-lock.json All checks passbuild · test · types postcss 8.5.23 released2 days later Updated this pull request to 8.5.23. No duplicate opened.
05 · Control

You decide how much it does on its own.

Every bug fix is proven in the sandbox, and every change has to pass your checks. Then your setting decides: wait for your OK, or merge on its own. Security changes always wait for you.

acme/storefront · autonomy

Suggest. bugstack writes the fix and waits. Nothing opens until you say go. Review, where most teams start. bugstack opens the pull request. You merge it. Autopilot. bugstack merges a fix on its own once the sandbox has proven it and your checks pass. Set per repository.

Prepared Open Merged Fix: add missing "returned" status label +1 −1
Your checks passbuild · test · types, 4 of 4
Proven in the sandboxThe test failed before the fix and passes after it, with the rest of the suite green
Prepared, not openedNothing reaches GitHub until you open itOpen pull request
Waiting for your reviewYou read it, then merge itMerge
Merged automaticallySandbox proof and checks passed, so it went inMerged
Prepared Open Security patch: upgrade jsonwebtoken 8.5.1 → 9.0.2 security
Your checks passbuild · test · types, 4 of 4
Security change: always waits for a personOn every setting, Autopilot includedReview

06 · Scope

See exactly what bugstack can fix today, and what it can't.

Fixes on its own

On Autopilot: crashes, package upgrades, failing CI, failed deploys.

Asks you first

Big changes, anything security-related, and judgement calls.

Not yet

Silent bugs, browser errors and slowdowns. On the way.

  • Errors your server code throws and doesn't catch
  • Null and undefined access, missing imports, unhandled async failures
  • Python NoneType, Ruby nil and Go nil-pointer crashes
  • Deploys that fail on a connected host (Render today)
  • A failing CI run on your default branch
  • Out-of-date npm packages, checked daily (PyPI, RubyGems and Go are scanned and reported)
  • Logic errors that throw, where the right behavior depends on what you intended
  • Failures at the edge of an outside service (bugstack can guard the call, it can't fix their API)
  • Any fix over 3 files or 30 lines, or one that touches auth or security code, however confident the model is
  • Dependency upgrades that change behavior
  • Packages with known vulnerabilities, checked every four hours: the upgrade is prepared and waits for you
  • Secrets committed to the repository, scanned nightly: bugstack tells you, and never rotates a secret itself
  • A wrong answer that comes back as a success
  • Anything that fails without throwing, like a job that quietly stops
  • Performance regressions
  • Errors in your users' browsers
  • Failed deploys on hosts other than Render
  • Repositories outside GitHub

bugstack is under active construction. This is the honest edge of what it does today. bugstack maintains software, it does not build new features. See how each kind of fix works →

07 · Performance

How well it works, measured.

What it costs, and how it did on bugs we planted in our own code. Every number is dated.

WHAT IT COSTS

$100 / month

includes $100 of usage credit every month, plus a one-time $100 welcome bonus when you start.

about $1.25

of credit to diagnose and fix a typical crash.

Internal benchmark, 25 Sep 2026

ON OUR OWN CODE, ONE DATED RUN

We planted real bugs in our own code and let bugstack loose, three passes each. How often it reached the right action:

158 planted bugs · 3 passes each · machine-graded · 25 Sep 2026

08 · Setup

Built-in error tracking. Or bring your own.

Add two lines to your app, with your key and bugstack's endpoint, and bugstack sees every crash as it happens. Already use Sentry or Datadog? We set it up with you.

app.ts 1import{ ErrorCaptureClient } from'bugstack-sdk' 2ErrorCaptureClient.init({ apiKey, endpoint}) bugstack TypeError in /checkoutcaught · finding the cause Fix readyproven · pull request open

Built-in SDKs

JavaScript, Python, Go and Ruby. Express, Next.js, Flask, FastAPI, Django, Rails.

Or your existing tools

Sentry, Datadog, or your own source.

Plus your code and deploys

Packages and secrets scanned in GitHub. Failed deploys from Render.

Hand off the upkeep. Keep building.

Book 15 minutes with the founder. See bugstack run on your code, and ask anything.

Pick a time that suits you. Open the calendar

Prefer to try it yourself? Get started: $100 a month, with a $100 welcome bonus when you start.