QA CLI
coldtea-qa is Coldtea QA from the command line. Tests are written in plain English, runs happen in Coldtea's cloud, and the exit code is the verdict, so a CI step needs nothing beyond the command itself.
Install
npm install -g @coldtea/qa
cqa --versionThe package installs two names for the same binary: coldtea-qa, and
cqa for short — fewer tokens for the agents that call it most.
Needs Node 20.6 or newer. The package has no runtime dependencies.
Auth
Create an API key in the Coldtea app under Settings, then:
export COLDTEA_API_KEY=coldtea_sk_...
coldtea-qa whoamiThe key identifies your organization. There is no organization flag, and the API rejects a request that names one. Prefer the environment variable over --api-key: a flag is visible in ps while the process runs, in shell history, and in any CI log that echoes the step.
First run
coldtea-qa projects list # find a project id
export COLDTEA_PROJECT_ID=prj_...
coldtea-qa groups create "Smoke" # tests live in groups
coldtea-qa tests create "Buy an item with a saved card" --url https://shop.example
coldtea-qa run test mqt_... --wait # exit code is the verdictThe test description is the test. Say what a person would do, in English.
Behind a login? Store the secret with credentials create, point an environment at the site with environments create, then give the group that environment with groups update --environment. To run on every pull request, rules create.
Exit codes
| Code | Meaning |
|---|---|
| 0 | Pass. A warning counts as pass unless --fail-on-warning is set. |
| 1 | Fail. The app under test is broken. Nothing else exits 1. |
| 2 | Couldn't run or verify: timeouts, 5xx, rate limits, transport. Worth retrying unchanged. |
| 3 | A conflict a person must resolve (the 409 family). |
| 4 | Auth or configuration error, including 400 and 404. Retrying unchanged can only fail again. |
The split between 2 and 4 is the one to script against: 2 may succeed on retry, 4 never will.
Machine output
--json prints one JSON document on stdout, in the API's own envelope: { "data": ..., "meta": { "requestId": ... } }. List commands carry meta.nextCursor; page by copying it until it is null, never by counting rows. Errors go to stderr in the same shape, { "error": ..., "meta": { "requestId": ... } }, so stdout stays parseable on failure. Quote meta.requestId when reporting a problem.
Environment
| Variable | Meaning |
|---|---|
COLDTEA_API_KEY | The coldtea_sk_... key. Identifies your organization. |
COLDTEA_PROJECT_ID | Default project id, so most commands need no --project. |
COLDTEA_BASE_URL | API origin (default https://www.coldtea.ai). Https only; plain http works on loopback addresses. |
COLDTEA_ALLOW_INSECURE_HTTP | Set to 1 to allow plain http to a non-loopback host. Every request then carries your API key unencrypted; use it only for a trusted private host. |
NO_COLOR | Disable color. |
Commands
Generated from the CLI's own command table, so this list cannot drift from the binary. cqa help <family> prints the full help for any group below.
cqa whoami
Show the organization and key this CLI authenticates as.
cqa projects list
List the organization's projects.
| Flag | Value |
|---|---|
--cursor | string |
--include-archived | boolean |
--limit | string |
cqa projects create <name>
Create a project.
cqa projects get <id>
Show one project.
cqa projects link-repo <id>
Link a repository (--provider, --repository-id).
| Flag | Value |
|---|---|
--provider | string |
--repository-id | string |
cqa tests list
List a project's tests.
| Flag | Value |
|---|---|
--cursor | string |
--group | string |
--limit | string |
--search | string |
cqa tests create <description>
Create a test (one target flag).
| Flag | Value |
|---|---|
--deployment | boolean |
--group | string |
--mobile | string |
--title | string |
--url | string |
cqa tests get <id>
Show one test.
cqa tests update <id>
Edit a test; --group moves it.
| Flag | Value |
|---|---|
--description | string |
--group | string |
--title | string |
--url | string |
cqa tests delete <id>
Archive a test (cancels its runs).
cqa groups list
List a project's groups.
| Flag | Value |
|---|---|
--cursor | string |
--limit | string |
cqa groups create <name>
Create a group.
| Flag | Value |
|---|---|
--description | string |
--environment | string |
cqa groups get <id>
Show one group.
cqa groups update <id>
Rename or re-describe a group.
| Flag | Value |
|---|---|
--description | string |
--environment | string |
--name | string |
cqa groups delete <id>
Archive a group and its tests.
cqa run test <id>
Start one test run (--wait follows it).
| Flag | Value |
|---|---|
--build | string |
--environment | string |
--label | string |
--target-url | string |
--timeout | string |
--vcs-head-sha | string |
--vcs-pr-number | string |
--vcs-provider | string |
--vcs-repository-id | string |
--wait | boolean |
cqa run group <id>
Start a batch of a group's tests.
| Flag | Value |
|---|---|
--build | string |
--environment | string |
--label | string |
--target-url | string |
--timeout | string |
--vcs-head-sha | string |
--vcs-pr-number | string |
--vcs-provider | string |
--vcs-repository-id | string |
--wait | boolean |
cqa runs get <id>
Show one run and why it ended that way.
cqa runs stop <id>
Stop a run that is still going.
cqa runs list
List runs (filters mirror the API).
| Flag | Value |
|---|---|
--batch | string |
--cursor | string |
--environment | string |
--group | string |
--limit | string |
--outcome | string |
--since | string |
--status | string |
--test | string |
cqa builds upload <file>
Upload a build (--platform required).
| Flag | Value |
|---|---|
--build-version | string |
--no-wait | boolean |
--platform | string |
--timeout | string |
--vcs-head-sha | string |
--vcs-pr-number | string |
--vcs-provider | string |
--vcs-repository-id | string |
cqa builds get <id>
Show one build and its artifact.
cqa merge <src> --into <id>
Merge a project into a survivor.
| Flag | Value |
|---|---|
--into | string |
--timeout | string |
--yes | boolean |
cqa environments list
List where runs can open.
| Flag | Value |
|---|---|
--cursor | string |
--limit | string |
cqa environments create <name>
Create a web environment (--url).
| Flag | Value |
|---|---|
--any-url | boolean |
--credential | string |
--url | string |
--vercel-project | string |
cqa environments get <id>
Show one environment.
cqa environments update <id>
Edit one (--acknowledge for rules).
| Flag | Value |
|---|---|
--acknowledge | boolean |
--any-url | boolean |
--credential | string |
--name | string |
--url | string |
--vercel-project | string |
cqa environments delete <id>
Delete one (refused while in use).
cqa rules list
List a project's trigger rules.
| Flag | Value |
|---|---|
--cursor | string |
--limit | string |
cqa rules create <name>
Create a trigger rule (one --when).
| Flag | Value |
|---|---|
--against | string |
--all-deployments | boolean |
--branch | string |
--checks | boolean |
--deployment | boolean |
--groups | string |
--pr-only | boolean |
--schedule | string |
--timezone | string |
--webhook | boolean |
cqa rules update <id>
Rename, enable or disable a rule.
| Flag | Value |
|---|---|
--checks | boolean |
--disable | boolean |
--enable | boolean |
--name | string |
--no-checks | boolean |
cqa rules delete <id>
Delete a rule.
cqa credentials list
List stored secrets (metadata only).
| Flag | Value |
|---|---|
--cursor | string |
--limit | string |
cqa credentials create <name>
Store a secret (piped on stdin).
| Flag | Value |
|---|---|
--environment | string |
--method | string |
--username | string |
cqa credentials rename <id>
Rename one (--name).
| Flag | Value |
|---|---|
--name | string |
cqa credentials rotate <id>
Replace the secret (piped on stdin).
| Flag | Value |
|---|---|
--method | string |
--username | string |
cqa credentials delete <id>
Delete one (refused while in use).
cqa repositories list
List repositories we can see (for link-repo).
| Flag | Value |
|---|---|
--cursor | string |
--limit | string |
--provider | string |
cqa apps list
List a project's mobile apps.
| Flag | Value |
|---|---|
--cursor | string |
--limit | string |
cqa skips list
Why a project's rules did not run.
| Flag | Value |
|---|---|
--cursor | string |
--limit | string |
--rule | string |
MCP and local API
The local API and MCP endpoint that let agent panes work with Coldtea directly, mostly useful when debugging why an agent cannot see its tools.
Tasks CLI
coldtea-tasks reads and files Coldtea tasks from a terminal or CI: a title alone files a task, and agents can manage a board from scripts.