[ BLOG // 2026-06-26 // 4 MIN ]

Push notifications with inline actions — Orca on your phone

Orca now sends web push notifications to your phone. When an agent needs your input, a phase needs approval, or a mission finishes, you get a notification with action buttons right in it.

ORCA ORCAAIPWAPUSHNOTIFICATIONSMOBILE

When Orca orchestrates several AI agents and a mission runs for hours, you can’t just stare at the dashboard. Eventually you need to step away from the computer — and still stay in the loop.

Orca now supports web push notifications directly on your phone. Not just a “something happened” alert — notifications with inline actions that can be triggered straight from the notification without opening the browser.

What it looks like in practice

An agent finishes a phase, and Orca determines that human review is needed. A notification arrives on your phone:

Mission needs your decision Endpoint refactor: the agent proposed a change that alters the API contract.

Two buttons: Approve and Rerun. No opening the browser, no logging in — the action fires immediately.

The same pattern covers other scenarios:

  • Agent waiting for input — notification with Allow / Reject (for simple permission prompts)
  • Mission stalled — alert that something needs attention
  • Mission completed — completion info with an optional link to the PR

Architecture of the full flow

The system has three layers.

1. VAPID + subscriptions

On first boot, Orca automatically generates a VAPID key pair (Web Push Authorization). This proves that notifications actually come from your Orca instance.

The user opts in via a toggle in account settings. The browser registers a service worker, obtains a push subscription, and Orca stores it — including the mapping to mission owners and admins.

2. Event-bus dispatcher

The core is the PushDispatcher — a single subscriber on the internal event bus. It maps Orca lifecycle events to push payloads:

EventNotification typeInline actions
Review escalation”Mission needs your decision”Approve / Rerun
Agent waiting for input”Agent waiting for answer”Allow / Reject
Mission stalled”Mission stalled”Open
Task blocked”Mission stalled”Open
Mission completed”Mission completed”(tap → open app)

Each notification type collapses on-device via a tag — repeated notifications about the same mission don’t pile up.

3. Service worker with inline actions

Notifications are rendered by a service worker (sw.js) that runs independently of the browser. Unlike standard notifications, the Orca worker doesn’t just display text — it executes actions:

  • ApprovePOST /tasks/:id/approve-gate
  • RerunPATCH /tasks/:id + PATCH /missions/:id (reset phase + resume mission)
  • Allow/RejectPOST /sessions/:id/keys with Enter/Escape

The worker makes HTTP requests directly from the service worker context — no need to open the browser tab. If an action fails, a follow-up notification appears: “Action failed, open the app.”

Security and boundaries

The service worker doesn’t accept any URL data from the payload without validation — everything goes through safeOpenUrl, which only allows same-origin paths or https:// URLs. No javascript:, no data:, no off-origin redirects.

Dead endpoints (404/410) are automatically pruned — if a user unsubscribed or changed devices, Orca silently removes the subscription.

Before sending, the system checks that VAPID keys exist and at least one subscription is registered. If not, push is a no-op — no crashes, no noise.

Why Web Push over other solutions

There were plenty of alternatives — native mobile app, Telegram bot, email. Web Push won because:

  • No app required — just add to home screen from the browser (PWA manifest included)
  • Works on iOS and Android — Apple supports Web Push since iOS 16.4
  • Same instance — notifications come from the same server, no third-party service
  • Inline actions — that’s the key. Standard notifications only inform; Orca lets you act right there

What this changes

Before, you had to watch the dashboard to know if an agent needed your help. Now Orca reaches out to you — and you can decide from your phone, from the couch, from the train.

It’s not about being online all the time. It’s about the system contacting you at the right moment — and being able to respond without switching context.

This is the shift from “a dashboard you watch” to “a system that reaches out to you.” And that’s exactly the kind of interaction that makes AI agents usable in real production.

// ALL_POSTS
BACK TO BLOG