OpenFault
OfficialDocker app from OpenFault's Repository
Overview
Readme
View on GitHub
OpenFault
A self-hosted, Sentry-compatible error tracker. One container. Built for agents.
Early development. Not ready for production yet.
Why
- Your errors, your server. One container, SQLite inside, under 100 MB of RAM.
- Drop-in for Sentry. Keep your SDK. Change the DSN.
- MCP-first. Coding agents read and triage issues through the same handlers the UI uses.
Quick start
docker run -d --name openfault -p 8080:8080 -v openfault-data:/data ghcr.io/openfault/openfault:latest
Or docker compose up -d with the docker-compose.yml in this repo.
Open http://localhost:8080. A short wizard creates your organization, owner and first project, and hands you a DSN. Swap it into your Sentry SDK. Done.
In production, put it behind HTTPS and set OPENFAULT_BASE_URL. Upgrades are pull and restart.
Features
- Sentry SDK ingest, live issues, releases and breadcrumbs.
- MCP server for Claude Code, Cursor and friends.
- Alerts by email, Slack, Discord, Teams and more.
- iOS push through a relay: hosted, or your own.
- Daily S3 or Cloudflare R2 backups.
Configuration, env vars and the full guide live at openfault.dev.
iOS crash symbolication
Upload dSYMs and native sentry-cocoa crashes resolve to function, file and line. Add a Run Script build phase (Release), with a write API token from Settings:
cd "$DWARF_DSYM_FOLDER_PATH" && for d in *.dSYM; do
zip -qr "/tmp/$d.zip" "$d"
curl -fsS -H "Authorization: Bearer $OPENFAULT_TOKEN" -F "file=@/tmp/$d.zip" \
"https://errors.example.com/api/0/projects/<org>/<project-slug>/files/dsyms/"
done
One dSYM per request keeps each upload under the 20 MiB request cap. See and delete uploads under Settings → Projects → your project → Debug files.
Already on Sentry's tooling? sentry-cli uploads chunked (no size cap per dSYM); Mach-O only, sources are not stored, so leave off --include-sources:
SENTRY_URL=https://errors.example.com SENTRY_ORG=<org> SENTRY_PROJECT=<project-slug> SENTRY_AUTH_TOKEN=$OPENFAULT_TOKEN sentry-cli debug-files upload "$DWARF_DSYM_FOLDER_PATH"
iOS app
Coming soon to the App Store. Triage from your phone, with push alerts and Home Screen widgets. Pair it from Settings → Devices.
Roadmap and feedback
See what's next on the roadmap. Ideas, bugs, rough edges: tell us on the feedback board.
Contributing
Pull requests are welcome. Small ones merge fast. Start with CONTRIBUTING.md, and DEVELOPMENT.md gets you running locally.
Sponsors
License
MIT. See LICENSE.
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/openfault/openfault:0.1.0Runtime arguments
- Web UI
http://[IP]:[PORT:8080]- Network
bridge- Shell
sh- Privileged
- false
- Extra Params
--health-cmd="/openfault healthcheck" --health-interval=30s
Template configuration
Web UI, API and Sentry ingest.
- Target
- 8080
- Default
- 8080
- Value
- 8080
SQLite database and generated secret. Must be owned by uid 65532 (chown 65532:65532 on first run).
- Target
- /data
- Default
- /mnt/user/appdata/openfault
- Value
- /mnt/user/appdata/openfault
Public URL (https://errors.example.com) used in DSNs and emails. Leave empty to use the Host header.
- Target
- OPENFAULT_BASE_URL
Set to 1 only behind your own reverse proxy.
- Target
- OPENFAULT_TRUST_PROXY
Optional pre-set one-time setup token. Otherwise read it from the container log.
- Target
- OPENFAULT_SETUP_TOKEN