CLI
Install the Tada CLI, sign in from a laptop or from CI, check whether a session is actually alive, and start the MCP server your agent talks to.
The tada-mcp package installs two identical binaries, tada and tada-mcp.
Use whichever reads better; they’re the same program.
The CLI does exactly one job: get credentials onto the machine so the recorder
can upload. Recording happens through the
verify_feature MCP tool.
Install
npm install -g tada-mcppnpm add -g tada-mcpyarn global add tada-mcpbun add -g tada-mcpVersion
tada --version
0.1.31
The bare string is deliberate: $(tada --version) is directly comparable, so a
CI step can gate on it. For a human-readable report use tada status, which
prints the version and checks the session.
tada --help prints the command list. Both exit 0; an unknown command exits
1 and writes to stderr, so a typo can never look like success.
Commands
| Command | What it does |
|---|---|
tada login | Authorize in your browser. No password typed or pasted. |
tada login --key <key> | Save a personal API key, for CI and headless boxes. |
tada login --password | Email and password. Scriptable via stdin. |
tada key <key> | Save a personal API key directly. |
tada whoami | Ask the server who you are. Non-zero when the session is dead. |
tada status | Local credentials plus a live server check. |
tada logout | Remove the stored credentials. |
tada worker | Claim queued runs and drive them. |
tada | Start the MCP server on stdio. |
Signing in
tada login
Opens your browser to authorize. Nothing is typed into a terminal, nothing pasted. This is the recommended path on a machine you’re sitting at.
tada login --key <key> · tada key <key>
Saves a personal API key. The right choice for CI and headless boxes, where there’s no browser to open. Create one at taada.dev/settings.
The key can arrive four ways: as an argument, via --key, from a prompt if
you’re on a terminal, or piped on stdin:
echo "$TADA_API_KEY" | tada key
The key is validated against the server before the command reports success. A typo’d or revoked key fails immediately and loudly, rather than at 3am inside a CI run.
tada login --password
Email and password. Also scriptable: piped stdin takes two lines, email then password:
printf '[email protected]\nhunter2\n' | tada login --password
Checking the session
These two answer different questions, and the difference matters when you’re debugging.
tada whoami
Asks the server. Prints the account on success; exits non-zero when there’s
no valid session. This is the honest check, the one to use in a script or an
agent, the same way you’d use gh auth status or aws sts get-caller-identity.
tada status
The fuller report: which credentials are on this machine, then a live server check on them.
Tada CLI v0.1.31
Credentials found for [email protected] — checking with the server… ✓ session valid.
A credentials file on disk is not proof of a live session. It can be expired or
revoked and look perfectly fine. That’s why status always makes the round
trip, and exits non-zero when the check fails.
tada logout
Removes the stored credentials.
Running the recorder
tada · tada mcp
Starts the MCP server on stdio. This is how your AI host launches Tada. You generally don’t run it yourself:
claude mcp add tada -- npx tada-mcp
tada worker
Claims queued runs from the API and drives them on this machine. It is the same recorder the MCP tool uses, taking its work from the queue instead of from a tool call. That is why it lives in the CLI rather than in a service.
tada worker # keep claiming until stopped
tada worker --once # claim a single run, then exit
Each run has a ten-minute wall-clock ceiling, so a hung page releases its claim back to the queue rather than holding it forever.
Environment
| Variable | Default | Purpose |
|---|---|---|
TADA_API_URL | https://api.taada.dev | Point the CLI at a different API. You want this only when running one locally. |
TADA_RUN_TIMEOUT_MS | 600000 | Wall-clock ceiling for a single tada worker run. |
Notes
There is no upload command. Not an omission. Tada records the demo itself so it can verify the demo actually worked. A video recorded elsewhere has no checkpoints to attest, so it can’t be published as a Tada demo. See Verification.
Unknown commands fail loudly. tada upload and friends print the usage and
exit 1. An earlier version fell through and silently started the MCP server, so
a wrong command printed nothing and exited 0. A stale command must never look
like a successful no-op.
Upgrades are offered, not forced. The auth commands check npm for a newer version and offer to upgrade in place. On a non-interactive shell they just print the notice.