soupz-stall: Soupz: The Remote Control Layer for Local AI Coding Agents

A local-first daemon that turns Claude Code, Gemini CLI, and Copilot into swappable backends, then exposes the whole workflow through a phone-friendly web interface.

9 min read • View on GitHub • More from Soham-Prajapati

A wide editorial scene of a local workstation, a phone, and a small kitchen-like orchestration stall connected by order slips and cables. The image shows multiple AI agent backends feeding into one remote control layer, explaining that Soupz coordinates existing tools instead of replacing them.
Soupz treats AI coding tools like interchangeable workers behind a single control plane, so the interface can move away from the keyboard without moving the codebase.
Key Takeaways

The Missing Layer in AI Coding

Most AI coding tools are built for one person at one keyboard, staring at one terminal. Soupz breaks that assumption. It turns a local dev box into something you can supervise from a phone, tablet, or browser, while the code stays put.

That is the real move here. Soupz is not trying to be a better model or a prettier chat UI. It is the layer that sits between you and the agents you already use.

The repo’s core idea is simple to say and surprisingly rare in practice: treat Claude Code, Gemini CLI, and Copilot as swappable workers behind a single order system. The surprise is not that it runs AI. The surprise is that it makes AI tooling feel like a remotely operated machine.

Orders, Chefs, and the Stall

The culinary metaphor is not decorative. It is the operating model. Orders are tasks, chefs are agent backends, the stall is the daemon, and the kitchen floor is the live workspace where output lands.

A close-up routing scene where a single order token branches toward three agent paths. One path hits a rate-limit barrier, another continues, and a fallback route reroutes the task to a different backend. A terminal window and phone browser sit beside the logic to show live supervision.
Soupz treats failure as a routing event. If one backend stalls, the order can be handed to another without collapsing the whole session.

The interesting part is not the UI. It is the control loop that turns a single task into a stream, then reroutes it when the first backend fails.

Once you see it this way, the rest of the system reads clearly. The daemon is not just hosting a web page. It is coordinating task assignment, terminal streaming, and live state sync across devices.

How the Daemon Stays Local but Feels Remote

The technical backbone is a Node.js backend built around the local machine. In the research, the key pieces are pairing, WebSockets, `node-pty`, file watching, and Supabase relay support. That combination is what lets a local terminal feel like a remote product.

Pairing starts the connection. Soupz generates a human-readable one-time code, checks local IPs and tunnel URLs, and establishes a path from the device in your hand to the machine doing the work. The result is a remote control flow without a cloud IDE in the middle.

The live loop matters just as much. `node-pty` gives Soupz a real pseudo-terminal, so this is not a fake command runner. It can handle interactive commands, stream stdout in real time, and keep the browser synchronized with filesystem changes.

Tool typeWhere code livesHow you interactMobile friendlinessFallback / orchestrationPrivacy postureSetup friction
SoupzLocal machineBrowser or phone over a paired sessionHighBuilt in, across agent backendsStrong, because code stays localModerate
Cloud IDECloud workspaceBrowser in a hosted environmentHighLimited to the platformDepends on vendorLow to moderate
Plain terminal agentLocal machineDirectly in the terminalLowManual switchingStrongLow
Remote desktop / SSHLocal or remote machineGeneral-purpose remote accessMediumNoneVaries by setupMedium

That table is the category break. Cloud IDEs solve access by moving the environment. Plain agents solve generation by staying in the terminal. Soupz solves supervision and continuity while keeping execution local.

Why the Fallback Logic Matters

Fallback is the feature that turns the system from a wrapper into an orchestrator. If one CLI fails because of a rate limit, trust issue, or missing backend, Soupz can route the order somewhere else. That is workflow protection, not just convenience.

if (looksLikeRateLimitFailure(err) || looksLikeTrustFailure(err)) {
  return routeOrderToFallbackAgent(order, backends)
}

return startSingleAgentOrder(order, preferredBackend)

That small idea has a big product effect. It means the user is not forced to understand which agent is available at the moment. They make the request once, and the system absorbs backend volatility.

Soupz vs Cloud IDEs and Plain Terminals

Compared with Codespaces-style tools, Soupz keeps the compute and the source tree on the developer's machine. Compared with a direct CLI session, it gives you a supervisory layer, live remote access, and swappable backends. Compared with ad hoc SSH, it has a product shape instead of a bag of shell tricks.

That distinction matters because it changes the unit of design. The unit is no longer the editor, and it is not the model either. The unit is the order, plus the routing around it.

What This Project Suggests About the Next Dev Workflow

Soupz points toward a plausible next step in agentic development: local-first execution, multi-backend orchestration, and lightweight supervision surfaces. That is a different category from cloud-first AI tools and a more resilient one than a single chat loop.

The long-term value is not the kitchen metaphor. It is the abstraction underneath it. Once AI tools become interchangeable workers, the important software is the layer that routes, monitors, and recovers when one worker stalls.