● Server 1.0.0 out now — app coming to Google Play

Your servers text your phone.
Nobody else can read it.

An Android app that receives notifications from a server you run. Every message is sealed with your phone’s own key before it leaves your machine, so Google carries a locked blob and cannot open it. No account with us, no subscription, and a server you can read the source of.

How it works

Three parties. Only the one in your hand can read anything.

🔒

A key per phone

Each phone makes its own X25519 keypair when it pairs, and the private half never leaves it. Your server seals every message separately for every phone using NaCl’s sealed box. A stolen database, a stolen Firebase project and a stolen network capture between them still open nothing.

☁

Your Firebase, not ours

Delivery rides on your free Firebase project. You upload the service-account file once through the web page — no rebuilding the app, no account with us, and no shared infrastructure that could be subpoenaed or switched off.

📱

Built on the device

Google is handed a locked blob and a delivery address. No title, no body, nothing to index. The notification you see is built on the phone, after it opens the box.

📥

One file to run

A single static binary per platform. No runtime to install, no database server, no reverse proxy required. Download it, run it, answer three questions.

🔑

A key per script

Channels group your notifications; a sending key is a password for one script. Revoke one and that script stops — everything else keeps working. Keys keep their history, so you can see when one was last used.

💬

Channels on the phone

The app lists the channels the server says this phone is on, with unread counts, newest message and a pull to refresh. Each server channel becomes its own Android notification channel, so you can silence backups and keep alerts loud.

🔐

Locked at rest

Accounts, history and the Firebase key are encrypted with AES‑256‑GCM under a key file kept outside the database, so a copied database file is worth nothing on its own. Sign-in is a password, an authenticator code and recovery codes.

🔒

Certificates without the pain

The server issues its own certificate authority and the pairing QR carries its fingerprint, so the app trusts that one server and nothing else — no warnings to click past, and no change to your phone’s trust store.

📄

Open source, AGPLv3

The whole server is published. Every claim on this page — that Google sees ciphertext, that no analytics exist, that nothing phones home — is something you can check rather than take on trust.

Get the server

✅ What you need

💻 Sending from your own code

curl -X POST https://your-server:8443/api/v1/send \
  -H "Authorization: Bearer $NOTIPRIVYO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Backup finished","body":"412 GB written, no errors"}'

🛠 The first run

💻 What Windows says the first time

 macOS — one command

cd ~/Downloads && curl -fsSL -o NotiPrivYO \
  "https://git.cyrilina.it/CyriLiNa.IT/notiprivyo-server/releases/download/v1.1.0/NotiPrivYO-$([ "$(uname -m)" = arm64 ] && echo Mac-AppleSilicon || echo Mac-Intel)" \
  && chmod +x NotiPrivYO && ./NotiPrivYO

Simple. Private. Yours.

The server is free and always will be. The app is a one-off.

$4.99once — no subscription
Download the server Ask a question