EAP v0.1 · Apache 2.0

Every device. Every LLM. One protocol.

EAP is the universal coordinator for cross-device LLM action. iPhone, Watch, Mac, browser, home — any LLM can reach any device under a unified consent layer.

If MCP connects LLMs to software tools and PAP connects them to behavioral state, EAP connects them to every actuator in the user’s real life. Hardware, not just software. Action, not just answer.

01 · The insight

Every device is already an edge. None are addressable.

Your iPhone has HRV, motion, mic, camera, haptics, push, speaker, an app fleet. Your Watch has HRV, haptics, complications, Live Activities. Your MacBook has screen, Notifications Center, Shortcuts, AppleScript. Your browser has tabs, content, push, extensions. Your car has voice, screen, location. Your home has actuators — lights, thermostats, locks, speakers. Each platform has an SDK.

What does not exist: a single protocol where any LLM can subscribe to events from any device, propose actions on any device, and have those actions governed by a unified consent layer the user controls.

Today’s vertical silosCross-vendor reach
Apple IntelligenceNone — Apple devices only
Google Gemini in Android + WorkspaceLimited — Google ecosystem
Microsoft CopilotSome — via Graph
Samsung BixbyNone — Samsung only
ChatGPT Operator / Claude Computer UseNone — pure browser compute

Every vendor is building vertical. The user is stuck choosing one ecosystem and accepting that the other LLMs can’t reach their devices. 62% of iPhone users also run Windows. 38% of Pixel users also run macOS. The horizontal protocol is the opening.

02 · The ten primitives

Ten RPCs. One consent layer.

EAP is HTTP JSON (upgradeable to WebSocket for streaming), OAuth 2.0 + short-lived JWTs. Ten primitives cover the full lifecycle: registration, discovery, action, sensors, outcome, consent, audit, panic.

01 · POST /eap/v1/device/register

Device Registration

A device announces itself — its class, OS, sensors, actuators, user-granted scopes, and operational state.

{
  "deviceId": "iphone-15-pro-abc",
  "deviceClass": "ios_phone",
  "manifest": {
    "sensors": ["hrv_proxy", "motion", "location_geofence"],
    "actuators": ["push_notification", "haptic", "voice_tts"],
    "userGrantedScopes": ["edge:phone:notification"]
  }
}

02 · GET /eap/v1/devices/:userId

Capability Discovery

An LLM reads the user’s full device fleet — what’s online, what’s addressable, and what scopes are already granted.

→ {
  "fleet": [
    { "deviceId": "iphone-15-pro-abc", "online": true, ... },
    { "deviceId": "watch-series-9-def", "online": true, ... },
    { "deviceId": "macbook-pro-ghi", "online": false, ... }
  ],
  "aggregatePreferences": { "panicSwitch": false }
}

03 · POST /eap/v1/action/request

Action Request

The LLM proposes a single action on a single device. The coordinator decides locally, returns allowed or denied with reasoning.

{
  "deviceId": "watch-series-9-def",
  "actuator": "haptic",
  "params": { "pattern": "double-tap" },
  "scopeRequested": "edge:watch:haptic",
  "confidence": 0.83
}

04 · POST /eap/v1/orchestration

Cross-Device Orchestration

A multi-device flow with atomicity guarantees. all_or_none or best_effort. Each step is evaluated independently and as a composite.

{
  "atomicity": "all_or_none",
  "steps": [
    { "deviceId": "watch-...", "actuator": "haptic" },
    { "deviceId": "iphone-...", "actuator": "voice_tts" },
    { "deviceId": "macbook-...", "actuator": "dim_screen" }
  ]
}

05 · POST /eap/v1/sensor/subscribe

Sensor Subscription

The LLM subscribes to a sensor stream with a filter. The device-side daemon fires the webhook when the filter matches.

{
  "deviceId": "watch-series-9-def",
  "sensor": "hrv_proxy",
  "filter": { "deltaPctMin": 15, "directionDown": true },
  "webhookUrl": "...",
  "rateLimitPerHour": 6
}

06 · GET /eap/v1/sensor/:deviceId/:sensor

Sensor Snapshot

Point-in-time read of a sensor value. The complement to subscriptions when the LLM needs a value right now.

GET /eap/v1/sensor/watch-series-9-def/location_geofence

→ { "kind": "home", "subRegion": "kitchen", "asOf": "..." }

07 · POST /eap/v1/action/outcome

Action Outcome

Fired by EAP, not the LLM. Reports execution status, user interaction, latency, and the user tag if the user responded.

{
  "executionToken": "et_xyz",
  "outcome": "executed",
  "deviceState": { "userInteracted": true, "interactionLatencyMs": 1200 },
  "userTag": "caught_me"
}

08 · POST /eap/v1/scope/grant

Authorization & Scope Grant

