vetta CLI is the primary way to operate Naive Managed Agents 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
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;memberslive underorg(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
2before 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--usdtake decimal-dollar strings and convert client-side to integer micro-USD; JSON output amounts are integer*_micro_usd(1 USD = 1_000_000micro-USD).
Command groups
The CLI’s groups are below.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
Therun 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.