Self-hosted error tracking

Self-hosted error tracking.

Run the error tracker yourself and your stack traces never leave your servers. Your apps keep the Sentry SDKs; only the DSN changes.

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 · Why

Why teams self-host.

Data
Stack traces carry user IDs, URLs and request bodies. Self-hosted, they stay on your disk.
Cost
No per-event pricing. A noisy release costs you disk, not an invoice.
Control
You set retention, scrubbing, backups and who gets access.
The catch
You run it. Pick a tool small enough that running it is boring. What Sentry self-hosted needs →
1 GB2 of 3 fit
  • OpenFaultFits
    1 containerRust + SQLite

    10 MB idle, 28 MB peak (measured)

  • Sentry self-hostedNeeds 16 GB
    Many servicesPythonPostgresClickHouseKafkaRedis

    16 GB RAM + 16 GB swap minimum

  • GlitchTipFits
    App + PostgresApp · DjangoPostgres

    256 MB minimum, 512 MB recommended

Log scale. Dashed line: 100 MB. Solid line: your server. Minimums from each project’s docs; OpenFault measured on Apple M5, macOS 27, 2026-11-06.

02 · How OpenFault does it

One container. One volume.

A Rust binary with SQLite inside. No Redis, Kafka, Postgres or ClickHouse. Free, MIT, no paid tier, built by Skcript.

Ingest
The Sentry envelope protocol, so the official SDKs post to it unchanged.
Memory
Peak 28 MB RSS during a 10k-event burst across 3 projects (3,000 accepted, 7,000 rate-limited; tests/load.rs) (Apple M5, macOS 27, 2026-11-06).
Backups
Everything lives in /data. Copy the volume or back up daily to S3 or R2.
Agents
MCP built in. Agents can triage; a person approves before they read stacks or start a fix.
Who should pick another tool
Teams that need tracing, replay or a production-ready release today. See all alternatives.

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.

What is self-hosted error tracking?

An error tracker you run on your own server. Your apps send crashes and exceptions to it instead of to a SaaS, so stack traces, user data and costs stay with you.

Why self-host error tracking?

Data stays on your infrastructure, there are no per-event bills, and you control retention. The trade-off is that you run and back up the server yourself.

What is the lightest self-hosted option?

Single-container tools with SQLite: OpenFault, Bugsink and Telebugs. OpenFault does not need Postgres, Redis or Kafka. Sentry self-hosted needs 16 GB of RAM plus 16 GB of swap.

Do I need error tracking for a small project, or are server logs enough?

Logs are enough until you stop reading them. A log holds what you chose to write down, and nobody is told when a line says something broke. An error tracker groups the same crash into one issue with its stack trace and alerts you when it happens, so you hear about it before a user emails you. OpenFault is free and MIT-licensed, runs as one container with SQLite, and keeps the Sentry SDKs you already use. The free native iOS app can push an alert with Resolve and Mute on the notification, once you opt in to push. It is in active development and not production ready yet, so run it next to your current setup first.

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