<- all tokdocs

Boop Cannot Tell You a Server Went Down, and Its Only Phone Client Is an iPhone App You Sign Yourself

Watch on TikTok

View on TikTok ->

Boop receives events that your own code sends it, so it has no way to notice a server that has stopped running, and the "phone" in "straight to your phone" is an iPhone running an app you compile and sign with a paid Apple Developer account. The artifact is a 25-second vertical screen recording, 720x1280 HEVC at 30 fps with AAC stereo audio at 44.1 kHz, 792,867 bytes on disk, with ffprobe reporting 25.73 seconds of video and 25.76 seconds of audio. TikTok dates the post 2026-10-17 from uploader howtowebdev, and the caption links github.com/chrisgreg/boop. At capture the counters read 21,700 views, 1,076 likes, 8 comments, 115 reposts, and 960 saves. I read all 13 extracted frames and all 70 transcript words, and I kept all five Whisper segments because each starts before the audio ends. There is no presenter. Frames 1 and 2 show the GitHub file tree for chrisgreg/boop with the tabs reading Issues 1 and Pull requests 3, and commit messages for feat: v1.3.0 (Sentry SDK compatibility), feat: v1.2.0 (grouping), "Cleaner iOS icons", "Server and FE with Docker", and "Add Dokploy specific" compose file. Frames 3 through 13 scroll the README: a Boop logo, three badges reading "build passing", "Go v1.27.0", and "license invalid", the tagline "A tiny, self-hosted notification inbox for developers", a curl call to /api/v1/events with a Bearer key, an architecture diagram, a "What is in the box" table, and the Docker and binary quick starts. Every frame carries a caption of the narration with one word highlighted in purple and a "Boop" label pinned near the top.

"A server goes down" is the one example Boop cannot deliver

The narration lists three triggers: "when your background jobs fail, a new user signs up, or a server goes down." The first two fit the design. The README describes the flow as "Your apps POST events with a project API key. The Go server redacts and stores them in SQLite, then pushes straight to Apple's APNs." A failing job or a signup handler can call POST /api/v1/events on its way out. The README's own examples are "Backup complete", "Deploy complete", "Payment received", and a KeyError with a stack trace, plus a shell function that wraps pg_dump and a GitHub Actions step with if: always().

A server that has gone down sends nothing. I searched the README for heartbeat, uptime, poll, monitor, and dead-man's-switch features and found none. The only health-related endpoints are GET /health and GET /api/v1/status, and both describe the Boop server's own state. Neither checks the systems that feed it. Nothing in the API table or the four-version CHANGELOG describes Boop checking on a host. To get a "server down" alert you would need a separate watchdog that notices the silence and posts the event, which the video does not mention. I am correcting the video on this point.

"Straight to your phone" means an iPhone app you build and sign with a $99 account

The README lists the iOS app as "SwiftUI, iOS 26, you build and sign it" and ios/README.md opens with: "You build and sign it yourself with your own Apple Developer account; nothing is distributed through Boop infrastructure." It requires Xcode 26 and iOS 26, and it states that "Push notifications do not work in the simulator," so you need a physical iPhone plugged into a Mac.

The account has to be a paid one. Apple's Supported capabilities (iOS) table marks "Push notifications" as available to Apple Developer Program and Apple Developer Enterprise Program members and leaves the free "Apple Developer" column empty; the page's legend calls both of those "paid" programs and says free account holders "can't distribute apps." Apple's program page lists the Apple Developer Program at "$99 annual membership." The server side also needs an APNs .p8 key, a Team ID, a Key ID, and your bundle ID, per the README's Configuration and Apple setup sections.

There is no Android client. Issue #3, opened 2026-08-30 and still open with zero comments, asks for Android via FCM and for Web Push. PR #2 (Web Push) and PR #4 (outbound webhooks) were opened the same week and remain unmerged. If you skip APNs entirely, the README says events "are stored and shown in the UI but pushes are skipped," which leaves you with a web inbox and nothing on a phone.

"Dependency free" describes the binary, and "private" holds up

The README's exact phrase is "a static, dependency-free binary for Linux, macOS and Windows (amd64 and arm64)," and I confirmed the v1.3.0 release ships six archives plus checksums.txt. server/go.mod declares go 1.27.0 with two direct requirements, modernc.org/sqlite v1.57.0 (pure Go, which is why the README says CGO_ENABLED=0 builds work everywhere) and github.com/modelcontextprotocol/go-sdk v1.7.0. Go 1.27.0 was released 2026-08-19 per go.dev's release history, nine days before this repository was created, which matches the badge in frame 3.

