Claude Code · T3 Code · Tailscale · Hetzner
Claude Desktop is dead. My laptop is a server now.
For three months I patched my way to driving Claude Code from anywhere: a settings line for Remote Control, a keep-alive script for claude rc, then a EUR 11.28 server running ten tmux sessions mirrored into cmux. Three minutes after I posted the server, Etan Joseph Heyman sent me T3 Code. The same evening it replaced every one of those patches. The idea behind it is the part worth stealing: a computer running Claude is a server, even the laptop you are typing on.
What I was patching
- Remote Control drops.
claude rcgives up after about 10 minutes of reconnect errors and quits. I wrote a keep-alive for it. - Sessions you cannot see. Start one from the phone and it runs somewhere, but the laptop has no trace of it. You go hunting for which machine, which folder, which tmux pane.
- Claude Desktop plus remote is a patch on a patch. Two apps, two views of the same work, neither of them the place the work actually lives.
- tmux as the session store. My shed needed a snapshot script every minute so a reboot would not lose session names and conversations. Ten sessions in tmux also ate most of an 8 GB server.
What T3 Code is
An open-source (MIT) app by Theo and the ping.gg team, github.com/pingdotgg/t3code, about 47k stars on 5 November 2026. It brings no model of its own. A small server runs on the machine where your code lives and drives the real Claude Code CLI there, with that machine's login, skills, MCP servers and settings. Every screen is a client: a desktop app, a browser tab, an iOS or Android app. Each conversation has its own diff view, approvals and terminal, and conversations live on the server, so closing a client loses nothing.
That flips the model. Remote Control treats your laptop as the place Claude lives and the phone as a remote. T3 treats the machine running Claude as a server and every device, the laptop included, as a window. Run the server on your laptop and you get the same UI locally; run it on a cheap box and nothing depends on the laptop being open.
How I set it up
- Install the server on the Linux box with the project's install script (it downloads a checksum-verified release into
~/.local/bin) and run it as a systemd user service, so it comes back after a reboot. It used about 290 MB. - Keep it off the internet. On a cloud server "listen on the local network" can mean the public internet. The firewall blocks its port, and it is reachable only over Tailscale. Each device also needs a one-time pairing link or QR code.
- Pair the devices. Phone: install the app, Settings, Environments, Add environment, scan the QR. Laptop: in the desktop app's setup wizard, untick the local server if you do not want agents running on the laptop, and paste the pairing link.
- Import history. The wizard offers to import existing Claude Code conversations from the server. I took all of them, from 11 project folders, and each one resumes where it stopped.
- Retire the old path. Once I was working in T3 I shut down the tmux workspaces. Free memory on the server went from about 2 GB to 4.5 GB. I kept one
claude remote-controlservice as a fallback in case T3 breaks.
The catches
- It is alpha. Version 0.1.x, with nightly builds every day. Expect bugs and changes. Desktop app and server need matching versions.
- The browser client needs T3's own sign-in (T3 Connect) to reach a server from app.t3.codes. Over Tailscale the phone and desktop apps work without it.
- Projects have no default model at first; pick Claude and a model in the first conversation.
- Billing is your existing Claude plan, because it runs the Claude Code CLI on the machine. No API key.
- Logins and captchas still need a real browser on the server. My shed keeps its Chrome desktop over VNC for that.
The earlier posts
- One settings line for Remote Control from the phone
- Keeping claude rc alive on a Mac
- My Claude lives in a shed now (the EUR 11.28 server this runs on)
Want this on your own machine?
I set up Claude Code for teams and small businesses through ZaZet Solutions: always-on servers, remote access from any device, skills, and the background jobs that keep running when nobody is watching.