The co create command creates new ConnectOnion projects with intelligent defaults and automatic setup.
co create [name] [options]Creates a new agent project with:
- AI features enabled by default (agents need LLMs)
- API keys copied from global config (if available)
- Global address and email used for all projects
- Complete agent implementation ready to run
When ~/.co/ doesn't exist, co create automatically sets up global configuration:
$ co create my-first-agent
🚀 Welcome to ConnectOnion!
✨ Setting up global configuration...
✓ Creating ~/.co/ directory
✓ Generating master keypair
✓ Your address: 0x7a9f3b2c8d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a
✓ Your email: 0x7a9f3b2c@mail.openonion.ai
✓ Creating ~/.co/keys.env (ready for your API keys)
🧅 ConnectOnion Project Creator
========================================
✔ Choose a template:
❯ Minimal - Simple starting point
Web Research - Data scraping & analysis
Playwright - Browser automation
Custom - AI generates based on needs
✔ Paste your API key (or Enter to skip): › sk-proj-xxx
✓ Detected OpenAI API key
✓ Saved to ~/.co/keys.env for future projects
✔ Project name: › my-first-agent
✅ Project created successfully!
📁 Created: my-first-agent
📦 Template: Minimal
✨ AI Features: Enabled
📧 Agent email: 0x7a9f3b2c@mail.openonion.ai (global)
🔑 Agent address: 0x7a9f3b2c8d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a (global)
🚀 Next steps:
────────────────────────────────────────
1️⃣ cd my-first-agent
2️⃣ pip install python-dotenv
3️⃣ python agent.pyWhen ~/.co/ already exists:
$ co create another-agent
🧅 ConnectOnion Project Creator
========================================
✓ Using global identity: 0x7a9f3b2c8d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a
✓ Using global email: 0x7a9f3b2c@mail.openonion.ai
✔ Choose a template: › Web Research
✓ Found API keys in ~/.co/keys.env
✓ OpenAI key will be copied to project
✔ Project name: › research-bot
✅ Project created successfully!
📁 Created: research-bot
📦 Template: Web Research
✨ AI Features: Enabled
📧 Agent email: 0x7a9f3b2c@mail.openonion.ai (global)
🔑 Agent address: 0x7a9f3b2c8d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a (global)
🔑 API keys: Copied from global config
💡 Using global email/address. Run 'co status' to view.
🚀 Next steps:
────────────────────────────────────────
1️⃣ cd research-bot
2️⃣ pip install -r requirements.txt
3️⃣ python agent.py~/.co/
├── keys.env # Shared API keys and identity
├── keys/ # Master identity
│ ├── agent.key # Private key (for signing)
│ └── recovery.txt # Recovery phrase
└── logs/
└── cli.log # Command history
my-agent/
├── agent.py # Main agent implementation
├── .env # API keys (from ~/.co/keys.env)
├── .co/
│ ├── host.yaml # Project config (uses global address/email)
│ └── docs/ # Framework documentation
│ ├── co-vibe-coding-all-in-one.md
│ └── connectonion.md
├── README.md # Project documentation
└── .gitignore # Excludes .env and sensitive files
Note: Projects use global address/email by default.
All projects use the global identity (address + email) from ~/.co. Run co status to view your address and email.
- minimal - Basic agent with simple tools
- coder - Filesystem + shell access for coding tasks
- browser - Browser automation with Playwright
- web-research - Web scraping and research capabilities
- custom - AI-generated based on your description
# Interactive selection
$ co create
✔ Choose a template: ›
# Direct specification
$ co create my-bot --template minimal
# Custom with description
$ co create assistant --template custom --description "Slack integration bot"co create [name] [options]
Options:
[name] Project name (optional, will prompt)
--template, -t Template to use (minimal/coder/browser/web-research/custom)
--description, -d Description for custom template
--no-ai Disable AI features (not recommended)
--key API key to use (overrides global)
--yes, -y Accept all defaults- Command line (
--keyflag) - Global config (
~/.co/keys.env) - Interactive prompt (if not found)
- Skip (user adds to .env later)
The CLI automatically detects API key providers:
sk-proj-...→ OpenAIsk-ant-...→ AnthropicAIza...→ Googlegsk_...→ Groq
AI features are always enabled because agents need LLMs. To disable (not recommended):
- Edit
.co/host.yamlafter creation - Use
--no-aiflag (limits functionality)
By default, all projects share:
- Same address (from global config)
- Same email (from global config)
- Same API keys (from global config)
This keeps things simple - one identity for all your agents.
# Simplest form - uses global identity
$ co create
# With name - uses global identity
$ co create my-bot
# With template - uses global identity
$ co create my-bot --template web-research
# Accept all defaults
$ co create quickbot -y# Interactive
$ co create --template custom
# With description
$ co create slack-bot -t custom -d "Slack bot for answering questions"- First
co create: Generates global address/email - All projects: Use same global address/email
- API keys: Copied from global
keys.env
This keeps things simple - one identity for all your agents (like using same email for all repos).
$ co status# Fix global permissions
$ chmod 700 ~/.co
$ chmod 600 ~/.co/keys.env
# Fix project permissions
$ chmod 700 my-agent/.co- First time: Creates global address/email
- Every project: Uses same global address/email
- API keys: Copied from global to each project
- Ready to run: Complete agent with identity
Simple and consistent - one identity for all your agents.