Version: Current
Historical release snapshot. These docs are frozen. Read current docs.
CLI quickstart
This guide covers installing the tcp CLI, signing in, and running common commands. For the full command reference, see Command reference.
What the CLI is
Section titled “What the CLI is”tcp is the tcpsystems suite client: one static Go binary that provides commands for projects, runs, deployments, models, search, and more. It uses OIDC authentication through Pocket ID and speaks both Connect/gRPC and JSON API transports.
Exit codes are part of the contract:
| code | name | meaning |
|---|---|---|
| 0 | ok | success |
| 1 | error | unexpected failure |
| 2 | usage | bad flag or argument |
| 3 | auth | not logged in or denied |
| 4 | unavailable | capability absent or upstream down |
| 5 | rate_limited | over a documented limit |
Install
Section titled “Install”From source
Section titled “From source”git clone https://github.com/tcpsystems/cli.gitcd climake buildThis produces bin/tcp and bin/tcp-mcp in the repository root. Add the bin directory to your PATH, or copy the binary to a location already in your path:
cp bin/tcp /usr/local/bin/tcpRelease artifacts
Section titled “Release artifacts”Release builds are static binaries for amd64 and arm64. Fetch from the releases page and extract:
# Example for Linux amd64 — adjust the version and platform as neededcurl -sSLO https://github.com/tcpsystems/cli/releases/download/v0.1.0/tcp_0.1.0_linux_amd64.tar.gztar xzf tcp_0.1.0_linux_amd64.tar.gz tcpchmod +x tcpsudo mv tcp /usr/local/bin/tcpVerify installation:
tcp versionAuthenticate
Section titled “Authenticate”The CLI uses OIDC device flow via Pocket ID. Run:
tcp loginThis prints a code and URL. Open the URL in a browser, enter the code, and complete the sign-in. The credential is stored at ${XDG_STATE_HOME:-~/.local/state}/tcp/token.json with mode 0600.
For machines without a browser, use:
tcp login --no-browserThis prints the URL to copy to another machine. For headless automation, use an API key:
export TCP_STUDIO_KEY_FILE=/path/to/key.jsontcp whoami --checkVerify your identity:
tcp whoamitcp whoami --check # makes one authenticated request to prove the credentialTo sign out:
tcp logoutFirst commands
Section titled “First commands”List projects
Section titled “List projects”tcp projects listView live work
Section titled “View live work”tcp live snapshotWatch runs
Section titled “Watch runs”tcp runs watchList available models
Section titled “List available models”tcp models listRun diagnostics
Section titled “Run diagnostics”tcp doctorThis probes every configured endpoint and reports the live surface.
Common workflows
Section titled “Common workflows”Start a project run
Section titled “Start a project run”tcp runs start --project <project-id> --task "Describe the task"Stream run logs
Section titled “Stream run logs”tcp runs logs <run-id>Deploy a project
Section titled “Deploy a project”tcp deploy start --project <project-id>Check harness status
Section titled “Check harness status”tcp harness status --project <project-id>Machine output
Section titled “Machine output”Add --json to any command for machine-readable output:
tcp projects list --jsonOn success, stdout carries one JSON document. On failure, stderr carries {"ok":false,"error":{...}}. Exit codes follow the table above.
Streams emit one JSON object per line:
tcp runs watch --jsonConfiguration
Section titled “Configuration”The CLI reads configuration from flags, environment variables, and a config file (default $XDG_CONFIG_HOME/tcp/config.json). Precedence: flag > env > file > default.
Environment variables:
TCP_STUDIO_URL: Studio API endpointTCP_ACUMEN_URL: Acumen gateway endpointTCP_STATUS_URL: Status endpointTCP_ISSUER: OIDC issuer (defaulthttps://auth.tcp.systems)TCP_TOKEN_FILE: Override credential pathTCP_STUDIO_KEY_FILE: API key for machine authTCP_NON_INTERACTIVE=1: Never prompt; fail with a hint instead
View current configuration:
tcp config showtcp config pathTroubleshooting
Section titled “Troubleshooting”“not logged in” or exit code 3
Section titled ““not logged in” or exit code 3”Run tcp login again. Credentials expire; refresh is transparent but may fail if the token is too old.
“unavailable” or exit code 4
Section titled ““unavailable” or exit code 4”The requested capability is not served by this deployment, or an upstream is down. Run tcp doctor to identify which endpoint is failing.
“rate_limited” or exit code 5
Section titled ““rate_limited” or exit code 5”Wait before retrying. The error response may include a retryable hint.
Credential refresh fails
Section titled “Credential refresh fails”Delete the credential file and re-authenticate:
rm ~/.local/state/tcp/token.json # or the path from `tcp config path`tcp loginNext steps
Section titled “Next steps”- Command reference: full command catalogue
- Use Console: web UI overview
- Product status: MCP: MCP endpoint status (dead until restored, verified 2026-11-05)