Accomplish
Accomplish is a local-first AI desktop agent (Electron app) for macOS and Windows. It automates file management, document creation, and browser tasks — all on-device, with nothing sent to external servers. Under the hood it spawns OpenCode via node-pty and supports any major LLM provider through a BYOK model.
As Accomplish’s browser automation and service integration capabilities grow, its agents increasingly need their own identity rather than borrowed user credentials. That’s where Ravi comes in.
Why Ravi
Isolated API Key Vault
Accomplish is explicit about BYOK — you supply your own Anthropic, OpenAI, or other provider keys. But autonomous agents shouldn’t inherit a human’s personal API credentials. Ravi’s secrets store gives each Accomplish instance its own isolated vault: keys scoped per agent, not per human. If an agent is compromised or decommissioned, you revoke one identity — not your personal account.
Email Identity for Service Signups
Browser automation is core to Accomplish. The moment it fills forms or registers for services (Notion, Google Drive, Dropbox), it needs an email address. Ravi provisions a dedicated agent email identity so Accomplish registers as accomplish-agent@... rather than piggybacking on the user’s inbox. Your inbox stays clean; the agent’s signups are isolated and auditable.
Phone Verification
Many services Accomplish integrates with require SMS verification during signup. Ravi’s provisioned phone numbers let Accomplish complete these flows autonomously — no human handoff needed.
Credential Storage After Signup
After Accomplish autonomously creates accounts or obtains OAuth tokens, those credentials need a structured home. Ravi’s password vault (domain + username + encrypted password) gives the agent a proper credential store it can read back on next run — no re-authenticating every session.
Setup Guide
1. Create a Ravi identity for your Accomplish agent
# Via Ravi identity tools
ravi_identity_create --name "Accomplish Agent"
This provisions a dedicated email address, phone number, and secrets vault for the agent.
2. Store your LLM API keys in the Ravi vault
Instead of pasting keys directly into Accomplish’s settings UI, store them in Ravi’s secrets store:
ravi_secrets_set ANTHROPIC_API_KEY sk-ant-...
ravi_secrets_set OPENAI_API_KEY sk-...
Your Accomplish agent retrieves them at runtime via ravi_secrets_get. If you rotate a key, update it in one place.
3. Use the provisioned email for service signups
When Accomplish’s browser automation registers for a new service, configure it to use the Ravi-provisioned email address retrieved from ravi_get_info. This keeps all agent-initiated signups isolated from your personal accounts.
4. Handle phone verification automatically
For services requiring SMS verification, Accomplish can use the Ravi phone number. After triggering the verification flow, poll ravi_inbox_sms to retrieve the OTP and complete the signup autonomously.
5. Store post-signup credentials
After Accomplish creates an account or obtains an API key, persist it:
ravi_passwords_create --domain service.com --username accomplish-agent@... --password <obtained-password>
On subsequent runs, Accomplish calls ravi_passwords_get instead of prompting the user or re-authenticating.
Integration Pattern: Identity Bootstrap
The cleanest pattern is an Identity Bootstrap on first run:
- Accomplish calls
ravi_get_infoto retrieve its provisioned email and phone - It stores that email as the default for all service registrations in the current workspace
- API keys go into
ravi_secrets_set— fetched at runtime, never hardcoded - Every account created gets a
ravi_passwords_createentry for persistence
This makes the Accomplish agent a first-class identity holder — not a proxy for the human’s credentials. Each Accomplish workspace becomes its own Ravi identity consumer, with a clean audit trail of what the agent signed up for and what credentials it holds.