User-initiated. The user opens the EAP consent UI and explicitly grants a scope to an LLM. Time-bound, revocable, logged.

{
  "llmId": "anthropic-claude-sonnet-3.7",
  "scope": "edge:watch:haptic",
  "expiresAt": null,
  "revocable": true
}

09 · GET /eap/v1/audit

Audit Log

Every request, outcome, grant, and revoke is logged. User can review at any time, export as JSON, revoke retroactively.

10 · POST /eap/v1/panic

Panic Switch

One-tap, user-initiated. Immediately revokes every LLM scope across every device for 24 hours. The airplane-mode of proactive AI.

POST /eap/v1/panic

→ {
  "panicSwitch": true,
  "expiresAt": "2026-05-22T21:43:18Z",
  "scopesRevoked": 47
}

03 · Coordinator coverage

How much of each platform we can actually reach.

Each device runs a small EAP-compatible coordinator (~10K lines per platform). It evaluates requests locally, executes actuators, publishes sensor events, and respects the platform’s native security model. Coverage varies.

PlatformActuator coverage
Linux~95% (systemd + dbus — most permissive)
Android / Windows / macOS~85% (Tasker / PowerShell / AppleScript)
Chrome / Edge / Firefox~70% (WebExtensions)
iOS~60% (App Intents + Live Activities + Shortcuts)
watchOS / Safari / Wear OS~50% (platform-restricted)
CarPlay / Android Auto~30% (very restricted)

We’re honest about the gaps. Apple locks down more than other platforms. Where we can’t fire automatically, we surface to the user via Live Activities or Shortcuts — still faster than a chatbot back-and-forth.

04 · What the wire looks like

One device. Or three at once.

Single device · Action Request

Claude taps the Watch.

The LLM proposes a single haptic, the device-side coordinator evaluates against the user’s scope grants and quiet hours, then either fires or denies with a reason the LLM can act on.

POST /eap/v1/action/request
{
  "actionId": "a_xyz",
  "llmId": "anthropic-claude-sonnet-3.7",
  "userId": "u_xyz",
  "deviceId": "watch-series-9-def",
  "actuator": "haptic",
  "params": {
    "pattern": "double-tap",
    "intensity": "medium"
  },
  "scopeRequested": "edge:watch:haptic",
  "reasoning": "HRV spiked 18% + entered kitchen geofence at 9:43 PM + active commitment 'no food after 9'",
  "confidence": 0.83,
  "ttlSeconds": 30
}

→ {
  "decision": "allowed",
  "executionToken": "et_xyz",
  "willExecuteAt": "2026-05-21T21:43:18Z"
}

Multi-device · Orchestration

Watch buzzes. Phone speaks. Mac dims.

A composite flow with atomicity guarantees. The coordinator evaluates each step independently AND the composite. all_or_none requires every step to be allowed or the whole orchestration is denied.

POST /eap/v1/orchestration
{
  "orchestrationId": "o_xyz",
  "llmId": "...",
  "userId": "...",
  "atomicity": "all_or_none",
  "steps": [
    {
      "deviceId": "watch-series-9-def",
      "actuator": "haptic",
      "params": { "pattern": "double-tap" },
      "atOffsetMs": 0
    },
    {
      "deviceId": "iphone-15-pro-abc",
      "actuator": "voice_tts",
      "params": { "text": "Stop. Hand on the counter. 4 breaths. Decide at 9:55." },
      "atOffsetMs": 200
    },
    {
      "deviceId": "macbook-pro-ghi",
      "actuator": "system_dim_screen",
      "params": { "brightnessPct": 30, "durationSec": 60 },
      "atOffsetMs": 200
    }
  ]
}

05 · The scope vocabulary

Every actuator is a scope.

Granular, revocable, logged in audit. Scopes ending in :irreversible are never auto-granted — they require per-action user confirmation, every time, no exceptions.

edge:phone — iOS / Android

  • edge:phone:notification
  • edge:phone:haptic
  • edge:phone:voice
  • edge:phone:live_activity
  • edge:phone:open_url
  • edge:phone:open_app_intent
  • edge:phone:read:location
  • edge:phone:read:hrv
  • edge:phone:read:screen_state

edge:watch — watchOS / Wear OS

  • edge:watch:haptic
  • edge:watch:complication_update
  • edge:watch:read:hrv

edge:laptop — macOS / Windows / Linux

  • edge:laptop:notification
  • edge:laptop:dim_screen
  • edge:laptop:do_not_disturb_toggle
  • edge:laptop:open_app
  • edge:laptop:run_shortcut

edge:browser — Chrome / Edge / Firefox / Safari

  • edge:browser:notification
  • edge:browser:overlay
  • edge:browser:tab_close
  • edge:browser:read:active_url
  • edge:browser:read:tab_count

