OpenFault

OpenFault

Official

Docker app from OpenFault's Repository

Overview

Self-hosted, Sentry-compatible error tracker. One container, SQLite inside, under 100 MB RAM. Keep your Sentry SDK, change the DSN. Includes an MCP server for coding agents.

OpenFault

OpenFault

A self-hosted, Sentry-compatible error tracker. One container. Built for agents.

Build status MIT license Docker image

Docs · Roadmap · Feedback

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

FeatureOS        SupportWire        Skcript

License

MIT. See LICENSE.

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/openfault/openfault:0.1.0
Last Updated2026-11-09
First Seen2026-11-09

Runtime arguments

Web UI
http://[IP]:[PORT:8080]
Network
bridge
Shell
sh
Privileged
false
Extra Params
--health-cmd="/openfault healthcheck" --health-interval=30s

Template configuration

WebUI PortPorttcp

Web UI, API and Sentry ingest.

Target
8080
Default
8080
Value
8080
DataPathrw

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
Base URLVariable

Public URL (https://errors.example.com) used in DSNs and emails. Leave empty to use the Host header.

Target
OPENFAULT_BASE_URL
Trust proxyVariable

Set to 1 only behind your own reverse proxy.

Target
OPENFAULT_TRUST_PROXY
Setup tokenVariable

Optional pre-set one-time setup token. Otherwise read it from the container log.

Target
OPENFAULT_SETUP_TOKEN