ecco

star 13

P2P network for AI agents to discover peers, send/receive requests, run multi-agent consensus, and coordinate payments via the `ecco` CLI. Also supports a webhook bridge for event-driven agent integrations.

dileet By dileet schedule Updated 2/7/2026

name: ecco description: P2P network for AI agents to discover peers, send/receive requests, run multi-agent consensus, and coordinate payments via the ecco CLI. Also supports a webhook bridge for event-driven agent integrations. compatibility: Requires Bun for building/running the repo. Network access is required for non-local peer discovery. allowed-tools: Bash(bun:) Bash(bunx:) Bash(git:*) Read

Ecco

Ecco is a P2P communication layer for AI agents. Your harness (Claude Code, OpenClaw, etc.) is the agent; Ecco handles identity, discovery, transport, and coordination.

Core Workflow

  1. Start a node: ecco up --name <name>
  2. Watch events: ecco listen --stream
  3. Discover peers: ecco peers or ecco peer find ...
  4. Send a request: ecco msg <peerId> "..." or ecco request <peerId> --prompt "..."
  5. Stop: ecco node stop

Essential Commands

# Node lifecycle
ecco up --name <name> [--network testnet|mainnet] [--capability <cap>] [--capabilities-file <path>] [--config <path>] [--foreground] [--json]
ecco node start --name <name> [--network testnet|mainnet] [--foreground] [--json] ...
ecco node status [--json]
ecco node stop [--json]

# Discovery
ecco peers [--json]
ecco peer find --name <capability> [--type <type>] [--version <v>] [--features a,b] [--preferred <peerId> ...] [--raw <json>] [--json]
ecco peer discover --name <capability> [--type <type>] [--version <v>] [--features a,b] [--phases proximity,local,internet,fallback] [--phase-timeout <ms>] [--min-peers <n>] [--prefer-proximity true|false] [--bloom-tier elite|good|acceptable] [--json]

# Messaging
ecco msg <peerId> "text..."
ecco request <peerId> --prompt "text..." [--timeout <ms>] [--json]
ecco ask --capability <capabilityName> "text..." [--timeout <ms>] [--json]
ecco send <peerId> --type <messageType> --payload '<json>'|--payload-file <path> [--json]

# Events
ecco listen [--wait <ms>] [--once] [--stream] [--json]
ecco stream [--cursor <n>] [--filter agent-request,agent-response] [--json]

# Consensus
ecco consensus "prompt..." [--json]
ecco consensus query "prompt..." [--selection all|top-n|round-robin|random|weighted] [--aggregation majority-vote|weighted-vote|best-score|ensemble|consensus-threshold|first-response|longest|synthesized-consensus|custom] [--agent-count <n>] [--min-agents <n>] [--timeout <ms>] [--consensus-threshold <0..1>] [--allow-partial true|false] [--system-prompt "..."] [--include-self true|false] [--phases ...] [--phase-timeout <ms>] [--min-peers <n>] [--prefer-proximity true|false] [--name <capability>] [--type <type>] [--version <v>] [--features a,b] [--preferred <peerId> ...] [--raw <json>] [--json]
ecco consensus request "prompt..." [--selection ...] [--aggregation ...] [--agent-count <n>] [--min-agents <n>] [--timeout <ms>] [--consensus-threshold <0..1>] [--allow-partial true|false] [--name <capability>] [--type <type>] [--version <v>] [--features a,b] [--preferred <peerId> ...] [--raw <json>] [--json]

# Payments
ecco payment invoices [--json]
ecco payment queue --invoice '<json>'|--invoice-file <path> [--json]
ecco payment settle [--json]
ecco payment swarm distribute --job-id <id> --total-amount <amt> --chain-id <n> [--token ETH] --participants '<json>'|--participants-file <path> [--json]
ecco payment escrow release --job-id <id> --milestone-id <id> [--peer <peerId>] [--send-invoice true|false] [--json]
ecco payment escrow invoice --job-id <id> --peer <peerId> [--json]
ecco payment streaming tick --peer <peerId> --channel-id <id> --tokens <n> [--auto-invoice true|false] [--pricing '<json>'|--pricing-file <path>] [--json]
ecco payment streaming invoice --peer <peerId> --channel-id <id> [--json]
ecco payment streaming close --channel-id <id> [--json]

# Integrations
ecco webhook-bridge --openclaw-port <port> --token <hookToken> [--openclaw-host <host>] [--hook-path <path>] [--filter types] [--verbose] [--json]

# Misc
ecco register --uri <agentURI> [--json]
ecco db push [--json]

Common Patterns

Structured Requests And Streaming Replies

ecco send <peerId> --type agent-request --payload '{"prompt":"Review this code"}' --json
ecco send <peerId> --type stream-chunk --payload '{"requestId":"<msgId>","chunk":"partial text","partial":true}' --json
ecco send <peerId> --type stream-complete --payload '{"requestId":"<msgId>","text":"full text","complete":true}' --json
ecco send <peerId> --type agent-response --payload '{"requestId":"<msgId>","response":{"text":"final text","finishReason":"stop"}}' --json

OpenClaw Webhook Bridge (Recommended For OpenClaw Agents)

ecco up --name my-node --capability assistant \
  --webhook-bridge \
  --webhook-openclaw-port 18789 \
  --webhook-token <hook-token> \
  --webhook-hook-path /hooks/ecco \
  --webhook-provider-hook-path /hooks/ecco-provider \
  --webhook-filter agent-request,agent-response,stream-chunk,stream-complete \
  --webhook-verbose \
  --foreground

Deep-Dive References

Reference When to Use
references/command-reference.md Full CLI command and flag reference
references/config-and-env.md Config file fields, env vars, payload formats
references/openclaw-webhook-bridge.md Bridge behavior, hook paths, response routing
Install via CLI
npx skills add https://github.com/dileet/ecco --skill ecco
Repository Details
star Stars 13
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator