Introduction
BugFuse is a lightweight, self-hosted error tracking platform. It ingests events from the official Sentry SDKs (envelope and store protocols), groups them into issues, and surfaces them in a web UI with search and alerting automations.
Why BugFuse
Section titled “Why BugFuse”Sentry is built to handle millions of events per second, and self-hosting it means running Kafka, ClickHouse, Redis, Snuba, and dozens of containers. If you just want error tracking for your own apps, that is an ops project.
BugFuse is the opposite trade-off:
- One required dependency: Postgres. Redis (cache), SMTP (email), and S3 (artifact storage) are optional, and everything works without them.
- One command:
docker compose upbrings up the database, runs migrations, and starts the backend and frontend. - Your existing SDKs: point any Sentry SDK at a BugFuse DSN and events flow in. No new client libraries.
- Open source: licensed under AGPL-3.0. The license applies to the BugFuse server only. Your applications talk to it through Sentry SDKs over the network, so their code is never affected by it.
How it works
Section titled “How it works”- Your app’s Sentry SDK sends events to BugFuse’s ingest endpoints
(
/api/{project_id}/envelope/), authenticated by the project DSN key. - An event pipeline normalizes, deduplicates, and fingerprints each event, grouping it into a new or existing issue.
- Automation rules evaluate the event (thresholds, frequency, spikes) and send notifications through your configured channels: Slack, Discord, Telegram, email, and webhooks, or any of the 100+ services Apprise supports.
- You triage issues in the UI: search with a Sentry-style query language, assign, resolve, and comment.
Current limitations
Section titled “Current limitations”BugFuse focuses on error tracking and is honest about what it doesn’t do (yet):
- Errors only. Performance/tracing, session replay, profiling, and cron check-in envelopes sent by SDKs are accepted and discarded. Only error events are stored.
- No data retention policies yet. Events are kept indefinitely; there is no automatic cleanup of old events, so plan your Postgres disk accordingly.
- Symbolication covers JavaScript source maps. Native debug files (dSYM, PDB) are not processed.
- No per-project ingestion quotas, only a maximum event payload size.
Next steps
Section titled “Next steps”- Install BugFuse with Docker Compose.
- Send your first event from your app.
- Review the configuration reference.