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.{client,server,edge}.config.ts
  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 releases and deploys succeed 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.

OpenFaultSentry self-hostedGlitchTipBugsinkTelebugs
LicenseMITFSL (converts to Apache 2.0 after 2 years)MITPolyForm Shield 1.0.0 (source-available, not OSI-approved)Proprietary
Self-host priceFree, MIT, no paid tierFreeFreeFree$299 first year, $99/yr renewal
Hosted planNoneDeveloper free (1 user, 5k errors); Team $26/mo annual, $29 monthlyFree up to 1k events/mo; $15/mo small planFree 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 run1—App + Postgres11
DatabaseSQLitePostgres, ClickHouse, Kafka, RedisPostgresSQLite supportedSQLite
Minimum RAMPeak 28 MB in a 10k-event burst (measured)16 GB + 16 GB swap256 MB minimum, 512 MB recommended—1 GB
RuntimeRust + SQLitePython, Kafka, ClickHouse, Postgres, RedisPython (Django)PythonRuby on Rails
Sentry SDK compatibleYesYesYesYesYes
Source mapsYes, via sentry-cliYesYes, via file uploadYes, via sentry-cliYes
iOS crash symbolicationYes, dSYM upload + Swift demanglingYes———
Live updates and TV modeYes, SSE————
MCP serverBuilt in, approval-gatedSeparate server———
iOS appWidgets, 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.

  1. Start the container.

    docker run -d -p 8080:8080 -v openfault:/data ghcr.io/openfault/openfault
  2. Open http://localhost:8080. The setup wizard creates your admin account and first project.

  3. Put the project’s DSN in your Sentry SDK config. Read the install guide →

Keyboard shortcuts

c
Copy the install command
t
Toggle theme
g d
Open the docs
?
Show this list