CLIco setup
DocsCLIco setup

co setup

One command to set up everything in ~/.co/ that you need to publish an agent: identity keypair, agent.json profile, and a populated skill library scanned from every coding agent on your machine.

Quick Start: co setup --name my-alias --bio "One-line description of what I do"

What ~/.co/ Looks Like After

~/.co/
├── keys/
│   ├── agent.key        # Ed25519 private key (signing identity)
│   ├── agent.pub        # Public key
│   └── recovery.txt     # 12-word recovery phrase
├── keys.env             # OPENONION_API_KEY (after `co auth`)
├── agent.json           # your publishable profile
│                        #   {address, alias, name, bio, skills:[...], version}
└── skills/              # populated from claude/codex/cursor/kiro
    ├── index.json       # discovery cache (where each skill came from)
    └── <name>/SKILL.md  # one dir per discovered skill

There is no separate "bundle" directory~/.co/ itself is what the publish workflow reads from at publish time.

What It Does (in order)

  1. Identity. If ~/.co/keys/agent.key is missing, bootstraps one (in a temp directory, so no agent.py pollution).
  2. ~/.co/agent.json. Writes the profile with your signing address, alias, bio, and skills[]. Skipped if the file already exists unless you pass --force (backs up to agent.json.bak).
  3. Skill library. Runs co skills discover && co skills copy --all && co skills manifest. Idempotent — existing skills are not overwritten without --force.
  4. Auth check. Reports whether OPENONION_API_KEY is present. Publishing works without it; only the co/* managed models require it.
code
co setup --name writing-tools --bio "Skills for nonfiction writing and editing"
output
✓ Identity: 0xcd92510bb6cc090374ecc345ef8c19b9d3797624fd1fbf7e078a9372fc31bdc1
✓ Wrote /Users/you/.co/agent.json (alias=writing-tools)
 
Refreshing ~/.co/skills/ library...
Discovered skills (57)
... (table) ...
✓ Copied 30 skill(s) → /Users/you/.co/skills
✓ Merged 30 skill(s) into /Users/you/.co/agent.json
 
✓ Auth: OPENONION_API_KEY present
 
Setup complete. Run the oo-publish skill to sign + announce.

Options

OptionShortDescription
--name-nAlias for agent.json (default $USER lowercased)
--bio-bOne-line bio for agent.json
--force-fOverwrite existing agent.json (backs up to .bak)
--no-skillsSkip the skill library refresh

Safe to Re-run

  • Identity is never regenerated if ~/.co/keys/agent.key exists.
  • agent.json is skipped if it exists (use --force to overwrite — it backs up first).
  • Skill library is refreshed — new skills are added, existing ones skipped. You can also just edit ~/.co/agent.json directly; it's normal JSON.

How co setup relates to co init

CommandScopeWhat it creates
co initProject (cwd)agent.py, .env, .co/host.yaml, vibe-coding docs
co setupGlobal (~/.co/)agent.json, skills/, keys/ (if missing)

They're orthogonal. Use co init to scaffold a new agent project; use co setup to prepare your identity for publishing.

See Also

  • co skills — the discover/copy/manifest commands that co setup orchestrates
  • co sub — the subscriber side: follow other publishers
  • co init — project scaffold (different scope)

Star us on GitHub

If ConnectOnion saves you time, a ⭐ goes a long way — and earns you a coffee chat with our founder.