The future of agents is remote. They run on a server, in the cloud, anywhere, reachable from whatever is in hand. Catch Me Outside is a personal on-the-go remote agent. The idea is simple. An iPhone serves as the remote control, while the actual work happens on a server. That server can live on a machine at home, on a dedicated box, or on a cloud server. It runs anywhere.
The phone stays thin. It is the window and the trigger. Everything real, the state, the tools, the model calls, lives on the server and comes back as results.
The core pieces
- A single-owner coding-agent server, written in Rust. It owns the projects, the git state, the chat history, the model calls, and the tools that touch the workspace. It is the agent. No teamwork, no approvals, full permissions.
- A native SwiftUI iPhone client that drives everything from anywhere.
- Made for a Tailscale tailnet. The phone pairs with a short-lived, one-time token, and the two talk over it, with nothing exposed to the public internet.
Principles
These are the principles behind the design choices being made.
-
Autonomous. The app does not ask for permission. It runs on its own and hands over the results.
-
Isolated from the main door. Each chat runs in its own work tree. Everything it creates, files, processes, updates, gets cleaned up when the chat is done.
-
Chats are meant to be deleted. If a chat sits idle for a while, the assumption is that it is no longer being worked on, and it gets scheduled for deletion.
-
A control mode. It is a hands-free way to work, voice control for everything.
-
Cost is always in mind. API costs are estimated up front. Everything that can run locally does, the Control, the voice description, all of it. Only the models reach out to the chosen provider and model. Cost balloons fast with AI agents, so keeping it low is built in.
-
Models are swappable. A chat can start with one model and switch to another anytime, no starting over. Run low on tokens or credits and swap. Do the hard work with a stronger model, then let a cheaper one finish up, write the recommendations, or handle the rest.
-
Secure by default, closed by default. Tailscale is used to keep the agent reachable only by the devices on the tailnet. Connect from a laptop, a phone, anything running Tailscale, without opening a single port to the public internet.
-
Flexible. Support for many providers: OpenRouter, OpenAI, xAI, Gemini. Own API keys are welcome, so there is no lock-in. It works with everything and the setup can be changed and optimized over time.
Security is intentional. This is a no-approval, full-permission agent, so it binds to the Tailscale interface and requires both tailnet access and a paired session. Nothing about it is meant to be reachable by strangers.
Featured image
Updates
Newest on top. Each entry is a date and a short note on what changed, so this stays current as the project moves.
- 2026-09-11 Starting point. This post goes live and opens the public notes. The agent, the phone client, and the Tailscale pairing already work together in some form, and the details will settle here as they change.