AI NewsDev toolsAnnouncement

Boop is a self-hosted error inbox with read-only MCP for agents

Boop is an MIT-licensed error notifier that sends pushes from your own server to Apple's APNs with no hosted relay, has reached 733 stars and 35 forks in nine days, and supports the Sentry ingest protocol so existing SDKs can send to it after one DSN setting is changed.

AI News

Editorial2 min read

LinkedInX
GitHub social card for the chrisgreg/boop repository

Image: GitHub

Why it mattersA team paying for Sentry mainly to get its phone push can now run one Go binary, keep the events on its own database, and let a coding agent query them over MCP.

Boop is a self-hosted notification inbox for developers, written in Go with an embedded Svelte UI and a SwiftUI iOS app. Applications post events to a project API key, the server stores them in SQLite, and it pushes directly to Apple's APNs using your own .p8 key. There is no hosted relay, no account system, and no telemetry. The repository is MIT-licensed, was created on 28 August 2026, and has reached 733 stars and 35 forks.

The pieces you actually run

One Go binary, one SQLite file, one Docker container. The web UI is built into the binary. Static builds exist for Linux, macOS, and Windows on amd64 and arm64, and the SQLite driver is pure Go so CGO_ENABLED=0 works everywhere. The push carries only the title, body, and event id, and the phone fetches the full event from your server with its own device credential.

Events accept five levels (info, success, warning, error, critical), a fingerprint for grouping repeat occurrences into one row (KeyError x47), and up to three actions that render as buttons on the notification itself and open a URL or an app scheme. Sensitive keys such as password, token, api_key, and authorization are replaced with [REDACTED] before storage, and the list is extendable from Settings.

Works with Sentry SDKs

Boop implements the Sentry envelope endpoint that every current server-side Sentry SDK uses, including gzipped bodies. Point an existing Python, Node, Go, Ruby, or PHP SDK's DSN at your Boop host with a project API key as the public key and reports arrive with no code change. Exceptions become titles, fatal maps to critical, and Sentry's grouping fingerprint is preserved so silence rules work per error group. Transactions and sessions are accepted and ignored.

MCP endpoint for the agent

The server exposes a read-only Model Context Protocol endpoint at /mcp over Streamable HTTP. It provides five tools: list_projects, list_events with filters and a time window, search_events, get_event for the full payload, and get_event_group for every occurrence of a fingerprint. There is no model inside Boop; the endpoint just serves the structured context that a coding agent can query with prompts like "what errors happened overnight" or "what started failing after 14:00". A bearer token, a device credential, or the admin login can authorise the endpoint, and Settings has a switch that turns it off.

A hosted error tracker's mobile app is an interface the coding agent cannot read from. A local boop.db next to a Go binary is a single record of errors that an agent can query in every session, which is the pattern the README calls out with a Claude MCP install line.

The scope is narrow on purpose. Boop covers events, grouping, and push. It has no source maps, no session replay, no performance monitoring, and no user tracking. The best fit is a team using Sentry mainly for the phone push and the error grouping who wants those two things on its own database, at the cost of building and signing the iOS app itself and managing an APNs .p8 key.

Source

chrisgreg/boop on GitHub

This item was written by an AI system from the linked source. Reveneau is responsible for what it publishes.

Share
LinkedInX
Start a project