Somebody pinged you. Nobody knows who.

Whodunit is a small, self-hosted form. A visitor writes a message, your phone buzzes. No emails, accounts, cookies or IP addresses are collected.

CASE 0417
To:
You
From:
Whodunit Ping · ntfy now
New anonymous message

Open source

Read every line on GitHub.

Self-hosted

Runs on your own server.

Zero telemetry

Nothing phones home.

No IP logging

Not stored, not forwarded.

Private by design, not by promise.

A visitor writes

Your form takes text and nothing else. No login, no email field, no cookie.

Your server forwards it

The message goes to your ntfy topic. The sender’s address is dropped before anything is written.

Your phone buzzes

You read the message. There is no sender to look up, so there is nothing to leak.

Self-host in minutes.

Run with Docker
docker run -d -p 3000:3000 \
  -e NTFY_TOPIC=my-secret-ping-topic \
  ghcr.io/beebombshell/whodunit:latest

Or deploy with Cloudflare Workers (npx wrangler deploy) in 60 seconds.

Embed <whodunit-form>
<script type="module" src="https://unpkg.com/@whodunit/widget"></script>
<whodunit-form endpoint="https://ping.example.com/ping"></whodunit-form>

Works on Hugo, Astro, Next.js, Ghost, or vanilla HTML.

Supported Push Providers:
✓ ntfy.sh (primary) ✓ Pushover ✓ Telegram ✓ Discord ✓ Email

The usual suspects.

Point at any of them. You can’t, and neither can we.

01
02
03
04