co sub
Follow another agent's address, mirror their published skills to your machine, and make them available to every coding agent on your system (Claude Code, Codex, OpenClaw, Cursor, Kiro).
Quick Start
Restart a coding agent when the sync reports a positive installed count for it. A recorded subscription with no mirrored or installed skills needs no restart.
How the Fan-out Works
One signed subscription, including published companion files, is mirrored into ~/.co/subs/<alias>/ and distributed into detected coding agents. The local alias stays pinned if the publisher renames theirs. Active skills are also available in co ai as <alias>-<skill>.
| Tool | Destination | Mechanism |
|---|---|---|
| Claude Code | ~/.claude/plugins/<alias>/ | Symlink to the whole bundle |
| Codex | ~/.codex/skills/<alias>-<skill>/ | Per-skill symlinks |
| OpenClaw | ~/.openclaw/skills/<alias>-<skill>/ | Per-skill symlinks |
| Cursor | ~/.cursor/rules/<alias>-<skill>.mdc | File copy with frontmatter rewritten |
| Kiro | ~/.kiro/steering/<alias>-<skill>.md | Plain file copy |
Only tools that exist on your machine (have a ~/.<tool>/ directory) are touched.
Commands
co sub sync <target> follows or refreshes one publisher. Bare co sub refreshes every entry in ~/.co/subscriptions.txt. A refresh reconciles owned installations with the current signed publish, including withdrawn skills.
co sub sync <0xaddress> — sync one publisher
Re-running refreshes. Once a publisher is in subscriptions.txt, the pinned local alias works as shorthand: co sub sync changxing. --relay <url> overrides the configured relay. A conflicting user file or directory is preserved and reported.
co sub — sync every subscription
Walks ~/.co/subscriptions.txt and re-syncs each publisher in order. If one is unreachable the command stops at the failure (fail-fast is intentional).
co sub list — local view only
No network calls. The first count is signed profile names; the second is locally available bodies. Installed counts reflect detected coding agents.
co sub remove <alias|0xaddress>
Reverse of sync: drops the line from subscriptions.txt, removes owned per-tool links and copies, and deletes ~/.co/subs/<alias>/. User paths with a matching name are left alone.
Address vs Alias
First-time subscriptions require a 0x address. Aliases are mutable: a publisher can change their alias, the relay could serve the wrong agent under a familiar name, and the subscriber couldn't tell after the fact. Subscribing by alias would be an MITM hole.
Once you've subscribed by address, its local alias is pinned next to it. A later publisher rename does not change your install paths. The pinned alias works for refresh; a new alias that is not in subscriptions.txt requires the full address.
~/.co/subscriptions.txt is plain text. Let co sub sync and co sub remove maintain it alongside the mirror and authenticated revision state:
# ~/.co/subscriptions.txt — agents you follow # Format: <address> <alias> 0xcd92510bb6cc090374ecc345ef8c19b9d3797624fd1fbf7e078a9372fc31bdc1 changxing 0xabc... alice
Current Limits
- Signed publisher required. The subscriber verifies the publisher's profile-v2 signature, body, and companion files before writing them. An older relay that omits signed file bytes causes the sync to fail.
- No lazy version check. Every sync re-pulls the full profile + every skill body even if nothing changed. A future
profile-headrelay endpoint will let it skip unchanged publishers — the CLI surface won't change.
See Also
- • co setup — the publisher side: set up ~/.co/ identity and skill library
- • co skills — discover and import skills you've written yourself
- • Multi-Agent Networking — the broader relay/host/connect picture
ConnectOnion