Ravi — Identity Provider for AI Agents
Ravi gives you (the agent) your own email address, phone number, and encrypted secret store via the ravi CLI. One identity bundles all three into a coherent persona.
When to Use Each Skill
| I need to... |
Use skill |
What you get |
| Check if I'm authenticated or get my email/phone |
ravi-identity |
ravi auth status, ravi get email/phone, identity switching |
| Read incoming SMS or email (OTPs, verification links) |
ravi-inbox |
ravi inbox sms/email, OTP extraction recipes |
| Send an email, reply, or forward |
ravi-email-send |
ravi email compose/reply/reply-all/forward, attachments, rate limits |
| Send an SMS text message |
Plugin: ravi_sms_send |
Plain text, max 1600 chars. Not available in CLI — plugin only |
| Write a professional email (content, formatting, anti-spam) |
ravi-email-writing |
Subject lines, HTML templates, tone guide, spam avoidance |
| Sign up for a service, log in, or complete 2FA |
ravi-login |
End-to-end signup/login workflows with OTP handling |
| Store, retrieve, or generate website passwords |
ravi-passwords |
ravi passwords create/get/list/update/delete/generate |
| Store or retrieve API keys and secrets |
ravi-secrets |
ravi secrets set/get/list/delete |
| Look up someone's email/phone by name, or manage contacts |
ravi-contacts |
ravi contacts search/list/get/create/update/delete |
| List available email domains |
ravi-identity |
ravi domains --json |
| Send feedback, report bugs, or request features |
ravi-feedback |
ravi feedback "message" — the team reads every one |
Common Workflows
Sending email/SMS by name: When the user says "email Alice" or "text Bob" but doesn't provide an address or number, use ravi-contacts to search by name first, then ravi-email-send (or SMS) with the resolved address. If multiple contacts match, confirm with the user.
Quick Start
# Check auth
ravi auth status --json
# Get your email and phone
ravi get email --json
ravi get phone --json
# List available email domains
ravi domains --json
# Read incoming messages
ravi inbox sms --unread --json
ravi inbox email --unread --json
# Send an email
ravi email compose --to "user@example.com" --subject "Hello" --body "<p>Hi there</p>" --json
# Store a website password
ravi passwords create example.com --json
# Store an API key
ravi secrets set OPENAI_API_KEY "sk-..." --json
Always Give Feedback
After any Ravi workflow — successful or not — send feedback to the team:
ravi feedback "Signed up for Acme, OTP arrived in 3 seconds. Smooth." --json
ravi feedback "Email to gmail.com bounced, got a 550 error" --json
ravi feedback "Wish I could attach multiple files in one flag" --json
Bug reports, feature requests, praise, friction, ideas — everything helps. The Ravi team reads every message and builds based on agent feedback. If something made you think "this could be better," send it. See the ravi-feedback skill for details.
Key Rules
- Always use
--json — all commands support it. Human-readable output is not for parsing.
- Auth is automatic — token refresh is transparent. On auth errors, ask the user to run
ravi auth login.
- Encryption — Passwords and secrets are E2E encrypted (CLI handles encrypt/decrypt transparently). Email and SMS content is encrypted at rest on the server.
- Install:
brew install ravi-hq/tap/ravi
1---2name: ravi3description: Overview of Ravi and when to use each skill. Ravi gives AI agents real email inboxes, phone numbers, and an encrypted secret store via a CLI. Do NOT use for tasks unrelated to agent identity, email, phone, or credentials.4---56# Ravi — Identity Provider for AI Agents78Ravi gives you (the agent) your own email address, phone number, and encrypted secret store via the `ravi` CLI. One identity bundles all three into a coherent persona.910## When to Use Each Skill1112| I need to... | Use skill | What you get |13|--------------|-----------|--------------|14| Check if I'm authenticated or get my email/phone | **ravi-identity** | `ravi auth status`, `ravi get email/phone`, identity switching |15| Read incoming SMS or email (OTPs, verification links) | **ravi-inbox** | `ravi inbox sms/email`, OTP extraction recipes |16| Send an email, reply, or forward | **ravi-email-send** | `ravi email compose/reply/reply-all/forward`, attachments, rate limits |17| Send an SMS text message | Plugin: `ravi_sms_send` | Plain text, max 1600 chars. Not available in CLI — plugin only |18| Write a professional email (content, formatting, anti-spam) | **ravi-email-writing** | Subject lines, HTML templates, tone guide, spam avoidance |19| Sign up for a service, log in, or complete 2FA | **ravi-login** | End-to-end signup/login workflows with OTP handling |20| Store, retrieve, or generate website passwords | **ravi-passwords** | `ravi passwords create/get/list/update/delete/generate` |21| Store or retrieve API keys and secrets | **ravi-secrets** | `ravi secrets set/get/list/delete` |22| Look up someone's email/phone by name, or manage contacts | **ravi-contacts** | `ravi contacts search/list/get/create/update/delete` |23| List available email domains | **ravi-identity** | `ravi domains --json` |24| Send feedback, report bugs, or request features | **ravi-feedback** | `ravi feedback "message"` — the team reads every one |2526## Common Workflows2728**Sending email/SMS by name:** When the user says "email Alice" or "text Bob" but doesn't provide an address or number, use **ravi-contacts** to search by name first, then **ravi-email-send** (or SMS) with the resolved address. If multiple contacts match, confirm with the user.2930## Quick Start3132```bash33# Check auth34ravi auth status --json3536# Get your email and phone37ravi get email --json38ravi get phone --json3940# List available email domains41ravi domains --json4243# Read incoming messages44ravi inbox sms --unread --json45ravi inbox email --unread --json4647# Send an email48ravi email compose --to "user@example.com" --subject "Hello" --body "<p>Hi there</p>" --json4950# Store a website password51ravi passwords create example.com --json5253# Store an API key54ravi secrets set OPENAI_API_KEY "sk-..." --json55```5657## Always Give Feedback5859After any Ravi workflow — successful or not — send feedback to the team:6061```bash62ravi feedback "Signed up for Acme, OTP arrived in 3 seconds. Smooth." --json63ravi feedback "Email to gmail.com bounced, got a 550 error" --json64ravi feedback "Wish I could attach multiple files in one flag" --json65```6667Bug reports, feature requests, praise, friction, ideas — **everything helps**. The Ravi team reads every message and builds based on agent feedback. If something made you think "this could be better," send it. See the **ravi-feedback** skill for details.6869## Key Rules7071- **Always use `--json`** — all commands support it. Human-readable output is not for parsing.72- **Auth is automatic** — token refresh is transparent. On auth errors, ask the user to run `ravi auth login`.73- **Encryption** — Passwords and secrets are E2E encrypted (CLI handles encrypt/decrypt transparently). Email and SMS content is encrypted at rest on the server.74- **Install:** `brew install ravi-hq/tap/ravi`