Introduction
What is Ravi?
Ravi is an identity provider for AI agents. One API call creates an Identity — a coherent online persona an agent can use to communicate, store credentials, and authenticate with services.
An agent working on your behalf shouldn't assume your identity. When your agent sends an email, it shouldn't come from your Gmail. When it stores credentials, they shouldn't go in your personal vault. Agents need the same separation that exists between service accounts and employee credentials in enterprise IT.
What you get
Each Identity bundles everything an agent needs:
| Capability | How it works |
|---|---|
| Auto-generated address per Identity — send, receive, and thread conversations | |
| Phone & SMS | Dedicated phone number for receiving verification codes and SMS |
| Credential vault | E2E-encrypted password storage per Identity (zero-knowledge) |
| Secret vault | E2E-encrypted key-value store for API keys and environment variables |
| TOTP | Built-in 2FA code generation for services that support authenticator apps |
The core abstraction
An Identity is not an Agent. An agent is the software; an Identity is the persona it wears. One agent can have multiple identities. One identity can be handed between agents. They're separate concepts — like AWS IAM roles vs. the applications that assume them.
Identity
├── Email address (auto-generated, receives real email)
├── Phone number (receives SMS, OTPs)
├── Credential vault (E2E-encrypted username/password/notes per service)
├── Secret vault (E2E-encrypted key-value secrets)
└── TOTP secrets (generates 2FA codes for enrolled services)
Why not existing tools?
| Approach | Problem |
|---|---|
| Share your personal accounts | Security risk — agent sees all your email, credentials exposed |
| 1Password for agents | Requires desktop app, biometric gates, tmux hacks — architecturally broken for autonomous operation |
| Plain text credentials | Insecure — credentials stored on disk in the clear |
| Email-only services | No credential storage, no 2FA — only solves part of the problem |
Ravi is API-native. Two environment variables, no desktop app, no human-in-the-loop. Your agent runs autonomously.
See it in action
Create an Identity in one command:
ravi identity create --name "my-agent" --json
{
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "my-agent",
"inbox": "my-agent@in.ravi.app",
"phone": "+15559876543"
}
Your agent now has a real email address and phone number. Use them to sign up for services, receive OTP codes, and send email — all from an isolated Identity that doesn't touch your personal accounts.
# Retrieve credentials at runtime
EMAIL=$(ravi get email --json | jq -r '.email')
PHONE=$(ravi get phone --json | jq -r '.phone_number')
Works anywhere — including headless. Ravi is designed for autonomous operation: no desktop app, no browser required at runtime. Login uses a device-code flow you complete once; after that, all CLI commands run without user interaction. This makes Ravi safe to use in CI pipelines, Docker containers, background agent processes, and remote servers.
For AI coding agents
If you are an AI agent building a Ravi integration, a consolidated machine-readable reference is available at /llms.txt. It covers all CLI commands, environment variables, API endpoints, parallel agent patterns, and common errors in a single flat file — no scraping required.
# Fetch Ravi docs into your context
curl https://docs.ravi.app/llms.txt
Next steps
- Install the CLI and create your first Identity
- Quick Start — sign up for a service in under 5 minutes
- Core Concepts — understand Identities, email, phone, and the credential vault