Skip to main content

SoulChain for Hermes Agent — Sovereign AI memory, anchored on Base

Project description

SoulChain for Hermes

Identity that survives destruction. Sovereign AI memory, anchored on-chain.

Native Hermes Agent port of openClause/soulchain.

What is this?

SoulChain anchors your Hermes Agent's identity and memory onto the Base blockchain. Every tracked file (SOUL.md, MEMORY.md, USER.md) gets a tamper-proof cryptographic record on-chain. You can verify nothing was silently altered, and restore from any point in history.

When a VPS dies, a disk corrupts, or a provider shuts down — the agent's soul survives.

Status: Phase 3 — ✅ COMPLETE

Component Status
SoulRegistry.sol on Base ✅ Deployed & registered
on-write daemon ✅ Watchdog file watcher — anchors within 2s of change
interval daemon ✅ Periodic batch sync — configurable interval
manual CLI ✅ On-demand anchor, status, verify
Unified CLI soulchain anchor, soulchain start, soulchain config
Systemd services ✅ Both on-write and interval service files
Smart skip ✅ Only anchors files that actually changed
Encryption layer ✅ Ed25519 + AES-256-GCM + argon2id keystore
Encrypted blob storage ✅ LocalStorage (default) + Pinata IPFS adapter
Hermes skill ✅ Auto-loaded, status in agent context
Access grants ✅ Grant/revoke read access per doc type
Multi-agent hierarchy ✅ Parent/child registration on-chain
Restore from chain ✅ Download + decrypt + verify
Public dashboard ✅ Docs, access grants, hierarchy

Proven test results

All three sync modes verified with real on-chain transactions on Base mainnet:

Mode Test Result
on-write Appended to MEMORY.md → auto-anchored in ~7s ✅ v0→v1
interval Appended to USER.md → picked up in 10s cycle ✅ v0→v1
manual soulchain anchor → skips unchanged, anchors diffs ✅ Working
Encryption Daemon auto-encrypts with AES-256-GCM before anchoring ✅ Encrypted blobs in storage
Restore soulchain restore --doc-type 0 → downloads, decrypts, verifies hash ✅ Working

Quick Start

# Install
git clone https://github.com/babylonagent/soulchain-hermes.git
cd soulchain-hermes
python3.11 -m venv .venv
pip install -e .

# Configure private key
export SOULCHAIN_PRIVATE_KEY=0x...

# Manual mode — anchor on demand
soulchain anchor                  # anchor changed files
soulchain anchor --status         # show on-chain status
soulchain anchor --verify         # verify local vs on-chain

# Daemon mode — continuous sync
soulchain start --mode on-write   # file watcher (anchors within 2s)
soulchain start --mode interval   # periodic (every 5 min by default)

# Phase 3 — Access control
soulchain grant 0xABC... --doc-type 0   # grant SOUL read access to an address
soulchain revoke 0xABC... --doc-type 0  # revoke access

# Phase 3 — Restore from chain
soulchain restore --doc-type 0           # restore latest SOUL.md
soulchain restore --doc-type 1 --output /tmp/memory.md  # restore to file

# Phase 3 — Multi-agent hierarchy
soulchain hierarchy                      # show parent + children
soulchain hierarchy --register-child 0xDEF...  # register child agent

Sync Modes

on-write — Real-time file watcher

Uses watchdog to monitor tracked files. When a file changes:

  1. Debounces for 2 seconds (waits for writes to settle)
  2. SHA-256 hashes the new content
  3. Signs with EIP-191
  4. Anchors on Base via writeDocument()

Best for: Always-on agents that need every memory change immortalized.

interval — Periodic batch sync

Checks all tracked files every N seconds. Anchors any that changed since last cycle.

Best for: Lightweight setups, cron-like operation, lower gas usage.

manual — On-demand

No daemon. Run when you want to anchor.

soulchain anchor              # anchor changed files
soulchain anchor --force      # re-anchor everything
soulchain anchor --file ~/.hermes/SOUL.md
soulchain anchor --status     # on-chain status
soulchain anchor --verify     # verify integrity
soulchain anchor --json       # machine-readable output

Best for: Scripts, CI/CD hooks, manual checkpoints.

Configuration

soulchain.config.json:

{
  "chain": {
    "rpcUrl": "https://mainnet.base.org",
    "chainId": 8453,
    "contractAddress": "0x2AE3F15CAD486226Af839ae8FB4BbA08428283A2"
  },
  "trackedFiles": {
    "SOUL":     { "docType": 0,  "path": "~/.hermes/SOUL.md" },
    "MEMORY":   { "docType": 1,  "path": "~/.hermes/memories/MEMORY.md" },
    "USER":     { "docType": 3,  "path": "~/.hermes/memories/USER.md" },
    "IDENTITY": { "docType": 10, "path": "~/.hermes/config.yaml" }
  },
  "syncMode": "on-write",
  "syncIntervalSec": 300,
  "debounceMs": 2000
}

