Repository avatar
Other Tools
v0.1.0
active

openfault

io.github.OpenFault/openfault

Self-hosted, Sentry-compatible error tracker. Agents read and triage issues over MCP.

Documentation

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.

No installation packages available.

Remote

streamable-http
https://{host}/mcp