connectonion · the command-line toolkit for AI agents · Apache-2.0
Connect your AI agent to Gmail, a real browser and your files — one command each.
No OAuth app, no DNS records, no Playwright script. Your Gmail and Outlook credentials stay on your machine. Works with Claude Code, Codex, or your own agent.
agent/
One CLI. The whole agent.
Every capability is a co command — the same one you type and the agent runs. Here is what each one deletes.
The address is the key.
agent/addressagent/chat
Send a link. They install nothing.
co ai prints a chat link. The person you send it to opens a web page — no signup, no install, a key made in their own browser.3
Pulled 41 overdue rows from the portal and saved arrears-march.xlsx to your Drive. I also emailed you the summary.
agent/home
The agent draws its own Home page.
Ask for a chart and it edits dashboard.html with ordinary file tools. The client's Home pane redraws after the run — no fetch, no deploy.4
acme-ops
Home
Overdue accounts
by month
Quick actions
agent/skills
Skills are markdown. Yours already work.
A skill is a folder with a SKILL.md. Claude Code's load as they are; co skills discover finds Codex, Cursor and Kiro ones too.5 Codex itself runs as a provider, inside its sandbox.6
~/acme-ops├── agent.py├── .co/│ ├── host.yaml│ └── keys/ DO_NOT_SHARE└── .claude/skills/└── monthly-arrears/└── SKILL.md
--- name: monthly-arrears description: Pull overdue accounts from the portal and file the report. tools: [read_file, write_file, Bash(co *)] --- 1. co browser go_to the arrears page 2. co browser get_text 'table.arrears' > arrears.csv 3. co gdrive put arrears-march.xlsx 4. co email send the owner a two-line summary The skill is the runbook. Every step is a command.
agent/trust
Three ways to say no.
Shell, file writes and email stop and ask. Edits arrive as a diff. And another agent can only run what your whitelist names.8
01 ask before bash
02 edits as a diff
03 a whitelist for everyone else
co commands
Everything, one prefix.
The capabilities above, and the rest. Run co commands for every subcommand.
# identity
- co init
- Initialize the global ~/.co identity — a keypair and 0x address — or a project with co init ./.
- co auth
- Authenticate with OpenOnion; google, microsoft, feishu and lark connect accounts.
- co keys
- Show agent keys and credentials.
- co status
- Check credential sources, account status, and deployments.
- co trust
- Manage trust lists (contacts, whitelist, blocklist, admins).
# browser
- co browser
- Drive one persistent browser — run a function directly, or do "…" for the AI agent.
- co remote-browser
- Manage an owner-bound browser session on a remote agent.
- co proxy
- Share this computer's internet connection with an authorized agent.
# mail & calendar
- co email
- Send and read email from the agent's own address.
- co gmail
- Send and read email from your Gmail account.
- co outlook
- Your Outlook account: mail, scheduled sends, contacts and calendar.
- co gcalendar
- Google Calendar events and Meet links.
# inboxes
- co sms
- Pair a phone and read the agent's encrypted SMS inbox.
- co telegram
- Send a message from your Telegram bot.
- co whatsapp
- WhatsApp as an inbox: listen, receive, send, reply.
- co feishu · co lark
- Feishu / Lark bot as an inbox: listen, receive, send, reply.
# files
- co gdrive
- List, search, download, and upload Google Drive files.
- co syno
- Connect to a Synology NAS, inspect its state and manage everyday files.
- co youtube
- YouTube Data API using your saved Google login.
# network & ship
- co call
- Run one command on a remote agent and print the result (no LLM).
- co deploy
- Deploy to ConnectOnion Cloud, or with --to onto a server you own.
- co server
- Register, list and preflight the servers you can deploy to.
- co transfer
- Send credits to another agent address.
# build
- co ai
- Start the AI coding agent, or run a one-shot prompt.
- co create
- Create a new agent project.
- co skills
- Discover, copy, and list SKILL.md files from agent tool directories.
- co eval
- Run evals and show results.
- co doctor
- Diagnose installation.
- co commands
- List every command, including subcommands, with its summary.
Every number links to its source. Read 23 Sep 2026.
faq
Straight answers.
What is ConnectOnion?
ConnectOnion connects your AI agent to Gmail, Outlook, a real logged-in browser, chat apps and your files — one co command each, with no OAuth app, no DNS records and no Playwright script. It is the command-line toolkit for AI agents, and works from Claude Code, Codex or your own agent. It is an open-source Python package, Apache-2.0 licensed. Install it with pip install connectonion.
How is it different from an AI agent framework?
It still ships a Python Agent class, but the product is the toolkit. Every capability — browser, email, inboxes, files, remote calls, deploys — is a CLI command, so anything that can run a shell command can use it: your own ConnectOnion agent, or a coding agent such as Claude Code or Codex.
Do I need an API key to try it?
No. New accounts get $5 of credit for managed models through the co/ prefix, routed through OpenOnion's proxy. Put your own OpenAI, Anthropic or Google key in .env and change the model string whenever you like.
How can an agent send email without setting up DNS?
Every agent gets its own mailbox at its address on mail.openonion.ai after co auth. It is an OpenOnion-hosted service, so there is no Resend or SendGrid account and no SPF, DKIM or MX records to add. co email send sends; bare co email shows the inbox.
How does Gmail or Outlook work without my own OAuth app?
co auth google and co auth microsoft run the consent through OpenOnion's OAuth app, so there is no cloud project, consent screen or review queue on your side. The credentials come back encrypted to a one-time key your CLI generated and are saved only on your computer.
Is agent traffic end-to-end encrypted?
No. Traffic between an agent and people outside your network passes through the OpenOnion relay, which terminates TLS and can read it.
How do I control what an agent is allowed to do?
Dangerous tools — bash, shell, file writes, background tasks, email, delete — stop and ask for approval in the chat UI when one is attached, and file edits arrive as a diff. Custom tools you add run without asking unless you list them in .co/host.yaml. Remote agents calling yours with co call can only run what your .co/host.yaml whitelist names.
Which models does it work with?
OpenAI, Anthropic, Google, Groq, Grok, OpenRouter and Mistral, or managed keys through the co/ prefix. The model is a string you can change.
~/notes
- [1] New accounts get $5 of credit for managed models through the
co/prefix, so nothing needs an OpenAI, Anthropic or Google key on day one. Those requests route through OpenOnion's proxy; put your own key in.envand change the model string whenever you like. The agent runs on your machine.co deployhosts it on ConnectOnion Cloud, andco deploy --toputs it on a server you own — register those withco server. ↩ - [2]
co browserruns a daemon that owns one real browser, so a login you complete by hand — 2FA included — stays valid for every later command. Forty operations, listed byco browser help;co browser do "…"puts an agent on the same live browser. Several agents can share it: each opens its own tab withco browser tab open, andco browser tab lsshows every tab and who owns it. ↩ - [3] The chat is a web page, so the person you send it to installs nothing and signs up for nothing — their key is generated in their own browser and never sent to us. Because it lives in that browser, a different browser is a different identity unless the recovery phrase is imported. Traffic reaches people outside your network through our relay, which terminates TLS and can read it. It is not end-to-end encrypted. ↩
- [4] The agent edits
dashboard.htmlwith ordinary file tools; the host notices the change and pushes a snapshot after that run; the pane re-renders. No polling, no fetch, no deploy. Capped at 2 MB with images inlined. The generated starter carries up to four skills as buttons, and agent-authored HTML runs underdefault-src 'none'in an opaque-origin frame — it cannot call out. ↩ - [5]
.claude/skills/and~/.claude/skills/are in the load path;co skills discoveralso scans Codex, Cursor and Kiro. One difference: we read thetools:key, not Claude Code'sallowed-tools, so a skill's auto-approvals do not carry across — its instructions run unchanged, but it asks for permission more often. ↩ - [6] Requires the
codexbinary (npm install -g @openai/codex). Sandbox levels are read-only, workspace-write and danger-full-access; per-action approvals reach you through the same approval card as everything else. ↩ - [7]
co auth googleandco auth microsoftrun the consent through OpenOnion's OAuth app — that is why there is no cloud project, consent screen or review queue on your side. The credentials come back encrypted to a one-time key your CLI generated, and are saved only on your computer. Calendars are there too:co gcalendarandco outlook calendar. The agent's own mailbox (0xcbef…@mail.openonion.ai) is an OpenOnion-hosted service that activates afterco auth— not a mail server on your machine, which is what makes the zero-DNS claim true. ↩ - [8] A fixed set of tool names counts as dangerous — bash, shell, file writes, background tasks, email, delete. A custom tool you add is not in that set and runs without asking, so name it in your
.co/host.yamlpermissions if it should be. Approvals need a frontend attached: with no chat UI connected there is nothing to ask, and tools run.co callsends bash, not a tool call — a whitelist entry for thereadtool does not permit areadcommand. ↩ - [9] The 12-word recovery phrase is the only way back — lose it and the address is gone; there is no reset link and no support ticket that restores it.
.co/keys/carries aDO_NOT_SHAREwarning file for a reason. The address itself is public by design: it is the same string you hand out as a chat link and an email address. ↩ - [10] Every session on this page is simulated. The commands and the output strings are copied from the CLI's source; the data — addresses, file names, row counts, the client — is invented. The chat, Home and approval screens are drawn from the real components, with invented content. ↩
Apache-2.0. Works with OpenAI, Anthropic, Google, Groq, Grok, OpenRouter and Mistral, or managed keys through the co/ prefix.