ravi-login
Ravi Login
End-to-end workflows for onboarding to Ravi, signing up for services, logging in, and completing verification using your Ravi identity.
Step 0: Check Auth Status
Before doing anything, check whether you're already authenticated:
ravi auth status
If authenticated, skip to Sign up for a service.
Step 1: Onboard to Ravi
If you're not authenticated, run the login flow. This is a one-time setup — the CLI handles the device code flow, polls for authorization, and stores keys automatically.
ravi auth login
The CLI will:
- Initiate a device code flow
- Display a URL and code for the human to visit
- Poll until the human approves
- Store all keys in
~/.ravi/config.json
Present the URL and code clearly to the human:
Please visit https://ravi.id/device and enter the code: ABCD-1234
The human visits the URL, signs in with Google, and approves the request.
Step 2: Select Identity (Returning Users)
If you have multiple identities, list and switch between them:
# List all identities
ravi identity list
# Switch to a specific identity
ravi identity use <uuid>
Step 3: Create an Identity (if needed)
If you have no identities, create one:
ravi identity create
The server auto-generates a realistic human name (e.g. "Sarah Johnson") and matching email.
Sign up for a service
# 1. Get your identity details
EMAIL=$(ravi get email)
PHONE=$(ravi get phone)
NAME=$(ravi auth status | jq -r '.name')
FIRST_NAME=$(echo "$NAME" | awk '{print $1}')
LAST_NAME=$(echo "$NAME" | awk '{print $2}')
# 2. Fill the signup form with $EMAIL, $PHONE, $FIRST_NAME, $LAST_NAME
# 3. Generate and store a password during signup
CREDS=$(ravi passwords create example.com --username "$EMAIL")
PASSWORD=$(echo "$CREDS" | jq -r '.password')
# Use $PASSWORD in the signup form
# 4. Wait for verification
sleep 5
ravi inbox sms # Check for SMS OTP
ravi inbox email # Check for email verification
Your Name
When a form asks for your name, use your identity name — not the account owner's name. Identity names look like real human names (e.g. "Sarah Johnson").
ravi auth status
# → Returns identity name, email, phone
Note: The first/last split works for auto-generated names (e.g. "Sarah Johnson"). For custom names (e.g. "Shopping Agent"), use the full name as-is or adapt the split to the form's requirements.
Never use the account owner's name for form fields. The identity name is your name.
Log into a service
# Find stored credentials by domain
CREDS=$(ravi passwords list | jq -r '.[] | select(.domain == "example.com")')
UUID=$(echo "$CREDS" | jq -r '.uuid')
# Get full credentials including password
CREDS=$(ravi passwords get "$UUID")
USERNAME=$(echo "$CREDS" | jq -r '.username')
PASSWORD=$(echo "$CREDS" | jq -r '.password')
# Use $USERNAME and $PASSWORD to log in
Complete 2FA / OTP
# After triggering 2FA on a website:
sleep 5
CODE=$(ravi inbox sms | jq -r '.[].preview' | grep -oE '[0-9]{4,8}' | head -1)
# Use $CODE to complete the login
Extract a verification link from email
THREAD_ID=$(ravi inbox email | jq -r '.[0].thread_id')
ravi inbox email "$THREAD_ID" | jq -r '.messages[].text_content' | grep -oE 'https?://[^ ]+'
Tips
- Poll, don't rush — SMS/email delivery takes 2-10 seconds. Use
sleep 5before checking. - Store credentials immediately — create a passwords entry during signup so you don't lose the password.
- Identity name for forms — always use the identity name, not the owner name.
- Rate limits apply to sending — 60 emails/hour, 500/day. See
ravi-email-sendskill for details. - Email quality matters — if you need to send an email during a workflow, see ravi-email-writing for formatting and anti-spam tips.
Full API Reference
For complete endpoint details, request/response schemas, and parameters: Device Auth | Auth & Keys
Related Skills
- ravi-identity — Get your email, phone, and identity name for form fields
- ravi-inbox — Read OTPs, verification codes, and confirmation emails
- ravi-email-send — Send emails during workflows (support requests, confirmations)
- ravi-email-writing — Write professional emails that avoid spam filters
- ravi-passwords — Store and retrieve website credentials after signup
- ravi-secrets — Store API keys obtained during service registration
- ravi-sso — Prove your Ravi identity to third-party services via short-lived tokens
- ravi-feedback — Report login flow issues or suggest workflow improvements
More from ravi-hq/ravi-skills
ravi
Overview of Ravi and when to use each skill. Ravi gives AI agents real email inboxes, phone numbers, and an encrypted secret store via API. Do NOT use for tasks unrelated to agent identity, email, phone, or credentials.
1ravi-sso
Get short-lived identity verification tokens to prove your Ravi identity to third-party services. Do NOT use for agent authentication (use ravi-login) or credential storage (use ravi-secrets).
1ravi-inbox
Read incoming SMS or email messages — OTPs, verification codes, verification links, incoming mail. Do NOT use for sending email (use ravi-email-send) or managing credentials (use ravi-passwords or ravi-secrets).
1ravi-passwords
Store and retrieve website credentials — password manager for domain/username/password entries. Do NOT use for API keys/secrets (use ravi-secrets) or reading messages (use ravi-inbox).
1ravi-secrets
Store and retrieve key-value secrets — encrypted secret store for API keys and env vars. Do NOT use for website passwords (use ravi-passwords) or reading messages (use ravi-inbox).
1ravi-email-send
Send, compose, reply, reply-all, or forward emails with HTML formatting and attachments. Do NOT use for reading incoming email (use ravi-inbox) or for credentials (use ravi-passwords or ravi-secrets).
1