I caught myself walking back to my laptop at 11pm for the third time that night, just to check what the OpenClaw agent was doing. So I built the iOS app I kept wishing existed. iOS went live last week. This is the build story — including the bug that almost killed it.
Aerostack — a phone-native control plane for OpenClaw / Claude Code-style agents running on your own laptop, desktop, home server, or VPS. Every screen the laptop has: live thinking, approvals, chat, MCPs, skills, channels, plugins, usage analytics, scheduled runs.
The non-obvious part: it's a relay, not a data sink. The daemon (open source, MIT, published as aerostack/gateway on npm) runs on your machine. The phone is a client. Our worker just routes WebSocket frames between the two. Your prompts, transcripts, tool calls — never written to our DB. Disconnect and there's nothing to delete.
That sentence sounds like marketing. It's actually the thing that made everything else hard.
Phase 2 of the build was the LIVE pane — a real-time view of what the agent is currently thinking. Channel comes in (Slack, webhook, schedule), agent starts streaming tokens, you watch them land on your phone.
It worked beautifully. For one channel.
The moment a second channel was active in the same workspace, the LIVE pane would freeze. Not crash. Just... stop streaming. The agent on my laptop was clearly still doing things — logs flying — but my phone was stuck on the last token from 90 seconds ago.
For two days I was certain the WebSocket was dropping frames. I rewrote the broadcast logic three times. I added per-frame logging. I traced events through three systems. The frames were arriving. The phone was receiving them. They just weren't being generated by the LLM.
The actual bug: the LLM had saturated its context window. It was choking silently on its own dmHistory and timing out before producing the next token. The "freeze" wasn't a transport problem at all — the model literally had nothing left to send.
The fix was four characters in a config: dmHistoryLimit.
Two days. Four characters. A whole layer of the stack I'd been ignoring because I'd assumed the problem was the layer I knew best.
workspace_unpaired frame tears down in 25msIf you've got an agent on your laptop today and you walk away, you can already watch what it's doing from your phone, swipe-approve the dangerous bits, and stop the loop when it goes off the rails.

Honest about gaps: per-tool latency p95s and CSV export aren't shipped yet. Roadmap, not "shipped."
Two lines on the box you want to control. Then scan the QR or type the 6-digit code on your phone.


I'm not posting this to drive App Store downloads. iOS is public, the link's right there. What I actually want from this community is the kind of feedback you can't get from analytics:
1. The use case I haven't seen yet. I built this for solo coding loops. Testers are describing overnight research swarms, home-server schedule agents, shared-team-lab setups I didn't design for. If you run an agent locally for anything unusual — drop it in a comment. It shapes what we ship next.
2. The local-first-relay tradeoff. Investor feedback says we're leaving easy data money on the table by refusing to store transcripts. User feedback is unanimously the opposite. Has anyone here sat on the same fork? Which way did you go and was it the right call?
I'll be in the comments for the next 48 hours replying to everything. If you've got a war story from your own build that's adjacent — drop it. I'll learn more from your lessons than from my own.
Aerostack: phone-native control plane for the AI agent on your own machine.
iOS · https://apps.apple.com/app/aerostack/id6761647592
Daemon (MIT) · https://www.npmjs.com/package/@aerostack/gateway
Excellent execution on OpenClaw Mobile. The shift toward making agentic workflows accessible via mobile—especially for critical tasks like CI/CD monitoring and triage—is exactly where the industry is heading. Keeping the gateway self-hosted while providing a mobile-first interface strikes a perfect balance between privacy and convenience. Excited to see how this evolves!
Aerostack is much closer to infrastructure than mobile utility now.
Once you're the control plane for autonomous agents running across laptops, home servers, and VPS, the product is no longer “remote access for OpenClaw” — it’s agent operations infrastructure.
That category gets more serious, fast.
Aerostack is clear enough for early adoption, but if this becomes the default control layer for distributed agent workflows, the brand likely needs to age into something that feels less feature-bound and more like core infra.
Vroth.com fits that direction better than most.
Shorter, harder, more durable.
Feels closer to agent runtime / control infrastructure than an app wrapper.
If this keeps moving up-stack from “monitor my agent” into “operate autonomous systems,” that kind of name will age better.