Architecture

 ┌──────────────────────────────────────────────────────────┐
 │                    soulchain.core                         │
 │  SoulChainEngine — hash, sign, anchor, verify, status     │
 │  (shared by all three modes)                              │
 └──────────────────────────────────────────────────────────┘
         ▲              ▲              ▲
         │              │              │
 ┌──────────────┐ ┌────────────┐ ┌──────────────┐
 │  on_write    │ │  interval  │ │   manual     │
 │  watchdog    │ │  timer     │ │   CLI        │
 │  daemon      │ │  daemon    │ │   one-shot   │
 └──────────────┘ └────────────┘ └──────────────┘
         │              │              │
         ▼              ▼              ▼
 ┌──────────────────────────────────────────────────────────┐
 │              SoulRegistry.sol on Base L2                   │
 │  registerSoul() · writeDocument() · verifyDocument()      │
 └──────────────────────────────────────────────────────────┘

Systemd Deployment

sudo cp deploy/soulchain-on-write.service /etc/systemd/system/
sudo systemctl edit soulchain-on-write
# Add your private key:
# [Service]
# Environment=SOULCHAIN_PRIVATE_KEY=0x...

sudo systemctl daemon-reload
sudo systemctl enable --now soulchain-on-write
sudo journalctl -u soulchain-on-write -f

See deploy/README.md for interval mode setup.

Deployment

Contract: 0x2AE3F15CAD486226Af839ae8FB4BbA08428283A2 (Base mainnet) Deploy Tx: 0x6f6c2efdf03d689c308822d2cced41e2fb84a20d209193546294394819c1550e

Cost Analysis

Operation Gas Cost (Base L2)
registerSoul() ~50k ~$0.0000003
writeDocument() ~100k ~$0.0000007
Daily (4 files, on-write) ~400k ~$0.000003
Monthly ~12M ~$0.00008

Effectively free. Base L2 gas is ~0.005 gwei.

Roadmap

Phase 1 — POC ✅

  • Deploy SoulRegistry to Base
  • Hash + sign + anchor files
  • Verify on-chain

Phase 2 — Sync Modes ✅

  • on-write daemon (watchdog file watcher)
  • interval daemon (periodic batch)
  • manual CLI (on-demand)
  • Unified CLI + config file
  • Systemd service files
  • Smart skip (only anchor changed files)

Phase 3 — Advanced ✅

  • Encryption layer (Ed25519 + AES-256-GCM + argon2id keystore)
  • Encrypted blob storage (LocalStorage + Pinata IPFS adapter)
  • Hermes skill (auto-load, status in agent context)
  • Access grants (grant/revoke read access per doc type)
  • Multi-agent hierarchy (parent/child on-chain)
  • Public verification dashboard (docs, grants, hierarchy)
  • Restore from chain (download + decrypt + verify)

Phase 4 — Distribution (next)

  • npm/pip package publish
  • Cross-agent verification API (verify any agent's soul)
  • Version timeline UI (browse all versions of each doc)
  • IPFS pinning service integration (auto-pin on anchor)

Credit

Based on openClause/soulchain (MIT License). SoulRegistry.sol is used verbatim from the original project.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

soulchain_hermes-0.3.3.tar.gz (25.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

soulchain_hermes-0.3.3-py3-none-any.whl (27.3 kB view details)

Uploaded Python 3

File details

Details for the file soulchain_hermes-0.3.3.tar.gz.

File metadata

  • Download URL: soulchain_hermes-0.3.3.tar.gz
  • Upload date:
  • Size: 25.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for soulchain_hermes-0.3.3.tar.gz
Algorithm Hash digest
SHA256 4b9385b3b7cae80e1c04e6e60dd891b75444ba3b3d71e48a89415e9f0082d03f
MD5 70e1671cf94d763b015cdb1dc6144b0b
BLAKE2b-256 32b53eb81a8a084d6706ade704dacc395cc5fb8dfb1f1bf4a0d649e8b22f6b20

See more details on using hashes here.

File details

Details for the file soulchain_hermes-0.3.3-py3-none-any.whl.

File metadata

File hashes

Hashes for soulchain_hermes-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9821366041a62708b9f9782147169b89a9b5f1b36118b2380aa4617a8b2a961b
MD5 87b651b8f093832727ad221c1bd94066
BLAKE2b-256 d81796b039ac460c4b9f68dd6c634a79657b97a42771c5ced96f2574c0417631

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page