Skip to main content
The vetta CLI is the primary way to operate Vetta from a terminal, scripts, and CI. It defaults to machine-readable JSON so it composes with jq; pass --human for tables. It is a thin shell over the TypeScript SDK, which is a thin shell over the API — one route table, three spellings. Every command below has a method with the same name and a page in the API reference.

Install

Authenticate

There is no browser-based login. vetta login takes either --api-key, or both --email and --password; the organization is learned from the credential, so you never pass an org_ id. See vetta auth. For CI, use an API key instead of an interactive login:

Global flags

Conventions

The CLI is consistent so command names transfer between groups:
  • Verbs & pluralization. Resource groups are singular (agent, session, webhook); list/get/create/update/delete are the shared verbs; members live under org (vetta org members …).
  • Ids use the canonical xxx_ prefixes on the wire (agt_, ses_, cmp_, skl_, dep_, whk_, led_, key_, org_, usr_).
  • Pause/resume vs enable/disable. A running thing is paused/resumed (a computer sandbox, a deployment schedule). A config flag is enabled/disabled (a webhook endpoint). They never mix.
  • Unknown flags are an error. A flag a command does not accept exits 2 before anything is sent, and the message lists the flags that command does take. A misspelled filter can never quietly widen your query.
  • Money. --budget-usd, --max-task-usd, and --usd take decimal-dollar strings and convert client-side to integer micro-USD; JSON output amounts are integer *_micro_usd (1 USD = 1_000_000 micro-USD).

Command groups

The CLI ships 30 groups. vetta --help prints them (with the four aliases below); vetta <group> --help lists a group’s commands; vetta <group> <command> --help lists that command’s flags. domain, email, phone, connections, and social are reached as three-word vetta identity <group> <command> spellings.

Top-level aliases

run, login, logout, and whoami are shorthands for session run, auth login, auth logout, and auth whoami.

Capabilities that are present but blocked

A command can exist and still be refused by something outside the platform. These are reported, not retried around:

Convenience: run

The run command is create-session + send + stream + wait-for-idle in one line. It exits with a code derived from the terminal stop_reason (non-zero on awaiting_*, budget_paused, max_iterations, interrupted, or error), so CI can branch on the outcome — see the exit-code table.

Declarative config (GitOps)

Agents are declarative, so you can keep them as checked-in .agent.yaml files and sync them from CI. apply upserts by name (last write wins); show --format yaml exports the live config for round-tripping.
See Define an agent as a file.