Automatic fix on GitHub
A GitHub App reads only the files the stack trace points at, writes the change to a bugban/fix-… branch and opens a pull request. Never "all repositories", never an automatic merge.
Self-hosted · your server, your data
Bugban is self-hosted error, performance and slow-query monitoring for PHP, JavaScript and mobile apps. Every new error is analysed by AI — and on the projects you connect to GitHub, the fix arrives on its own branch, ready to review.
No card required · one project · every feature switched on
Everything it does
Not a list of buzzwords — every item below is a screen you can open on the day you install it.
A GitHub App reads only the files the stack trace points at, writes the change to a bugban/fix-… branch and opens a pull request. Never "all repositories", never an automatic merge.
Root cause, explanation and a concrete fix, written in the language of your panel — Azerbaijani, English, Russian or Turkish.
Every query over your threshold arrives with its plan: full scan or index, rows examined, key used — and a leading-wildcard LIKE is flagged as unfixable by any index.
Handled and unhandled alike, grouped by fingerprint with first seen, last seen, occurrence count and status (open / resolved / ignored).
One click re-measures a slow query — executed by YOUR SDK on YOUR database, read-only, single statement, forced LIMIT, always rolled back, and the rows never leave your server.
Method, URL, route template, controller@action, headers with secrets redacted, the signed-in user and the session, for every occurrence.
What happened before the error: clicks, navigation, console output and HTTP calls with status codes and timings.
The page exactly as it looked when it broke, with every input value masked — so a layout bug does not need a reproduction.
A real PNG from React Native, Expo and Flutter, with sensitive widgets painted over BEFORE the shutter — not a claim of masking after the fact.
Web Vitals in the browser; app start, screen load and jank on mobile — with thresholds and a separate AI prompt, because LCP means nothing on a phone.
Which release introduced it, whether a resolved error came back, and whether a fixed slow query stayed fixed — measured by frequency, not by average.
Invite by email with owner, admin, member and viewer roles, an expiring invitation, and a log of who changed what.
Alerts and escalation
Two independent systems, because "a new error appeared" and "the site is on fire" are not the same message.
On every new error: in-app, email, Slack and Telegram. Email goes through an outbox, so a mail outage delays a message instead of losing it.
When errors spike past your threshold within your window, Bugban places an actual Telegram call to the person on duty — Telegram forbids bots from calling, so the call comes from your own connected account. A WhatsApp message can go out alongside it, and a cooldown keeps one incident from calling you twenty times.
A JSON POST to any system you run — Jira, Trello, ClickUp, n8n or your own endpoint — so an incident can open a ticket without a human copying it across.
Webhook payload
Technologies
Official SDKs, no agent to install and no sidecar process. If your stack is on this list, setup is one package and one key.
Versions 7.0 through 8.4 — old servers included. Uses curl when present and falls back to streams when it is not.
Per-request isolation on the server through AsyncLocalStorage, so one request never inherits another user’s identity.
An offline queue writes to disk BEFORE sending, so a crash in a lift is still reported when the app next opens.
Slow queries arrive with their EXPLAIN plan and the index actually used, through the ORMs and drivers above.
No token is stored in the database — an installation token is minted from a private key when a fix is written, and expires within the hour.
How it works
The only recurring human step is the one that should be: deciding whether a fix ships.
One package, one API key. PHP 7.0 through 8.4, Node, the browser, React Native, Expo or Flutter. The panel shows “SDK connected” the moment the first ping arrives, so you never wonder whether it is wired up.
Each project authorises one repository through a GitHub App — never “all repositories”, and never another project’s.
It is grouped, analysed, and matched against your current code. If the fix is clear, a pull request is opened within seconds.
Deploy it, then mark the error resolved. If it comes back, Bugban reads the merged code and tries again — once.
Composer · npm · pub.dev
Published where your package manager already looks. No agent to install, no sidecar to run.
composer require bugban/laravel
Symfony
composer require bugban/symfony
CodeIgniter
composer require bugban/codeigniter
Yii2
composer require bugban/yii2
PHP
composer require bugban/php-sdk
Node.js
npm install @bugban/node
Express
npm install @bugban/express
NestJS
npm install @bugban/nestjs
Next.js
npm install @bugban/next
React
npm install @bugban/react
Vue
npm install @bugban/vue
React Native
npm install @bugban/react-native
Expo
npx expo install @bugban/react-native
Flutter
flutter pub add bugban_flutter
Pricing
Every package includes the whole platform — errors, performance, alerts and the AI fixes. The only thing that changes is how many projects you can run. Packages add up, and each keeps its own renewal date.
Free trial
Free · 7 days
1 project
Starter
$10/month
1 project
Growth
$20/month
3 projects
Business
$100/month
15 projects
Why self-hosted
Hosted error trackers see everything your application sees. Bugban does the same job without that being true.
| Bugban | Hosted SaaS | |
|---|---|---|
| Where your errors live | Your server | Their cloud |
| Who can read a stack trace | Only you | You and the vendor |
| Fix delivered as a pull request | Included | Rarely, add-on |
| Slow query plans (EXPLAIN) | Included | Separate APM product |
| Priced by | Projects | Events, seats, retention |
| Data retention | Your disk, your rules | Tier-dependent |
FAQ
Everything below is how the product behaves today, not a roadmap.
Yes. Bugban runs on your own server and your errors, requests and screenshots never leave it. There is no third party in the path between your application and your data.
When a new error arrives, Bugban reads the files its stack trace points at — from your repository, at their current state — and asks a model for the change. The result is pushed to a bugban/fix-… branch and opened as a pull request. Nothing is ever merged automatically: a developer reviews it, merges it, deploys it, and marks the error resolved.
PHP: Laravel, Symfony, CodeIgniter, Yii2 and plain PHP, from 7.0 to 8.4. JavaScript: Node.js, Express, NestJS, Next.js, React and Vue. Mobile: React Native, Expo and Flutter.
The request (method, URL, route, headers with secrets redacted), the signed-in user, the session, breadcrumbs, device and app details, slow database queries with their EXPLAIN plan, and — on mobile — a real screenshot with sensitive fields masked before the capture.
No. Every account starts with a 7-day trial covering one project, with every feature switched on, including the AI fixes.
Your errors keep being collected and nothing is deleted. The panel stops showing them and the AI stops working until you renew — at which point everything collected in the meantime is there again.
Yes. Each package covers a number of projects, and packages add up: buying a second one adds its projects to your allowance and keeps its own renewal date.