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.
An animation in ten scenes. A new feature ships with tests, types and review passing, and another page starts crashing. The crash reaches bugstack from any telemetry source and is grouped into one problem. The coordinator assigns the fixer and the tester. In an isolated sandbox, the tester writes a test that reproduces the failure: only orders with the new status crash. The fixer finds that the cause is a deliberate change in another file, so it updates the page that fell behind and leaves the feature alone. Back in the sandbox, the test passes with the fix and the rest of the test suite stays green. The pull request waits for review, or merges on autopilot. The view then zooms out: in one benchmark run bugstack worked through 158 problems, reaching the right action for failed deploys, security findings, dependencies and failing CI 100% of the time and for crashes 85%; on 45 of 61 graded crash runs the fix held.
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.
Software maintenance is expensive, slow and done by hand.
Without bugstack
Each item takes hours to investigate, so the pile only grows.
With bugstack
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.
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.
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.
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.
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.
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.
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.
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.
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 →
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
includes $100 of usage credit every month, plus a one-time $100 welcome bonus when you start.
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
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.
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.
Prefer to try it yourself? Get started: $100 a month, with a $100 welcome bonus when you start.