Pi Durable Android prototype runs without Termux
Mario Zechner demonstrates a native Android app built on his phone with Pi Durable in two days. The prototype also adds paged transcript loading, but he describes it as a demo rather than a product.

TL;DR
- A native Android app now runs without Termux; Pi creator Mario Zechner says in his demo that he built it on his phone in two days.
- The agent runs locally, but the LLM remains external, Zechner clarified in a follow-up.
- Pi Durable resumes persisted agent work after process death, the behavior Zechner described when explaining the framework.
- The prototype now pages through historical transcripts, a feature Zechner demonstrated in a scrolling demo.
Self-editing software gets a neat stress test: the app's hot-reload mechanism kills and respawns server and session workers. Earendil's October 1 launch examples show that recovery can resend an interrupted model request while leaving an unsafe tool call interrupted.
Native Android
Zechner describes the native app as a Pi Durable demo, continuing the personal experiment he started to replace Claude for Android. He explicitly described the project as separate from an official Earendil product.
Zechner attributes the OAuth localhost 404 in the recording to a development version already running.
The runtime uses a foreground service. Zechner attributes its low battery use to time spent waiting for model responses, while flagging Rust compilation as a heavier workload.
Crash recovery and hot reload
Zechner is building pim with pim, with two reload paths:
- Web frontend: hot module replacement.
- Server and session workers: kill and respawn the processes, with Pi Durable handling recovery.
The recovery behavior is more specific than resuming an arbitrary instruction mid-flight. In Earendil's examples:
- Each run step persists a checkpoint before advancing.
- An interrupted model request is sent again; its partial answer remains in the transcript, marked aborted.
- An interrupted tool call reruns only when declared safe to replay. Otherwise, the model receives an interruption report with the output stored so far.
Paged transcripts
Zechner added pagination for historical transcripts and confirmed that the full transcript is available.
The app uses SQLite, he said in a reply. Separately, Zechner said he plans to make streaming commit frequency configurable for assistant messages and tool output; he described the other commits as part of what makes the framework durable.
Subagents and shared sessions
Zechner revisited his earlier criticism of opaque subagents, first laid out in his November 2025 design post.
- Shared trace: subagents are conversations inside the same session. Zechner wants that session to contain a full trace of agent activity, with conversations able to communicate.
- Agent messaging: a newly added tool finds active agents and sends messages to background subagents or other agents running on the phone.
Multiplayer and artifacts
Early multiplayer ran on the phone and was exposed through ngrok. Zechner later reported 130 viewers at once.
Guest participation and optional co-steering were among his stated goals. The earlier web version also had artifacts and a provider/model picker.
Remote execution
On day two, Zechner began adding remote execution environments so the phone-based agent could access his Hetzner server as though it were local.
Pi Durable separates the harness from its tools' execution environment: the loop can stay on the phone while file and shell operations run elsewhere. Each conversation can use a different execution environment.
Cloudflare integration
Cloudflare added Pi Durable to the Agents SDK on October 2, introducing PiHarness to persist agent work across mid-turn interruptions.
The integration runs inside an Agent or a plain Durable Object and wakes after eviction, according to Cloudflare's harness docs.
Cloudflare marks PiHarness as beta and warns that its API will likely change as the experimental Pi Durable package matures.