One ~40 MB binary catches the errors, dumps, emails, logs, profiles and HTTP requests your app sends in development — through the SDKs and protocols you already use. No account, no cloud, no Buggregator package in your app.
- Errors and traces from your Sentry SDK — exceptions, transactions, logs, metrics
- Dumps from Symfony VarDumper and Spatie Ray
- Emails from a fake SMTP server, with an API to wait for a message and pull links or codes in E2E tests
- Logs from Monolog
- Profiles from XHProf — call graph, flame chart, top functions
- HTTP: catch any request, proxy outgoing calls, or answer with a mock server (rules or an OpenAPI spec)
- Xdebug in the browser: pause, step, read variables — with or without an IDE
- AI agents read all of it over MCP
Mail, HTTP dumps, the proxy, mocks and MCP work with any language. Sentry errors, traces and logs are tested with the official SDKs for PHP, JavaScript (browser and Node.js), Python and Go.
Binary (Linux, macOS, Windows; x86-64 and ARM):
curl -fsSL https://raw.githubusercontent.com/buggregator/server/master/scripts/install.sh | sh
buggregatorWindows (PowerShell):
irm https://raw.githubusercontent.com/buggregator/server/master/scripts/install.ps1 | iexThe script picks the file for your system, checks its checksum and installs it without sudo. On Linux and macOS it installs into ~/.local/bin; if that folder is not on your PATH, the script says so — then run ~/.local/bin/buggregator. On Windows it installs into %LOCALAPPDATA%\Programs\buggregator and prints the command to start it. By default the binary listens on all network interfaces; to keep it on your machine only, see Listen only on this machine.
Docker:
docker run --pull always \
-p 127.0.0.1:8000:8000 \
-p 127.0.0.1:1025:1025 \
-p 127.0.0.1:9912:9912 \
-p 127.0.0.1:9913:9913 \
ghcr.io/buggregator/server:latestOpen http://127.0.0.1:8000. The UI stays empty until your app sends something.
Events live in memory and are gone after a restart. To keep them: buggregator -db ./buggregator.db.
Change addresses, not code. Laravel / Symfony .env:
SENTRY_LARAVEL_DSN=http://sentry@127.0.0.1:8000/1
MAIL_HOST=127.0.0.1
MAIL_PORT=1025
VAR_DUMPER_SERVER=127.0.0.1:9912
LOG_SOCKET_URL=127.0.0.1:9913
RAY_HOST=ray@127.0.0.1
RAY_PORT=8000
PROFILER_ENDPOINT=http://profiler@127.0.0.1:8000
INSPECTOR_URL=http://inspector@127.0.0.1:8000
INSPECTOR_API_KEY=test
HTTP_DUMP_ENDPOINT=http://http-dump@127.0.0.1:8000Any other stack: send mail to SMTP 127.0.0.1:1025, send a POST or PUT to http://127.0.0.1:8000, or any method to http://http-dump@127.0.0.1:8000, to see it as a dump, and put mock rules under http://127.0.0.1:8000/mock/.
Sentry from other languages — same DSN:
// JavaScript, browser or Node.js
Sentry.init({ dsn: "http://sentry@127.0.0.1:8000/1", tracesSampleRate: 1.0, enableLogs: true });
// Browser page-load traces: also pass integrations: [Sentry.browserTracingIntegration()]# Python
sentry_sdk.init(dsn="http://sentry@127.0.0.1:8000/1", traces_sample_rate=1.0, enable_logs=True)// Go
sentry.Init(sentry.ClientOptions{Dsn: "http://sentry@127.0.0.1:8000/1", EnableTracing: true, TracesSampleRate: 1.0})
defer sentry.Flush(2 * time.Second) // short programs: send events before exitMore setups (Spiral, WordPress, Magento, Docker Compose, Kubernetes): Getting started.
| Port | What listens |
|---|---|
8000 |
Web UI, HTTP events (Sentry, Ray, Inspector, XHProf, HTTP dumps, SMS, Xdebug traces), mock server |
1025 |
SMTP |
9912 |
VarDumper (not on Windows) |
9913 |
Monolog |
8080 |
HTTP proxy |
| Send from | Docs | |
|---|---|---|
| Sentry: exceptions, traces, logs, metrics | Sentry SDK (DSN) | Sentry |
| Emails | any SMTP client | SMTP |
| Dumps | Symfony VarDumper, Spatie Ray | VarDumper, Ray |
| Logs | Monolog (JSON over TCP) | Monolog |
| Profiles | XHProf | XHProf |
| APM transactions | Inspector | Inspector |
| Any HTTP request | curl, webhooks, your app | HTTP dumps |
| Outgoing HTTP calls | HTTP proxy on :8080 |
HTTP proxy |
| SMS | requests in the format of 42 SMS providers (Twilio, Vonage, Infobip…) | SMS |
| Xdebug function traces | curl upload of a trace file |
Xdebug traces |
And around it:
- Mock server. Requests to
/mock/...get the response of the first matching rule: method + path → status, headers, body, delay. Rules from the UI, the API,buggregator.yaml, Go templates for dynamic bodies, or one rule per operation from an OpenAPI 3.x spec. Docs - Email testing API.
GET /api/smtp/messages/waitholds the request until the email your test expects arrives;/linksand/codespull the confirmation link or the one-time code out of it. Docs - Xdebug without an IDE (off by default). Buggregator sits between Xdebug and your IDE. With no IDE attached, a script pauses at
xdebug_break()or a saved breakpoint, and you continue or step from the browser. Docs - Projects. One instance for several apps: each event goes to the project named in its DSN, header or SMTP username. Docs
- Webhooks, SSO, Prometheus metrics for shared or CI setups. Webhooks · SSO · Metrics
Buggregator has a built-in MCP server. Claude Code, Cursor or any MCP client can list events, read a Sentry error with its stack trace, read dumps and profiles, find the slow calls in an Xdebug trace, and create mock rules. With the Xdebug proxy on, the agent can also set breakpoints and step through PHP code.
MCP_ENABLED=true buggregator
claude mcp add buggregator -- buggregator mcp23 tools by default; 35 with the Xdebug proxy, 36 with allow_eval. On Windows or in Docker, use the HTTP transport. Setup for other clients: MCP. Want an agent to install and set it up for you? Give it this page.
Zero config to start. Every setting is a flag, an environment variable or a line in buggregator.yaml (flags win over variables, variables over the file). Annotated example: buggregator.yaml.example. All options: Server configuration.
Needs Go 1.26+, PHP 8.1+ with Composer (for the VarDumper parser) and Make.
make build # downloads the UI, builds the PHP parser, compiles the binary
make run
make build-cross GOOS=darwin GOARCH=arm64If Buggregator replaced a tool or two on your machine, give it a star — that is how other developers find it.
- Website: buggregator.dev
- Docs: docs.buggregator.dev
- Chat: Discord
- Support the author: Patreon
- No binary or Docker? Buggregator Trap is a small PHP CLI alternative.
- Buggregator 1.x (PHP) lives on the 1.x branch; new work happens here.
Found a bug or have an idea? Open an issue or a pull request. How to set up the project: Contributing.
MIT — see LICENSE.