The Ravi CLI is the terminal client for local setup and agent workflows. ## Install ```bash brew install ravi-hq/tap/ravi ``` See [Installation](/getting-started/installation/) for source builds and release archives. ## Configuration The CLI stores local state under `~/.ravi/` by default. | File | Purpose | | --- | --- | | `auth.json` | Login/session material | | `config.json` | Active identity selection | For parallel agents, avoid shared mutable CLI state. Prefer one working directory or config directory per agent process. ## Command Groups | Group | Purpose | | --- | --- | | `ravi auth` | Login, logout, and auth status | | `ravi identity` | Create, list, and select identities | | `ravi get` | Fetch active identity resources | | `ravi inbox` | Read email and SMS inboxes | | `ravi message` | Work with individual messages | | `ravi email` | Compose and reply to email | | `ravi sms` | Send SMS from the identity's number | | `ravi call` | Place calls, list them, fetch transcripts, hang up | | `ravi passwords` | Password entry operations | | `ravi secrets` | Secret entry operations | | `ravi feedback` | Send feedback | The API key is an auth fence — it defines what a caller may touch, not which identity it acts as. Pass `--identity ` to target a specific identity for per-identity commands; otherwise the active identity scopes the request. ## Output JSON is the default output format for scripts and agents. Use `--human` only when you want human-readable tables or messages: ```bash ravi auth status ravi identity list ravi identity list --human ``` ## API Relationship The CLI talks to the same backend documented in [API Overview](/api/overview/). For service-to-service code, an API key and direct HTTP calls may be simpler than shelling out to the CLI. ## Next Steps - [Command Reference](/cli/commands/) - [Authentication](/getting-started/authentication/) - [API Endpoints](/api/endpoints/)