Add iOS platform: on-device agent, realtime voice, input reliability#130
Add iOS platform: on-device agent, realtime voice, input reliability#130adamcohenhillel wants to merge 3 commits into
Conversation
Introduce OpenPhone iOS: a phone-resident launchd daemon (openphone-agentd) that mirrors the Android agent boundary — owning task state, tool execution, autonomy policy, memory, watchers, background jobs, audit, and trajectories on the device, with host-side tooling limited to install/debug/recovery. Layout under ios/: agentd/ daemon + companion tweaks (Theos rootless build) contracts/ iOS command/event/capability contracts and JSON schemas shared/ platform-neutral contracts shared with the Android agent tools/ macOS install/debug/validation tooling Only OpenPhone-owned, distributable source is included. No third-party code, no device-preparation instructions, and no private device material. Connection details are environment-supplied; build outputs are gitignored. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Add docs/legal/IOS.md and an ios/README.md legal-boundary section stating, in plain lawful language, the intended scope: OpenPhone-authored code only; personal, non-commercial use on an owned device; proof of concept, no warranty; no Apple affiliation. Explicitly disclaims containing or explaining any exploit, unlocking tool, or circumvention means — the agent is application-layer software that runs on top of an owner-prepared device. Link the notice from the legal index. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ility Realtime voice pipeline (main.m): the conversation owns the session — the model calling finish_task/fail_task no longer tears down the live mic/socket; only user cancel, a dropped socket, or the duration ceiling ends it. Keep barge-in armed through tool execution and abort an in-flight action batch when the user speaks over the agent. Auto-deliver a fresh screen observation after each UI action (and cache it as the next turn input) and neutralize the wait tool in the realtime path to cut per-step dead air. Tap disabled elements that still expose valid bounds by coordinate. Non-fatal jetsam memory limit raised to 1024MB with kernel readback verification. Volume trigger (volume_trigger.xm): hardened press/hold gesture state machine with generation-counter invalidation of stale hold timers and phase tracking. App introspector: minor input-focus handling refinements. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
💡 Codex ReviewWhen a client follows this iOS tool manifest and sends Line 31 in 277a514 When the mobile daemon gets EPERM and delegates OpenPhone/ios/agentd/src/volume_trigger.xm Line 1833 in 277a514 When SpringBoard services a screenshot request, this chmod makes the captured screen image OpenPhone/ios/agentd/src/main.m Lines 20003 to 20005 in 277a514 When any other app/process on the device can connect to OpenPhone/ios/agentd/src/main.m Lines 1529 to 1531 in 277a514 When two async paths record audit events at the same time (for example a voice task and the background scheduler), both can read the same OpenPhone/ios/agentd/src/main.m Lines 1743 to 1744 in 277a514 When SQLite creates With the default settings, on-device validation writes pulled logs, screenshots, store snapshots, and other privacy-sensitive artifacts under The shared model-tools contract tells consumers to emit swipe arguments as OpenPhone/ios/agentd/src/main.m Line 12812 in 277a514 When the app-input bridge does not handle OpenPhone/ios/agentd/src/main.m Lines 16329 to 16330 in 277a514 When a caller starts a task with restricted OpenPhone/ios/agentd/src/main.m Line 11086 in 277a514 When notifications are ingested, the rolling log stores each bundle, title, subtitle, body preview, and thread id, then makes the file OpenPhone/ios/agentd/src/volume_trigger.xm Line 5895 in 277a514 When ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Summary
Adds iOS as a new platform subtree under
ios/, bringing the on-deviceOpenPhone agent (daemon + input tweaks) to parity with the existing
Android-focused runtime. Latest commit hardens the realtime voice pipeline and
input reliability.
Realtime voice loop
finish_task/fail_taskno longer tears down the mic/socket. Only a user cancel, adropped socket, or the safety duration ceiling ends a session.
batch when the user speaks over the agent (true interruptibility).
as the next turn's input; the
waittool is neutralized in the realtimepath — together these cut per-step dead air.
Input / device layer
invalidation of stale hold timers and explicit phase tracking.
Test plan
🤖 Generated with Claude Code