Quick links

Introducing Zona

Stay tuned,Stay Notified.

Your machines have a lot to say. Keep the conversation private.
Separate source keys. An inbox tied to your account. No ads or cross-app tracking.

Watch an alert land

Try an example: tap a machine to preview its alert in the inbox and see the matching request below.

Your machines · tap one to send

iPhone · Inbox

  1. home-pcrendernowRender finishedfinal-cut.mp4 is ready on the desktop. Preview attached.
  2. ci-runner-04build1mHigh severity. Build failed on mainauth.spec.ts: 3 tests failed after the dependency bump.
  3. nas-backupbackup3mLow severity. Nightly backup completeOffsite copy verified and checksums match.
What prod-api sent
await fetch("https://gerncrjtrdjtjvybvseb.supabase.co/functions/v1/notify", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.ZONA_SOURCE_TOKEN}`,
    "Idempotency-Key": `incident-${incident.id}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    title: "5xx spike on /checkout",
    body: "Error rate stayed above the threshold for five minutes.",
    category: "incident",
    severity: "critical",
    todo: ["Drain the queue", "Restart the worker", "Verify the dashboard"],
  }),
});

202 Accepted{ "notificationId": "87c4215a-…", "idempotentReplay": false, "pushQueued": 1 }

Zona is for you if something runs without you

An AI agent, a build, a backup, a training run: if it keeps working after you walk away, Zona is where it reports back.

  • AI agent users

    Step away while an AI agent works. Zona tells you when it needs a permission or an answer, and when it is done.

    Example alert from dev-laptop. From an agent.High severity. Coding agent needs youWaiting for you in billing-api.
  • Developers

    Builds, deploys, test runs and long scripts let you know how they went, so you can stop watching a terminal.

    Example alert from ci-runner-04. Category deployLow severity. Deploy finishedapi v2.4.1 is live and the smoke tests passed.
  • Indie makers and solo founders

    Sign-ups, payments and failed webhooks from the product you run on your own, without opening a dashboard.

    Example alert from shop-api. Category salesNew yearly subscriberCheckout went through. Welcome email sent.
  • Self-hosters and home labbers

    Backups, disk space and the server under the desk. A check-in speaks up when a scheduled job misses its run, fails or never finishes.

    Example alert from nas-backup. From a check-in.Critical severity. Nightly backup missed its check-inNo check-in after its 02:00 run.
  • Data scientists and ML engineers

    Know when a training run or overnight job finishes or fails, with the loss chart attached.

    Example alert from gpu-box. Category training. With an image.Medium severity. Training run stoppedOut of memory at epoch 12. Loss chart attached.
  • Video and 3D creators

    Renders and exports that take hours tell you when they are done, with a frame to check.

    Example alert from studio-pc. Category render. With an image.Export finishedfinal-cut-v3.mp4 is ready. First frame attached.

Your first alert in three steps

No SDK and no agent to install. A source token and one HTTPS request are everything a sender needs.

  1. 1.0

    Get Zona on iPhone

    Install Zona from the App Store. You can start as a private guest and set things up in a minute.

  2. 2.0

    Create a source and copy its token

    Open Sources, name the machine or app that will send, and copy its token. Zona shows the complete token only once, so put it straight into an environment variable or CI secret.

    zona_live_followed by your secretshown once
  3. 3.0

    Send one request

    POST a title and body with the token and an Idempotency-Key. A 202 means the alert is stored in your inbox.

    POST /functions/v1/notify 202 Accepted

Follow the quickstart

Let your AI agent tell you when it is done

The Zona MCP server gives AI agents and other stdio hosts six tools, and the zona command in the same download tells your phone when any coding agent needs you. It reads your source token from a local file and never prints it, so the agent can reach your phone without ever seeing the secret.

zona_notify
Send an alert with a title and body, plus optional category, severity and up to five PNG, JPEG or WebP images.
zona_ping
Send a short test notification to confirm the token and the /notify path work.
zona_status
Check that a source token is configured. It never returns the token.
Download MCP

v1.2.2 · MIT · Node.js 20+

MCP host config
{
  "mcpServers": {
    "zona": {
      "command": "node",
      "args": ["/absolute/path/to/zona-mcp/server.mjs"]
    }
  }
}

Token file

~/.zona/token

One line, the zona_live_ token from Sources. On Windows it lives at %USERPROFILE%\.zona\token, or set ZONA_SOURCE_TOKEN.

What arrives on your phone

Everything a sender can set is a documented field. Everything else, from the source name to the sound, is decided by the token and your settings in Zona.

Zona capabilities, what each means, and the API field or app setting that controls it
CapabilityWhat it meansField or setting
SeverityFour levels put a coloured ring around the alert’s source, thicker the more urgent it is. While the alert is unread the ring pulses, faster for more urgent levels, and it stays still with Reduce Motion on. Delivery follows the owner’s settings.severityJSON field
CategoriesA short label of up to 80 characters, such as build, backup or deploy, to tell alerts apart at a glance.categoryJSON field
ChecklistsUp to 20 follow-up items. You tick them off or remove them on the phone; ticked state survives a retry.todoJSON field
ImagesUp to five PNG, JPEG or WebP images per alert (1 MiB on a guest account, 5 MiB on Standard, 10 MiB on Zona Plus), with a swipeable preview and a full-screen zoom viewer.attachmentMultipart part
Context dataA JSON object of up to 4 KiB stored with the alert, for build IDs, branches or anything your tools need.dataJSON field
Per-source soundsEach source gets its own notification sound, so you can hear which machine spoke. Senders cannot override it.Sources › Notification soundIn the app
Quiet hoursAccount and per-source schedules skip the push and the in-app banner while keeping the alert in your inbox. Zona Plus members can allow critical alerts through each schedule.Settings › Quiet hoursIn the app
In-app bannersWhile Zona is open, a new alert drops in as a banner at the top of the screen, and several at once combine into one. Quiet hours and hidden previews still apply.Settings › In-app bannersIn the app
Safe retriesRetry with the same key and content and Zona returns the original alert with 200. No duplicate is created.Idempotency-KeyHTTP header
Key rotationA source can hold several keys you pause or revoke one at a time, while its name, sound and history stay put.Sources › Access keysIn the app
Inbox toolsSearch, filters that combine several sources and severities with unread, pinned or recent alerts, saved filters, pinning, and repeats folded into one thread.InboxIn the app
Live Status and widgetNative on phone, plus an unread widget.Settings › Live StatusIn the app

