Skip to content
Conduit

mcp server

openfault

Self-hosted, Sentry-compatible error tracker. One container, SQLite, MCP-first.

OpenFault/openfaultcommunitylistedunreviewed

Set up

Hosted by its author. Add the URL to your agent — nothing to install.

~/Library/Application Support/Claude/claude_desktop_config.json
Settings → Connectors → Add custom connector

Name: openfault
URL:  https://{host}/mcp

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Nov 8, 2026

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.

↑↓ navigate openesc close