An iOS app that runs AI agents and a complete voice pipeline on the device Rob Sandhu has built an iOS app that runs AI agents and a complete voice pipeline entirely on-device, with no account, model API, or cloud inference, using Apple Intelligence's on-device model for reasoning and Sherpa-onnx for speech. The app features background agents that plan searches, read pages, and cite sources, plus streaming speech-to-text and zero-shot voice cloning from a ten-second sample. A future voice-call app would transmit text (~50 bytes/sec) instead of audio (6–24 kbps Opus), re-synthesizing the sender's cloned voice on the receiver's device. An iOS app that runs AI agents and a complete voice pipeline entirely on the device . No account, no model API, no inference in the cloud. The one thing that leaves the phone is web research — the agent searches and downloads pages so the on-device model has something current to reason over, and that switch can be turned off. Two halves that reinforce each other: Background agents. Describe a task "find the best summer camps for my 9-year-old near Chicago" , and an agent works on it in the background: it plans search queries, reads the pages it finds, then reasons over them with Apple Intelligence's on-device model and cites what it used. Come back later and press play — the result is read aloud. On-device speech. Streaming speech-to-text used both for dictating tasks and for live transcription and zero-shot voice-cloning text-to-speech, which is what gives agent results a voice — optionally your voice, cloned from a ten-second sample. The speech half also exists as the local building block for a longer-term idea: a voice-call app where audio is transcribed on the sender's device, sent over the network as text ~50 bytes/sec instead of 6–24 kbps of Opus , and re-synthesized on the receiver's device in the sender's cloned voice. The networking layer isn't built yet; the Live Transcription screen's Echo toggle is a local loopback of that pipeline. Five layers. The UI never touches the native runtime directly, every model call happens off the main thread, and the model never reaches the network itself — the web layer does the fetching and hands it text. flowchart TB subgraph UI "UI — SwiftUI" A "AgentsView