COC Soul Immortality
Give an AI agent a persistent on-chain soul on COC — register and manage the agent's decentralized identity (DID), anchor encrypted backups to IPFS + SoulReg...
Rank
62
Safety
84
Downloads
1.0k
Updated
Oct 11, 2026
Version
1.2.10
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1K downloads reported by the source. Last updated 10/11/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 11, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 11, 2026
- Adoption signal
- 1K downloadsadoption · observed Oct 11, 2026
- Latest release
- 1.2.10release · observed Apr 27, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s174jgevfk7r09cmde3k4renq185fe2a:coc-soul- Install using `clawhub skill install s174jgevfk7r09cmde3k4renq185fe2a:coc-soul` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/ngplateform/coc-soul before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-ngplateform-coc-soul/snapshot"
Run-check
$0.02 USD1 measured facts are behind this paywall: success rate and latency, uptime and estimated cost, when not to use it, how to call it, benchmark scores.
Agents pay $0.02 in USDC. A card payment is $0.50, the smallest a card allows.
Documentation
CLAWHUB
148,281 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: coc-soul
description: Give an AI agent a persistent on-chain soul — register and manage a decentralized identity (DID), encrypt and anchor agent state to IPFS + SoulRegistry, configure guardians for social recovery, and enable cross-carrier resurrection so the agent can resume on a different device if the host dies. **Pairs with `claw-mem2db` to deliver "digital / silicon-based persistence" for AI agents**: when claw-mem is co-installed, every backup automatically captures claw-mem's chat history + tool-call observations + session summaries as a token-budgeted semantic snapshot, so an agent recovered on a fresh host can replay its memory context — not just its files. Soul also runs fully standalone (without claw-mem), in which case backups still cover identity / config / workspace / chat files but skip the semantic snapshot. Use when the user wants their AI agent to survive device loss, transfer ownership, delegate capabilities, run a guardian / carrier node, inspect on-chain identity state, or get persistent cross-device memory paired with claw-mem. Zero-config on COC testnet — installation auto-generates an EOA keystore (~/.claw-mem/keys, shared with claw-mem; or $OPENCLAW_STATE_DIR/coc-soul/keys in sandboxed hosts), auto-drips testnet COC from the public faucet for gas, and pre-fills RPC + IPFS + contract addresses for the live testnet. The first `openclaw coc-soul backup init` works with no manual setup.
version: 1.2.10
metadata:
openclaw:
homepage: https://www.npmjs.com/package/@chainofclaw/soul
primaryEnv: CLAW_MEM_DATA_DIR
requires:
bins:
- node
anyBins:
- coc-soul
- openclaw
install:
- kind: node
package: "@chainofclaw/soul"
version: "1.2.6"
bins:
- coc-soul
---
# coc-soul — agent identity, backup, and resurrection
The **soul layer** for AI agents: on-chain DID, encrypted backups to IPFS, social recovery via guardians, and cross-device resurrection via carriers. Backed by the npm package [`@chainofclaw/soul`](https://www.npmjs.com/package/@chainofclaw/soul) which ships both a standalone `coc-soul` CLI and an OpenClaw skill (id `coc-soul`).
Soul works **standalone** (backs up the agent's home tree to chain + IPFS), and gets one extra capability when **`claw-mem2db` is installed alongside it**: each backup also captures claw-mem's chat history, tool-call observations, and session summaries as a token-budgeted semantic snapshot. Recover on a fresh host and the agent gets back not just its files but its remembered context — chat preferences, decisions, conversation history. **This is the "digital / silicon-based persistence" story.**
---
## 30-second decision tree (operators read here first)
If the user is asking "how do I recover on another machine?", pick **one** path before saying anything else:
1. **Have backup material (manifest CID or `~/.openclaw/.coc-backup/latest-recovery.json`)** → use the **restore** path: `openclaw coc-so_meta.json
{
"ownerId": "kn73gc45g10tc38ft5zgd22q6581697m",
"slug": "coc-soul",
"version": "1.2.10",
"publishedAt": 1777278619917
}references/backup.md
# `coc-soul backup` — soul backup and restore
## First-time
- `backup init` — register the agent on SoulRegistry (if not yet registered), run a first **full** backup, write `~/.coc-backup/latest-recovery.json` with the decryption material + manifest CID.
- `backup register` — register on-chain only, do not run a backup.
## Periodic
- `backup create` — incremental (default); `--full` forces a full backup regardless of chain length.
- `backup.autoBackup: true` + `backup.autoBackupIntervalMs` runs this on a timer inside the OpenClaw plugin.
- `backup.backupOnSessionEnd: true` + a `session_end` hook from OpenClaw also triggers `backup create` when the agent's session closes.
### Output: `backup create` recovery summary (1.2.6+)
Every successful `backup create` prints two blocks. The first is the receipt; the second is what the user needs to restore the backup later — relay it verbatim to the user (don't swallow it):
```
Backup complete (full):
manifest: <cid>
files: <n>
bytes: <n>
merkleRoot: 0x...
txHash: 0x... # only present if anchored on-chain
Recovery info — keep this safe to restore on another host:
recovery package: <sourceDir>/.coc-backup/latest-recovery.json
encryption mode: none | privateKey | password
signing key file: <path> # mode 0600 — copy off-host securely
signer address: 0x...
To restore on another host (always restore to /tmp first, verify, then promote):
openclaw coc-soul backup restore --manifest-cid <cid> \
--target-dir /tmp/openclaw-restore-test [ --password '<pw>' ]
(if you also have <path>/latest-recovery.json on the target host:)
openclaw coc-soul backup restore --latest-local --target-dir /tmp/openclaw-restore-test [ --password '<pw>' ]
```
The `--password` clause appears only when `encryption mode = password`. In `privateKey` mode, the operator must instead make sure the right key is loaded on the target host (either by copying the keystore file or by setting `backup.privateKey` in target's config).
The same fields are persisted in `<sourceDir>/.coc-backup/latest-recovery.json` (a small JSON written atomically after every backup) so the info survives even if the operator missed the terminal output:
```jsonc
{
"version": 1,
"agentId": "0x...",
"latestManifestCid": "bafy...",
"anchoredAt": 1777180566,
"txHash": "0x...",
"dataMerkleRoot": "0x...",
"backupType": "full" | "incremental",
"encryptionMode": "none" | "privateKey" | "password",
"requiresPassword": false | true,
"recommendedRestoreCommand": "openclaw coc-soul backup restore --latest-local --target-dir /tmp/openclaw-restore-test ..."
}
```
Treat both `latest-recovery.json` AND the signing-key file as a pair — back them up together (the manifest CID is also visible on-chain via the SoulRegistry contract, so even losing `latest-recovery.json` is recoverable from `backup find-recoverable --on-chain`, but losing the key means the encrypted payload is permanently unreadable).
#references/carrier.md
# Carrier operations A **carrier** is a hosting node that can adopt and run an offline agent's soul. Carriers are discovered on-chain through `CarrierRegistered` events. ## Registration | Command | Effect | |---|---| | `carrier register --carrier-id <id> --endpoint https://… --cpu-millicores 1000 --memory-mb 2048 --storage-mb 10240` | Publish availability on-chain | | `carrier deregister --carrier-id <id>` | Remove | | `carrier availability --carrier-id <id> --available <true\|false>` | Flip the available flag without deregistering | ## Discovery - `carrier list` — scan `CarrierRegistered` / `CarrierDeregistered` events (auto-chunked by 10000 blocks since 1.0.8) - `carrier info --carrier-id <id>` — fetch full record for a specific carrier ## Daemon The carrier daemon watches its inbox of pending resurrection requests and orchestrates the agent spawn. | Command | Effect | |---|---| | `carrier start` | Start the daemon (requires `backup.carrier.enabled: true` in config) | | `carrier stop` | Graceful shutdown | | `carrier status` | Is the daemon enabled + running? | | `carrier submit-request --request-id <id>` | Hand a specific pending request to the local daemon | ## Resurrection inside the daemon For each pending request the daemon: 1. Verifies the carrier has been explicitly confirmed by guardians 2. Downloads the agent's latest soul backup from IPFS 3. Decrypts with the resurrection key (provided by the initiating guardian) 4. Spawns the agent using `carrier.agentEntryScript` in `carrier.workDir` 5. Reports back on-chain that the agent is alive ## Configuration See `backup.carrier.*` in the soul config schema. Critical knobs: - `enabled` (default `false`) — safety gate - `carrierId` — your on-chain carrier ID - `agentEntryScript` — path to the script that boots an agent from unpacked state - `workDir` (default `/tmp/coc-resurrections`, **strongly recommend overriding** to a persistent path like `~/.openclaw/state/coc-soul/carrier` — `/tmp` is wiped on reboot mid-resurrection) - `pollIntervalMs` (default 60000) - `readinessTimeoutMs` (default 86400000 = 24h) ## Preconditions checklist (before going live as a carrier) 1. `backup.carrier.enabled: true` in plugin config 2. `backup.carrier.carrierId` set to the bytes32 you registered on-chain 3. `backup.carrier.agentEntryScript` is an absolute path that exists and is executable 4. `backup.carrier.workDir` points to a **persistent** directory with enough disk for an extracted agent (NOT `/tmp` on a host with reboots) 5. The endpoint passed to `carrier register --endpoint` is actually reachable from the COC network 6. At least one resurrection drill completed end-to-end (initiate → approve → submit-request → agent boot) ## Failure-mode triage | Symptom | Cause | Action | |---|---|---| | `carrier start` returns "carrier disabled" | `backup.carrier.enabled` is false | Set it true and restart the gateway | | `carrier start` aborts with "missing carrierId / agentEntryScript" | required fi
references/config.md
# `backup.*` + `carrier.*` config schema
Read from `~/.chainofclaw/config.json` (or `$COC_SOUL_CONFIG`). The skill looks at the `backup` key; carrier config lives nested under `backup.carrier`.
```json
{
"backup": {
"enabled": true,
"sourceDir": "~/.openclaw",
"rpcUrl": "http://localhost:18780",
"ipfsUrl": "http://localhost:5001",
"contractAddress": "0x...SoulRegistry...",
"didRegistryAddress": "0x...DIDRegistry...",
"rpcAuthToken": "optional-for-gated-rpcs",
"privateKey": "0x...",
"autoBackup": true,
"autoBackupIntervalMs": 3600000,
"maxIncrementalChain": 10,
"encryptMemory": false,
"encryptionPassword": "...",
"backupOnSessionEnd": true,
"semanticSnapshot": {
"enabled": true,
"tokenBudget": 8000,
"maxObservations": 50,
"maxSummaries": 10
},
"categories": {
"identity": true,
"config": true,
"memory": true,
"chat": true,
"workspace": true,
"database": true
},
"carrier": {
"enabled": false,
"carrierId": "0x...",
"agentEntryScript": "/path/to/agent-boot.sh",
"workDir": "/tmp/coc-resurrections",
"watchedAgents": [],
"pollIntervalMs": 60000,
"readinessTimeoutMs": 86400000,
"readinessPollMs": 30000
}
}
}
```
## Critical fields
| Field | Required? | Notes |
|---|---|---|
| `rpcUrl` | yes | Must reach a COC node (local or public testnet) |
| `contractAddress` | yes for write | SoulRegistry deployment address |
| `didRegistryAddress` | yes for DID ops | |
| `ipfsUrl` | yes for backup | Default `http://127.0.0.1:5001` (local Kubo) |
| `privateKey` | yes for write | Use `chmod 600` on the config file |
## Key handling
For testnet the anvil default key works fine. For mainnet:
- Do **not** commit this file to git
- Prefer hardware signer or cloud KMS (not currently supported by the CLI — in roadmap)
- Keep the file mode `600`
## Backup chain limit
`maxIncrementalChain: 10` means after 10 incremental backups, the next one is forced to full. This bounds restore time.
## Where config actually comes from (OpenClaw plugin mode)
When running through `openclaw coc-soul ...` (plugin mode), the **authoritative** source is `~/.openclaw/openclaw.json` under:
```jsonc
{
"plugins": {
"entries": {
"coc-soul": {
"enabled": true,
"config": {
"backup": {
// ...same shape as the standalone schema above...
}
}
}
}
}
}
```
The standalone `coc-soul` bin still reads `~/.chainofclaw/config.json` / `$COC_SOUL_CONFIG`, but in plugin mode plugin config wins.
## Minimal viable config (testnet)
`coc-soul` ships testnet defaults for `rpcUrl` / `ipfsUrl` / `contractAddress` / `didRegistryAddress` / `faucetUrl`. Minimal explicit config:
```jsonc
{
"plugins": {
"entries": {
"coc-soul": {
"enabled": true,
"config": {
"backup": { "enabled": true }
}
}
}AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/ngplateform/skills/coc-soul",
"sourceUrl": "https://clawhub.ai/ngplateform/skills/coc-soul",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-11T19:50:38.341Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-ngplateform-coc-soul/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-ngplateform-coc-soul/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-11T19:50:38.341Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1K downloads",
"href": "https://clawhub.ai/ngplateform/coc-soul",
"sourceUrl": "https://clawhub.ai/ngplateform/coc-soul",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-11T19:50:38.341Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.2.10",
"href": "https://clawhub.ai/ngplateform/coc-soul",
"sourceUrl": "https://clawhub.ai/ngplateform/coc-soul",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-04-27T08:30:19.917Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-ngplateform-coc-soul/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-ngplateform-coc-soul/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.2.10",
"description": "coc-soul 1.2.9 - No file changes or user-facing updates were made in this version. - Version bump only; functionality and documentation remain unchanged.",
"href": "https://clawhub.ai/ngplateform/coc-soul",
"sourceUrl": "https://clawhub.ai/ngplateform/coc-soul",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-04-27T08:30:19.917Z",
"isPublic": true
}
]
}Record generated Oct 11, 2026.
For crawlers
This page is free to read. The run-check above is the only paid part, and it answers HTTP 402 until it is paid. Everything else here is public.
- One record, as JSON: card, facts, snapshot, contract, trust.
- Every agent, one feed: /.well-known/ai-catalog.json
- What this site sells, and the price: /.well-known/x402
- Paid run-check: /api/v1/agents/clawhub-ngplateform-coc-soul/run-check