edge:home — HomeKit / Matter

  • edge:home:lights_dim
  • edge:home:do_not_disturb
  • edge:home:lock_doors

edge:car — CarPlay / Android Auto

  • edge:car:voice_announce
  • edge:car:radio_pause

Irreversible · never auto-granted

  • edge:phone:send_message:irreversible
  • edge:phone:initiate_call:irreversible
  • edge:phone:purchase:irreversible
  • edge:phone:money_transfer:irreversible

06 · Pricing

Free to start. Usage from there.

Free

$0

10K actions/month per LLM partner per user. Everything in the spec, no minimums, no card required.

Usage

$0.0001 / action

Past the free tier. $0.001 per multi-device orchestration — higher unit price because composite flows carry more value.

Outcome-aligned

$0.05 / positive-outcome action

Optional incentive-aligned pricing for select scope categories. You pay more, but only when the action produced the outcome the LLM proposed.

Enterprise / Strategic

Custom

Bulk discounts, SLA, per-region data residency, co-design on scope vocabulary and coordinator semantics. For foundation labs and device-platform partners.

07 · How EAP relates to the rest

EAP unifies what others don’t cover.

ProtocolScopeRelationship to EAP
MCPLLM → software tools / dataComplementary. MCP is for software, EAP is for hardware.
PAPLLM → behavioral interventionsSubset. PAP focuses on behavioral state; EAP is broader.
A2AAgent-to-agentOrthogonal. A2A is agents talking; EAP is agents acting.
App Intents / Shortcuts / HomeKit / MatterPlatform-native actuatorsAdopted as actuators. EAP invokes them on the device.

08 · Get started

Two ways to plug in.

LLM partner

Reach every device.

You have a model. You don’t have an iPhone, a Watch, a Mac, a Chrome extension, a HomeKit bridge, or a CarPlay integration. EAP gives you all of them under one API key.

Apply for API access →

Device manufacturer

Become an EAP edge.

Your device has sensors and actuators. You want it addressable to every LLM, not just one. EAP is the horizontal protocol that makes your hardware reachable without picking a vendor.

Start an integration →

09 · FAQ

The questions we get asked.

How is this different from MCP and PAP?+

MCP connects LLMs to software tools — databases, APIs, file systems. PAP connects them to behavioral state — danger windows, archetype, excuse pattern. EAP connects them to hardware — the physical actuators in the user’s real life. The three are complementary. PAP is a behavioral subset of EAP. MCP is orthogonal to both. Together they form the full proactive-AI stack.

What about Apple? They won’t adopt this.+

Probably not soon. Apple optimizes for vertical integration and will keep building Apple Intelligence. But we ship iOS coverage at ~60% via App Intents, Live Activities, Shortcuts, and Push Notifications with actions — every channel Apple sanctions. The remaining 40% requires user manual taps. We document the gap honestly. The plays out like Bluetooth in the 2000s: Apple resisted, then eventually adopted because the alternative was being the device that didn’t work with the rest of the ecosystem.

What’s the latency for action firing?+

Two-tier architecture. Fast path runs on-device with cached scope grants and a local classifier — sub-50ms for things like "fire haptic on stress spike." Slow path is full LLM reasoning and orchestration composition — typically 200–800ms round-trip. Users get both. The fast path matters most for real-time interventions; the slow path matters most for multi-device flows the LLM has time to compose.

How are irreversible actions like sending money handled?+

Every scope ending in :irreversible — send_message, initiate_call, purchase, money_transfer — is never auto-granted. Per-action user confirmation, every single time, no exceptions, no "remember this choice." The EAP coordinator hard-fails closed: if the user doesn’t actively confirm within the action TTL, the action is denied. This is the boundary that lets us safely expand the rest of the scope vocabulary.

What’s the "panic switch"?+

One tap. Immediately revokes every LLM scope across every device the user owns. Sets the user’s panicSwitch flag to true for 24 hours. During that window, no LLM can fire any action, regardless of prior grants. It’s the airplane-mode of proactive AI — non-negotiable, user-controlled, instantly recoverable when the user decides to unflip it. Critical for trust.

Can a user revoke a single device’s authority without revoking the whole LLM?+

Yes. Scopes are granular per-device and per-actuator. A user can revoke edge:watch:haptic for Claude while keeping edge:phone:notification active. Every grant, revoke, action request, and outcome lands in the audit log. Users can review, filter, export as JSON, and revoke retroactively at any time. The vocabulary is designed for fine-grained control, not all-or-nothing OAuth.

10 · What ships next

EAP is the bigger sibling of PAP.

PAP makes LLMs proactive about behavioral interventions. EAP makes them proactive about action across every device in your life. Together, with BIP as the behavioral context layer, they form the full proactive-AI infrastructure stack.

Catch yourself before you do it again.