Migrate from Sentry
Migrate from Sentry.
Keep your Sentry SDKs. Start one container, create a project, paste its DSN into your SDK config. Run it next to Sentry and keep Sentry read-only for history.
OpenFault is in active development and not production ready. Updated November 9, 2026.
- Tools compared
- 5
- OpenFault license
- MIT
- Self-host price
- Free
- Containers
- 1
- iOS app
- Free
Best for teams that want one container, SQLite, no paid tier, and alerts on a free native iOS app.
01 · Run it
Start the container.
One command, no config. Open http://localhost:8080 and the setup wizard creates your admin account and first project, then shows its DSN. Set OPENFAULT_BASE_URL so the DSN uses your public host. Install guide → Longer walkthrough: How to switch from Sentry to OpenFault →
docker run -d -p 8080:8080 -v openfault:/data ghcr.io/openfault/openfault 02 · Swap the DSN
Change one line per SDK.
OpenFault speaks the Sentry wire protocol. No fork, no plugin, no wrapper. For iOS, keep sentry-cocoa and set the new DSN the same way. Send your first event →
Sentry.init({- dsn: "https://[email protected]/56",+ dsn: "https://<key>@errors.example.com/<project-id>", });<key> and <project-id> come from your OpenFault project page. A Sentry key gets 403.
3 of the 7 you use stay behind
- WorksDebug-ID bundles via sentry-cli. Legacy release-name uploads are not supported.
- Workssentry-cli debug-files upload. Mach-O only.
- WorksWork as in Sentry, {{ default }} included.
- WorksOver quota gets 429 with Retry-After, and SDKs back off.
- Not supportedNo import. Keep Sentry read-only until you stop needing old issues.
- Not supportedAccepted and thrown away with a 200.
- Not supportedAccepted and thrown away with a 200.
03 · Symbols
Source maps and dSYMs.
Point sentry-cli at your host with a write token from Settings → API tokens. Debug-ID bundles only. @sentry/nextjs uploads during next build with the same four variables. For iOS, sentry-cli debug-files upload sends dSYMs, Mach-O only. Source maps → dSYMs →
after your production build
export SENTRY_URL=https://errors.example.com
export SENTRY_ORG=openfault # any value; one install is one org
export SENTRY_PROJECT=web # your project's slug
export SENTRY_AUTH_TOKEN=of_... # a write token
sentry-cli sourcemaps inject ./dist
sentry-cli sourcemaps upload ./dist 04 · Honest
What does not carry over.
Migrate in parallel. Run OpenFault next to Sentry before you switch Sentry off.
- History
- No import. Keep Sentry read-only until you stop needing old issues.
- Tracing, replay, profiling
- Accepted and thrown away with a
200. Rate-limit headers tell SDKs to stop sending them. OpenFault tracks errors. - Releases from CI
sentry-cli releasesanddeployssucceed but record nothing. Releases come from events.- Older uploads
- Legacy release-name source maps aren’t supported. Debug-ID bundles only.
Compare
Side by side.
From each project’s own docs and pricing pages, checked 2026-11-09.
| OpenFault | Sentry self-hosted | GlitchTip | Bugsink | Telebugs | |
|---|---|---|---|---|---|
| License | MIT | FSL (converts to Apache 2.0 after 2 years) | MIT | PolyForm Shield 1.0.0 (source-available, not OSI-approved) | Proprietary |
| Self-host price | Free, MIT, no paid tier | Free | Free | Free | $299 first year, $99/yr renewal |
| Hosted plan | None | Developer free (1 user, 5k errors); Team $26/mo annual, $29 monthly | Free up to 1k events/mo; $15/mo small plan | Free 15K-event evaluation plan; paid from €16/mo (checked 2026-11-09) | Managed $99/mo after a 14-day trial (checked 2026-11-09) |
| Containers to run | 1 | — | App + Postgres | 1 | 1 |
| Database | SQLite | Postgres, ClickHouse, Kafka, Redis | Postgres | SQLite supported | SQLite |
| Minimum RAM | Peak 28 MB in a 10k-event burst (measured) | 16 GB + 16 GB swap | 256 MB minimum, 512 MB recommended | — | 1 GB |
| Runtime | Rust + SQLite | Python, Kafka, ClickHouse, Postgres, Redis | Python (Django) | Python | Ruby on Rails |
| Sentry SDK compatible | Yes | Yes | Yes | Yes | Yes |
| Source maps | Yes, via sentry-cli | Yes | Yes, via file upload | Yes, via sentry-cli | Yes |
| iOS crash symbolication | Yes, dSYM upload + Swift demangling | Yes | — | — | — |
| Live updates and TV mode | Yes, SSE | — | — | — | — |
| MCP server | Built in, approval-gated | Separate server | — | — | — |
| iOS app | Widgets, push, QR pairing (on the App Store) | — | — | — | — |
Verified 2026-11-09. A dash means we haven’t checked. Sources: Sentry self-hosted, Sentry pricing, GlitchTip, Bugsink, Telebugs.
FAQ
Questions.
How do I migrate from Sentry to OpenFault?
Start the OpenFault container, create a project, and put its DSN in your existing Sentry SDK config. The SDKs post to OpenFault as they are. Run both side by side and keep Sentry read-only until you stop needing old issues.
Do I have to change my Sentry SDK?
No. Keep the official Sentry SDK and change the DSN. Rails, Next.js, Node and Python are tested.
Can I import my Sentry history?
No. There is no import. Keep Sentry read-only until you stop needing old issues.
Do source maps still work?
Yes, with debug-ID bundles: sentry-cli sourcemaps inject and upload, or the Sentry bundler plugins including @sentry/nextjs. Legacy release-name uploads are not supported.
What does not carry over?
Issue history, tracing, session replay and profiling. sentry-cli releases and deploys succeed but record nothing; releases come from the release field on events.
Is OpenFault production ready?
Not yet. OpenFault is in active development and not production ready. Run it next to your current error tracker before you switch that one off.
Get started
Try it next to what you run now.
One command, no config. Free, MIT, no paid tier. In active development, so run it alongside your current tool before you switch.
-
Start the container.
docker run -d -p 8080:8080 -v openfault:/data ghcr.io/openfault/openfault Open
http://localhost:8080. The setup wizard creates your admin account and first project.Put the project’s DSN in your Sentry SDK config. Read the install guide →