That phrase covers the process on your server. The notification path runs through Apple's APNs, which is a third-party cloud service with its own credentials, so "dependency free" is narrower than the narration implies. The privacy claim survives: the README says "There is no hosted relay, account system, or telemetry," the push carries only title, body, and event id, the iOS app fetches the full event from your server, only SHA-256 hashes of credentials are stored, and eleven key names (password, token, api_key, authorization, and so on) are replaced with [REDACTED] before storage. One caveat the video skips: admin auth is off until you set BOOP_ADMIN_USER and BOOP_ADMIN_PASSWORD, and the README tells you to run it open "only behind your own proxy, Tailscale, or VPN."

The repo is a one-week build that has been quiet for seven weeks

The GitHub API reports chrisgreg/boop created 2026-08-28T15:38:33Z, last pushed 2026-08-30T11:34:44Z, 1,063 stars, 54 forks, and 4 open issues (one issue and three pull requests, matching the Issues 1 and Pull requests 3 tabs in frames 1 and 2) as of 2026-10-19. The CHANGELOG dates v1.0.0 to 2026-08-23, v1.1.0 to 2026-08-28, v1.2.0 to 2026-08-29, and v1.3.0 to 2026-08-30. The first commit is titled "Init" on 2026-08-23, so the commit history predates the public repo by five days. Everything the README describes shipped between 2026-08-23 and 2026-08-30, and no commit has landed since, including PR #5, an iOS fix opened 2026-09-08.

The "license invalid" badge in frames 3 through 5 was a badge glitch at recording time. The LICENSE file reads "MIT License, Copyright (c) 2026 Chris Gregori," the GitHub API reports MIT, and the same shields.io endpoint returned "MIT" when I fetched it. The author's GitHub profile gives the name Chris Gregori, location London, and a bio listing Elixir, Phoenix, LiveView, Svelte, and React, which lines up with the Svelte web UI and the two Elixir client libraries. The four client libraries the README links (boop_ex, boop_error_tracker, boop-node, and the community laravel-boop from Solution Forest) all exist, all carry MIT licenses, and were all created between 2026-08-28 and 2026-08-29.

What the narration leaves out

Two features in the README change the "simple web request" pitch. Since v1.3.0, Boop accepts the Sentry SDK envelope format at /api/{id}/envelope/, so any server-side Sentry SDK can report to Boop by changing its DSN to https://boop_proj_...@your-host/1 with no code changes. Since v1.2.0, it exposes a read-only Model Context Protocol endpoint at /mcp with five tools (list_projects, list_events, search_events, get_event, get_event_group), gated by a BOOP_MCP_TOKEN, so an AI agent can ask what failed overnight. The README also documents fingerprint grouping, per-rule silences, up to three action buttons per push, and a 90-day default retention. None of this appears in the 25 seconds, and all of it is more specific than "monitor their own applications."

Key Takeaways

  • Boop is an event inbox your code posts to, so it cannot notice a server that has stopped running; the video's "a server goes down" example needs an external watchdog that Boop does not ship.
  • The only phone client is an iOS 26 SwiftUI app you compile in Xcode 26 and sign with a paid Apple Developer Program membership ($99 per year per Apple), because Apple's capability table reserves push notifications for paid tiers.
  • "Dependency free" is the README's description of the static Go binary; the push path depends on Apple's APNs, a .p8 key, and a Team ID.
  • The privacy claim checks out: no hosted relay, no account system, no telemetry, hashed credentials, and redaction of eleven sensitive key names before storage.
  • The repo shipped v1.0.0 through v1.3.0 between 2026-08-23 and 2026-08-30 and has had no commits since, with three PRs (Web Push, webhooks, an iOS fix) and an Android request open as of 2026-10-19.
  • The "license invalid" badge on screen was a transient badge error; the LICENSE file, the GitHub API, and shields.io all report MIT.

Resources

  • chrisgreg/boop on GitHub establishes the README text quoted above, the MIT license, the 2026-08-28 creation date, the 2026-08-30 last push, and the 1,063 stars, 54 forks, and 4 open issues as of 2026-10-19.
  • ios/README.md establishes the self-build and self-sign requirement, Xcode 26 and iOS 26, and that pushes do not work in the simulator.
  • CHANGELOG.md establishes the four release dates from 2026-08-23 to 2026-08-30 and which version added Sentry compatibility, MCP, grouping, and silences.
  • Releases establishes that v1.3.0 ships six platform archives plus checksums.txt and that v1.2.0 shipped no binaries.
  • Issue #3: Android App establishes that Android and Web Push are requested and unbuilt, with no maintainer reply as of capture.
  • Apple: Supported capabilities (iOS) establishes that push notifications are available to paid Apple Developer Program and Enterprise Program members and unavailable on the free tier.
  • Apple Developer Program establishes the $99 annual membership figure.
  • Go release history establishes that Go 1.27.0 was released 2026-08-19.
  • chrisgreg's GitHub profile establishes the author's name as Chris Gregori, based in London.

Published October 17, 2026. Writeup generated from a favorited TikTok.