tool-containers
Menu
GitHub (opens in new tab)

T3 Code

T3 Code (opens in new tab) is a web GUI for coding agents. This image adds it to agentbloat, so Codex, Claude Code, Cursor, OpenCode, and the other agent CLIs it drives are already installed. The entrypoint is t3 serve --host=0.0.0.0 --port=3773, and the container starts in /home/sysadmin as sysadmin (UID 1000). The recipes mount your project at /workspace. No credentials are stored in the image.

Images
  • GHCRghcr.io/hambn/t3code
  • Docker Hubdocker.io/hambn/t3code
Upstream
github.com/pingdotgg/t3code (opens in new tab)
Source
tools/ai/t3code (opens in new tab)
On this page

Images

There are no Alpine variants: upstream publishes only glibc builds of the t3 binary, which gcompat cannot run. The old alpine and alpine-browser tags are still in both registries but are no longer rebuilt.

Pull ghcr.io/hambn/t3code:<tag> or docker.io/hambn/t3code:<tag>. t3code-<version> names the npm release in the current ubuntu build. All tags move when the image is rebuilt; pin a digest to keep one build.

Included software

The agent CLIs and the devbox toolset come from agentbloat.

Pairing and access

Each time the server starts, it prints a one-time token and a pairing URL. The URL uses the container's own IP address, so from the host open http://127.0.0.1:3773/pair#token=<token> instead. The token expires after five minutes. For a new one, run this in the container:

Shell
t3 auth pairing create --base-url http://127.0.0.1:3773

After pairing, the browser keeps a session cookie. Sign in to each agent from the T3 Code UI.

T3 Code keeps its state in /home/sysadmin/.t3, and the agents keep their logins in the same home directory. None of the recipes mount it, so both last only as long as the container.

The Browser item in the web interface stays disabled: it needs the T3 Code desktop client. The headless Chromium in ubuntu-browser is for command-line tools.

Use cases

  • Local GUI over a checkout with Docker, including hosts that load the image from a saved tar.
  • Persistent local instance with Docker Compose, with an air-gapped Compose file.
  • Rootless local instance with Podman.
  • Shared cluster instance from plain manifests with Kubernetes or from a Helm chart with Helm.

Sources

Topics