AgentNotify
Hosted transport · optional

The hop that exists only to reach your phone.

Every other channel hands your notifications to somebody else's product. Relay is the alternative: one hop built for this single job, that your computers send to and your phone reads from — with the payload sealed for the receiving device before it leaves your machine.

There is no server to install and no address to enter. Relay is one more opt-in channel, and AgentNotify works fully without it.

Your computers
AgentNotify Relay
Your phone
envelope

Sealed on your computer

The payload is sealed per recipient device before anything leaves the machine.

Setting it up

No tokens typed anywhere.

The installation credential is delivered to the waiting computer, never to the browser, and is written straight into the platform secret store without ever being displayed.

Approve a computer in the browser
Pairing follows the OAuth device authorization grant — the handshake you already use to sign a CLI or a TV into an account. AgentNotify shows a short code; you approve it in the relay console. Nothing is typed between the two.
Scan once per phone
The QR code is a short-lived, single-use challenge, not a credential. The phone's device credential is minted only when it presents that challenge.
Every paired computer can reach it
A phone belongs to your relay account rather than to one machine, so a second laptop needs no second scan.
Answer from the phone
A permission, a choice, or a short text goes back through the relay; the running broker picks it up and returns it to the waiting host adapter.
What the relay can see

Ciphertext, and the metadata needed to deliver it.

Notification and interaction payloads are sealed per recipient device with X25519 and XChaCha20-Poly1305 before they leave your machine. The relay stores the sealed bytes, is not a decryption client, and its operator console renders delivery metadata only.

It does see what it must to route: which installation sent an envelope, which device it is for, the key id, timestamps, sizes, and delivery state — plus your sender name, if you set one. A device that has never registered a public key is skipped rather than sent in the clear.

Scope of the claim
The envelope format has not had an independent cryptographic review, and the mobile implementation is Android-first. Sealing is implemented on both sides and checked against shared test vectors — the .NET adapter reproduces the relay's output byte for byte, and altering any bound field fails authentication — but treat confidentiality against the relay operator as tested rather than audited. Answers from the phone are currently plaintext to the relay; they are authenticated, then revalidated by the broker for digest, nonce, expiry, and first-wins state. Sealing answers remains future work.
A transport, not a system of record
Local AgentNotify history stays authoritative. A relay that is unreachable never blocks or loses a local notification — it just means the copy on your phone arrives later, or not at all.
Your choice, per route

The message body only leaves if you send it.

Each route carries its own include notification message off-device switch. Leave it off for anything you would not want stored outside your computer, whatever the transport — and the title and type still reach you.