Alerts from your own devices
Setting this up takes about a minute. The slow part is not the software — it is deciding what to call yourself, because the handle ends up on a poster and cannot be changed afterwards.
What this actually looks like
A leak sensor that sends an email is a wet floor with a paper trail. One sealed channel for the household, one HTTP call from Home Assistant, Node-RED or a shell script, and the alert lands on every phone in the house at once.
How you would set it up
- Create a private channel for the house and invite the people who live in it.
- Call the API from your automation — one POST, one key, no SDK to install.
- Nothing about your home leaves it except the sentence you wrote. There is no device inventory here, and no location.
Everything the console does, from your own code
A REST API you can read in an afternoon: one key, one POST, one alert. Credentials carry scopes, so the cron job that sends can be forbidden from deleting a channel, and a key can be bound to a single channel. Webhooks push sends, cancels and subscriptions to your endpoint with a signature you verify, instead of you polling us for something you already know. There is also an MCP server, so an assistant can be connected over OAuth — no pasted keys, revocable per client, and narrowed to the scopes you approve on a consent screen you read first.
Private means sealed, not merely unlisted
A private channel is not one that is simply missing from a directory. It requires an invite code both to subscribe AND to read anything about it, and a request without one gets exactly the same “not found” as a handle that never existed — because a different answer would let anybody confirm that a school’s or an ops team’s channel exists by guessing its name. Invite codes can carry a use limit and can be revoked; revoking is a timestamp and by default removes nobody who already joined.
Nothing that could identify anybody
Subscribing needs no account, no email address and no phone number. What a subscription actually holds is a random identifier the app generated, a platform, an app version, a language and a time zone — coarse enough that hundreds of millions of people share one. There is no name, no contact detail, no advertising identifier and no location, and there is no export that would let an operator build one. You cannot leak a list you never collected.
Questions, answered plainly
Is there an API?
Yes — the same one the console uses, so anything you can do by hand you can automate. Scoped keys, signed webhooks, and an MCP server if you want an assistant to do it.
Can somebody find my private channel by guessing the name?
No. A sealed channel answers a request without an invite code with exactly the same “not found” that a nonexistent handle gets. There is no response that distinguishes “this exists but you may not see it” from “this does not exist”, because that difference is itself a leak.
What do you collect about somebody who subscribes?
A random identifier the app generated, a push token, the platform, the app version, the language and the time zone. No name, no email address, no phone number, no location, and no advertising identifier. Subscribing needs no account at all.
Do subscribers need an account?
No. They install the app, subscribe to a handle, and that is the whole of it. Only the person running the channel signs up for anything.
Say it once. Every subscribed phone gets it.
Free up to 100 subscribers, no card to start, and the handle is yours permanently.
Start a channel