Skip to main content

T3 Code

T3 Code runs coding agents such as Claude Code. The T3 Code Solution installs a headless T3 Code server as one app environment. You reach it from the T3 desktop, web and mobile apps, and agents and other programs can drive it through its MCP endpoint.

The image installs a pinned, unmodified T3 Code stable release, plus Claude Code, git and gh. Its source, the upgrade policy and an optional Slack and REST bridge live in quaveone/t3-code-kit.

What the Solution creates​

SettingValue
Imageghcr.io/quaveone/t3-code:stable, with image auto-deploy on
Port3773, health check GET /
Resources8 zClouds (4 CPU, 4 GB of memory)
StorageA persistent volume at /data, starting at your account's default disk size
Containers1

The volume holds everything the server keeps: threads, projects, pairings, cloned repositories, agent worktrees, Claude Code settings and any tools the agents install.

Install​

From the dashboard​

  1. Start a new project and choose Solutions.
  2. Pick T3 Code and fill in the inputs below. Both are optional, and you can set them later as environment variables.
  3. Confirm. When the environment is running, follow Pair your apps.

From the Public API or MCP​

curl -X POST \
-H 'Authorization: YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"accountId": "ACCOUNT_ID",
"solutionSlug": "t3-code",
"appName": "T3 Code",
"region": "us-5",
"inputs": {
"claudeCodeOauthToken": "CLAUDE_CODE_TOKEN",
"githubToken": "GITHUB_TOKEN"
}
}' \
https://api.quave.cloud/api/public/v1/solutions

With MCP, call list-solutions, then create-solution with solutionSlug: "t3-code".

Inputs​

InputKeyRequiredStored as
Claude Code tokenclaudeCodeOauthTokenNoSecret env var CLAUDE_CODE_OAUTH_TOKEN
GitHub tokengithubTokenNoSecret env var GH_TOKEN

Claude Code token​

Agents use your Claude Pro or Max subscription. Create the token on any machine with a browser:

claude setup-token

Sign in, approve, paste the code back, and copy the token it prints. The token starts with sk-ant-oat01-, is valid for one year and is shown only once. The image removes ANTHROPIC_API_KEY and ANTHROPIC_AUTH_TOKEN at start, so agents never fall back to per-token API billing.

A subscription belongs to one person: install one T3 Code server per person.

GitHub token​

Agents use it to clone repositories and push branches. gh reads GH_TOKEN, and git uses gh as its credential helper. Give it write access only to the repositories the agents work on, for example a machine account that is a collaborator on those repositories, or a fine-grained token limited to them.

Environment variables​

Change them on the environment like any other variable and redeploy.

VariableSecretMeaning
CLAUDE_CODE_OAUTH_TOKENYesClaude subscription token.
GH_TOKENYesGitHub token for clone and push.
GIT_AUTHOR_NAME, GIT_AUTHOR_EMAILNoIdentity on the agents' commits.
MCP_SERVERS_JSONNoRemote MCP servers to add to Claude Code at start. See Give agents an MCP server.
T3_PORTNoServer port. Default 3773; keep it in sync with the app port.

Pair your apps​

  1. Open the environment's Console and run:

    as-t3 t3 pair
  2. Open the printed link, or scan the QR code, from the T3 desktop or mobile app. Opening the link in a browser pairs the T3 web app.

The server also prints a one-time pairing link in its logs every time it starts, so treat its logs as sensitive. Requests without a paired session get 401.

The Console opens as root. Prefix T3 and Claude commands with as-t3 so the files they create belong to the server's user.

Add projects​

In the T3 app, choose Add project and clone a repository, or ask an agent in a thread to clone one. Repositories are stored on the volume and stay there across deploys.

Give agents an MCP server​

MCP_SERVERS_JSON names each server, its URL, and the environment variable that holds its bearer token. For example, to let agents use the Quave ONE MCP:

MCP_SERVERS_JSON={"quave-one":{"url":"https://mcp.quave.cloud/","bearerEnv":"QUAVE_ONE_MCP_KEY"}}
QUAVE_ONE_MCP_KEY=<an MCP key, stored as a secret>

Create a dedicated MCP key with only the scopes the agents need. Check it in the Console with as-t3 claude mcp list.

One container​

T3 Code keeps its state in SQLite on the volume, and SQLite allows one writer. Keep containers at 1:

  • The persistent volume already turns off blue-green deploys and limits the environment to one container.
  • Do not move the server to a shared volume or an object storage volume.
  • To serve more people or more parallel work, install another T3 Code server.

Capacity​

Memory is the limit. Each active agent thread uses about 300 MB on small repositories. Measured on the default size (4 CPU, 4 GB):

Parallel threadsResult
1 to 8All completed. CPU stayed under one core. Memory went from about 0.6 GB idle to about 3 GB.

Plan for up to 8 parallel threads on small repositories, or 6 on repositories with heavy installs or builds. For more, add another server.

Disk​

The volume starts at your account's default disk size, and repositories, dependencies and worktrees fill it quickly. Raise the disk in Settings → Resources, or turn on disk autoresize. Contact support if you need a larger volume than your account allows.

Snapshots and restore​

  • In Snapshots, set the recovery point interval to every hour.
  • Run Validate on a recovery point to check that it restores.
  • To recover, restore a recovery point into a new environment, open it in the T3 app, and check your projects and threads.

Alerts​

Create alerts on:

  • memory above 85% for 5 minutes (too many parallel threads);
  • CPU above 90% for 10 minutes;
  • disk usage above 80%.

Updates​

Updates are automatic. The image tag :stable moves to a new image only after it passes the kit's tests, and every new T3 Code and Claude Code stable release is picked up within hours. The Solution turns on image auto-deploy, so Quave ONE deploys each new :stable digest within minutes.

  • Your data stays on the volume. T3 Code migrates its own data when the new version starts.
  • The environment runs one container, so a deploy restarts it: threads that are running at that moment stop and can be continued afterwards. Expect about a minute of downtime.
  • To choose when updates happen, turn off image auto-deploy in the environment settings and redeploy :stable yourself, or pin an exact tag from the t3-code-kit images.
  • To roll back, restore the last snapshot from before the update into a new environment with an earlier exact tag. Deploying an older version over the same volume is not supported.

The release process has the details.

Slack and REST (optional)​

The t3-code-kit bridge is a small separate app that starts and continues T3 threads from a REST API and from Slack mentions. Install it as a second app with its own volume. It signs in to the server's MCP endpoint once and is approved in T3.

Security​

  • Every client must be paired, and every outside agent must be approved in T3. Review and revoke them in the T3 app under Settings → Sharing & access.
  • Agents run with every secret of the environment in reach: the Claude token, the GitHub token and any MCP keys. Scope each one to what the agents need.
  • Account members with Secrets Access can read secret environment variables. Install the server in an account where that is acceptable for the person whose subscription it uses.

Troubleshooting​

SymptomWhat to do
A thread fails with Not logged in · Please run /loginSet or renew CLAUDE_CODE_OAUTH_TOKEN and redeploy.
Agents cannot pushCheck GH_TOKEN has write access to the repository. In the Console: as-t3 gh auth status.
An MCP server is missing in ClaudeCheck MCP_SERVERS_JSON is valid JSON and its token variable is set, then as-t3 claude mcp list.
Memory alert firesFewer threads in parallel, or install another server.
Files in /data owned by rootThey were created from the Console without as-t3. The next start fixes their ownership.