I love my T3 Code development workflow A developer running AI coding agents in home-hosted dev containers replaced the SSH-based herdr workflow with T3 Code 0.1.5, an MIT-licensed "agent harness control surface" from pingdotgg that runs a server per container and drives already-installed Claude Code and Codex CLIs. The setup, documented in the developer's public dotfiles mirror, starts each container's server via the dcup script on port 3773 with telemetry disabled, keeps threads and pairings in a /history bind mount that survives rebuilds, and uses socat to forward host ports starting at 37731. The developer cites the in-container built-in browser and mobile clients as the main gains, but names per-container pairing with the desktop app and phone as the biggest drawback and says a single server on the Oren LXC that could reach any container would mean pairing once. T3 Code in every dev container My agents work in dev containers on a host at home. Each container now runs its own T3 Code server, and I pair my devices with it directly, with no account and no relay. My agents work in dev containers on Oren, an LXC at home. I used to reach them over SSH, in herdr https://herdr.dev , which I described in an agent that configures my machine https://unbeholden.dev/blog/an-agent-that-configures-my-machine . From my phone that meant SSH into Oren and spawning agents by hand in a terminal, which is clunky. A few days ago I added T3 Code https://github.com/pingdotgg/t3code beside herdr to compare the two. herdr is gone now, and so are dcclaude , dcpi and dccodex , my scripts for starting an agent in a container. T3 Code calls itself an “agent harness control surface”. It’s a server with iOS, Android, web and desktop clients, and it drives agent CLIs that are already installed and signed in, in my case Claude Code and Codex. It’s MIT licensed and packaged in nixpkgs, which is where my 0.1.5 comes from. The README calls the project “very very early” and says to expect bugs. All of this lives in my dotfiles, which now have a public mirror https://github.com/unbeholdendev/dotfiles . What I like so far I’m excited about this one, mostly because of how much it shows me in a single UI compared to herdr. I get the git diff, and I can merge from the same UI. The built-in browser is the biggest win. It runs inside the container, so I preview changes in T3 Code’s browser instead of exposing a port to the host. I don’t have to think about which ports to expose, or whether two projects want the same one. I’ve already removed the exposed ports from every dev container. Working from my phone is nearly as big. The mobile UI is built for it, and I can pick up where an agent left off, or start something new, without setting up a terminal session. One server per container Agents run where the server runs. A single server on Oren would have put them outside the containers, and the containers are the reason I can run agents without permission prompts. So every container gets its own server, and the boundary stays where it was. It’s also my biggest complaint so far. I have to pair every container with the desktop app and the phone, one by one. A single server on Oren that could reach into any dev container would mean pairing once. I might fork T3 Code and build that myself. dcup , the script that brings a container up, now starts one: T3CODE TELEMETRY ENABLED=false setsid -f flock -n /history/t3.lock \ t3 start --no-browser --host 0.0.0.0 --port 3773 --base-dir /history/t3 \