I was lying on the couch last month when the idea first took shape. I'd been using Claude Code daily — running it in a terminal on my Mac Mini at home — and I wanted to check on a long-running task from my phone. The obvious answer was Tailscale plus Termius. Set up a WireGuard-based VPN, SSH in, done.
It worked. Technically.
But have you tried reading a terminal on a 6-inch screen? Scrolling through streaming output with your thumb while the font is the size of a grain of rice? Termius is a solid app. I like terminals. But a phone is not a terminal, and pretending otherwise felt like wearing a suit to the beach — you can do it, but why would you.
So I thought: what if I just build a web wrapper instead?
From Itch to App
The idea was simple. A web-based UI that wraps Claude Code's Agent SDK, running as a local server on my Mac Mini, accessible through Tailscale from anywhere. Open a browser on my phone, tap around, get things done.
I found an open-source Electron-based Claude GUI, forked it, ripped out Electron, and rebuilt it as a standalone Next.js web server. I called it Web Claude Code Pilot. That was supposed to be the end of it.
It wasn't.
I added session management with SQLite persistence. A file tree browser with previews. Mobile-first responsive layout with bottom navigation. Stream recovery for when iOS decides your browser tab has been alive too long and kills it in the background. Permission controls. MCP server management. Model switching mid-conversation. Folder favorites so I could jump between projects with one tap.
The thing kept growing. And with every feature, it kept getting better. Each session I'd use it from my phone, notice a rough edge, and fix it. The gap between "web wrapper" and "actual usable interface" narrowed and narrowed until one day I realized I genuinely preferred it over the terminal for certain tasks.
I set it up as a macOS launchd service that auto-starts on boot, and it Just Worked. I was switching between three different projects on my phone during a train ride and feeling genuinely pleased with myself.

Then Anthropic Shipped Remote Access
Yesterday, I was browsing tech news and there it was: Claude Code now has a remote control feature. Run claude remote-control in your terminal, and access the session from claude.ai on any device.
My first reaction was a very calm, very measured: well, shit.
So I did what any reasonable developer would do — I pulled up the docs and ran a head-to-head comparison. Here's what I found:
| Claude Remote Control | My Web Claude Code Pilot | |
|---|---|---|
| What it is | Terminal session mirror | Full web GUI |
| UI | claude.ai (can't customize) | Custom Next.js (fully controllable) |
| Sessions | One at a time, dies when terminal closes | Multiple concurrent, SQLite-persisted |
| Project switching | Can't — one directory per process | Switch freely with folder favorites |
| File browsing | None | Full file tree, preview, edit, upload |
| Disconnect recovery | 10-minute timeout, then gone | Background process + heartbeat watchdog |
| Auth | Pro/Max subscription only | Any API key works |
| Data | Routed through Anthropic servers | Never leaves your machine |
My version has more features. By a lot. I'm not bragging — I'm just stating a fact that happens to feel nice for approximately ten more minutes.

The Clock Is Already Ticking
Because here's the thing I know, and you probably know too: once the platform provider enters your space, the countdown starts.
It doesn't matter that my version is better today. Anthropic has a team of engineers, a product roadmap, and direct access to their own API internals. Multi-session support? They'll add it. File browsing? Coming. Project switching? Inevitable. Every feature I spent weeks building, they can ship in a sprint.
There's a Chinese expression that captures this perfectly: 个人再努力,也干不过工厂 — no matter how hard an individual works, you can't outpace the factory.
I have a day job. I have other projects. I sleep sometimes. Anthropic has people whose full-time job is making Claude Code better, and they're going to keep doing it whether I build a web wrapper or not. The math doesn't work out in my favor, and pretending otherwise would be delusional.

This Pattern Is Everywhere
This isn't bitterness. It's pattern recognition. I've watched it play out a dozen times in tech. Someone builds a clever tool on top of a platform. The tool gains users. The platform notices and builds the feature natively. The tool becomes irrelevant. Not because it was bad, but because native integration always wins — deeper API access, seamless UX, zero setup friction, and the trust that comes with being "official."
I see the same dynamic across the AI tooling landscape right now. Take n8n, Make, and the whole visual workflow automation category. These tools let you chain AI calls together with drag-and-drop interfaces. They're useful today. Genuinely useful.
But Claude Code already has Skills — composable, reusable prompt modules that orchestrate complex multi-step workflows. And those skills live inside the AI's context, not in some external editor with boxes and arrows. The AI can read its own skill definitions, understand them, adapt them on the fly, and chain them together without you building a single workflow diagram.
I believe Skills and similar paradigms will eventually absorb most of what workflow automation tools do. Not because n8n is bad — it's quite good, actually — but because the distance between "describing what you want" and "getting it done" keeps shrinking. When the AI can orchestrate its own tools natively, the orchestration layer becomes the AI itself. The middle layer gets squeezed out.
Convenience tools thrive in the gap between what users need and what platforms provide. As platforms get more capable, that gap narrows. Some tools find permanent niches. Most don't.

So What Now?
I'm keeping Web Claude Code Pilot running. It does what I need, it works well, and Anthropic's remote access isn't there yet functionally. I'll use my version until theirs catches up — which, if I'm honest with myself, probably won't take more than a few months.
Will I keep developing it aggressively? No. I'll fix bugs, maybe add a feature when something annoys me. But I'm not going to pour energy into a direction where I'm racing against the platform itself. That's not a race you win. That's a race where you learn a lot and then the highway gets built over your footpath.
And I'm okay with that. The project was worth building. I learned how the Claude Agent SDK actually works under the hood. I figured out stream recovery on mobile browsers — a surprisingly non-trivial problem when iOS kills your tabs. I built a responsive UI I'm genuinely proud of. I wrote a whole post about testing strategies that came directly from this project.
Sometimes you build something great, and the world shifts under your feet. The right response isn't frustration or denial. It's the quiet satisfaction of knowing you solved the problem before anyone else did, clear-eyed acceptance of where things are heading, and the good sense to redirect your energy toward whatever the platform hasn't figured out yet.
I'll let you know when I find it.