Every field in the API reference

Limits in writing. Keys you can revoke.

Inbox retention for guest, Standard and Zona Plus accounts. Images follow their alert.
1 / 7 / 30days
Accepted requests per standard account across all sources in a rolling minute, and 300 a day. Guest is 1 a minute, Zona Plus 10. Past that, Zona answers 429 with Retry-After.
5per minute
PNG, JPEG or WebP files per alert, sharing 1 MiB on Guest, 5 MiB on Standard or 10 MiB on Zona Plus.
5images
A new source key is shown once. Zona keeps only its SHA-256 hash and cannot show it again.
1reveal per key

Documented defaults. The retention shown in Settings is authoritative for your account.

  • Hashed source keys

    Zona stores a SHA-256 hash of each key and derives the source and owner from it, so a sender cannot pose as another source.

  • Isolated accounts

    Supabase Auth and row-level security separate every account. Senders reach one bounded endpoint and never the database.

  • No ads, no tracking

    Zona does not sell personal data, serve behavioural advertising, or track you across other companies’ apps or websites.

  • Yours to delete

    Revoke one key, delete a single alert, or permanently delete your Zona account and its app data from Settings.

How it compares

The same jobs, and where they differ.

Scroll sideways to compare all three columns.

Zona Notify, Provider 1, and Provider 2
FeatureZona NotifyProvider 1Provider 2
AuthenticationEach machine has its own bearer key. Zona keeps only the SHA-256 hash, and the source is taken from that hash.Public topics by default; protected topics and access tokens are available.An application token plus a user or group key.
Revoking one machineRevoking one machine leaves the other sources working.Dedicated access tokens can be revoked separately. A public topic name alone is not a credential.Separate application tokens can isolate senders. Replacing a shared token requires updating its senders.
Native on phoneNative on phonePhone apps with push notifications and a topic inbox.Phone apps with push notifications and message history.
Action buttonsAction buttons use an action key scoped to that device and its sign-in.Notification actions can open URLs or make HTTP requests with configured headers.Supplementary links and emergency acknowledgement.
Check-insA job checks in on a schedule. If it misses, Zona raises an alert.External heartbeat-monitor integrations.Your monitoring service detects missed runs and sends the alert.
Resolving an alertWhen the job reports again, Zona marks that alert resolved.Send an update, clear or delete event; client support varies.Emergency retries can be cancelled through the API.
MCP serverA native MCP server, so an agent can reach your phone without a hand-written request.Third-party MCP servers are listed in its integrations.Its documented integration interface is an HTTP API.
Agent status alertsAn alert when an agent is waiting. The phone does not approve the tool or the pull request.Your agent or integration sends a message when it needs you.Your agent or integration sends a message when it needs you.
Inbox syncThe inbox is stored, and it stays in step across the owner’s devices.Server cache, 12 hours by default; retention is configurable.Device-local message history with notification dismissal sync.
Ring until seenOn Zona Plus, opt in per source to repeat high or critical alerts until opened, pinned, deleted or resolved. Your chosen repeat limit applies, with a maximum of 30 minutes.Repeats are managed by the sender or an integration.Emergency priority repeats until acknowledged or expired, included with app licensing.
Critical alertsBuilt, and waiting on the platform permission. Switched off until then, so a critical alert does not bypass Do Not Disturb or the mute switch today.iOS critical-alert support is listed as unreleased in its current release notes.Available on iOS with user permission.
Replay protectionEach ingest is tied to an Idempotency-Key. Send one and a repeat returns the stored alert; if you leave it out, Zona derives one.Sequence IDs support notification updates, rather than deduplicating request retries.The documented send API has no idempotency-key parameter.

Questions people ask first

My script got a 202, but no banner showed up. Did the alert arrive?

Yes. A 202 means the alert is stored in your inbox. The banner can still be skipped by quiet hours, by push being turned off, or because the phone has no notification permission. If Zona is open when the alert arrives, Zona can show its own banner even with push off. Quiet hours hold it too, unless you allow critical alerts through on Zona Plus. Check In-app banners in Settings, then copy the safe diagnostics from Settings → App Status if something looks wrong.

What happens when my job retries after a timeout?

Send the same Idempotency-Key with the same content. Zona returns the original alert with a 200 and creates no duplicate. Minting a new key on every retry is what causes double alerts.

I lost a source token. Can Zona show it to me again?

No, Zona only keeps a hash of it. Add a new key to the same source in Sources, update the sender, then revoke the old key. The source keeps its name, sound and history.

More answers in Support

Stay tuned, Stay Notified.

Put Zona on your iPhone, create a source, and the next thing your machines have to say will be waiting for you.