naive 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
Upgrading from
@usenaive-sdk/vetta-cli? Run npm rm -g @usenaive-sdk/vetta-cli first, because both
packages install the same commands. Your saved login carries over.Authenticate
naive login takes an API key piped on stdin (recommended — it stays out of your shell history), from NAIVE_API_KEY, or from --api-key; or both --email and --password. The organization is learned from the credential, so you never pass an org_ id. naive login on a new --profile points it at the production API unless you pass --api-base-url; other commands refuse a profile you never logged into. See naive auth.
For CI, use an API key instead of an interactive login:
A variable that is exported but empty counts as unset.
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(naive 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.naive --help prints them (with the top-level aliases below); naive <group> --help lists a group’s commands; naive <group> <command> --help lists that command’s flags.
domain, email, phone, connections, and social are reached as three-word naive identity <group> <command> spellings.
Top-level aliases
run, login, logout, and whoami are shorthands for session run, auth login, auth logout, and auth whoami. claim, template, up, init, catalog, and installs are shorthands for the same commands under naive naive — naive up is naive naive up.
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.