Skip to main content
Everything in Ravi is a ravi command: you, your agents and the SDK all use the same CLI. This page shows you how to look up any command, what --json, exit codes and --execute mean, and what each of the 80-odd command groups is for. Flags and arguments live in --help, which is always current.

Find a command

Many commands print more than flags: USE, DO NOT USE, EXAMPLES and ON ERROR sections that say when to pick that command and what to do when it fails. Read them before running something unfamiliar. Most groups also have a skill: a longer guide written for agents, which you can read too. Most are written in Portuguese.
ravi skills show lists the skill’s reference files at the end of its output. See Skills.

Conventions

Output

  • Add --json to get a machine-readable result on stdout. Use it in scripts instead of parsing the text output.
  • With --json, a failure is also JSON on stdout, never plain text:
  • List commands accept --limit and --offset, and many accept --fields a,b,c to keep only some fields.

Exit codes

Braked vs immediate

Commands whose effect is irreversible, visible outside your machine, or that start an agent run are braked. Without --execute they print the planned input, write nothing and exit 3. Run them again with --execute to do it.
Some brakes are conditional. ravi heartbeat trigger is braked only when the agent’s HEARTBEAT.md has content; with no file or an empty file it does nothing and says so. ravi agents permissions is braked only when the new profile grants more than the current one. ravi pages visibility is braked only when switching to public. Reversible changes run immediately, with no --execute, even demoting a WhatsApp group admin:
ravi instances delete and ravi instances routes remove are soft deletes: ravi instances deleted and ravi instances routes deleted list what was removed, and ravi instances restore and ravi instances routes restore bring it back. ravi contacts tag is immediate too, including the permission-owner tag, which grants full authority to an allowed contact (see Make yourself the owner). ravi pages ship publishes in one call; a leftover --execute on it is ignored. When unsure, run the command without --execute first. If it is braked, you get the plan and exit 3.

Console-scoped commands

Commands that work with the Ravi Console (pages, bases, connectors, gmail, bridges, bug, feedback, projects) need ravi login first; without it they fail with AUTH_REQUIRED. Commands that act on a Console project take --project <ref>, a project id or slug. ravi pages and ravi bases fall back to a saved default project when you omit it:
ravi cloud scope set also takes --agent, --session or --workspace instead of --global. See Log in to the Console. connectors and gmail do not use a project: a connection belongs to the person who connected it. --project on connectors is ignored with a warning. Writes such as ravi gmail send --execute ask the account owner first; after they approve, the same command runs again with --approval <id>. ravi connectors mode <agent> google shows whose account an agent uses (yours, the person asking’s, or a shared one); switching away from yours needs --execute. See Connect your accounts.

Who runs the command

Commands you type in your own shell run as the local operator, with full authority. The same commands run by an agent are checked against that agent’s permissions, and a denial is published on ravi.audit.denied. See Permissions. Some commands that change agents, instances and routes refuse to run when the ravi you call is a different build from the running daemon (CLI/runtime mismatch detected). Use the same install the daemon runs, or restart the daemon after an update.

Command map

Each line is one root command. Run ravi <group> --help for its subcommands.

Install and operate

Agents, sessions and runtime

Channels, people and routing

Automation

Ravi Console

Media, content and integrations