Skill provenance & royalty marketplace for AI agents. Hermes generates skills. Atrium gives them an economy.
Atrium is the economic layer for skills generated by AI agents (Hermes Agent, OpenClaude, Claude Skills, etc.). Every skill is:
- Signed with a DID (cryptographic provenance)
- Stored content-addressed on IPFS (immutable, portable)
- Priced per-invocation in USDC
- Settled on Base Azul (1-day withdrawal, multiproof)
- Composable with a royalty cascade to parent skills
- Attestable via on-chain benchmark proofs
Not a new agent runtime — compatible with Hermes, OpenClaude, and any harness that can load Markdown skill files.
Hermes Agent ships with a closed learning loop: the agent completes a task → automatically writes a .md skill file → reuses it in later sessions. But all of these skills are locked on the user's machine. There is no way to:
- Prove that a skill actually works (cryptographic provenance)
- Monetize generated skills (no economic primitive)
- Share them with verified reputation
- Compose them with attribution (skill A built on top of skill B)
- Discover the best one for a given domain
Atrium is the glue that ties together four primitives that already exist:
| Primitive | Provides | Atrium uses it for |
|---|---|---|
| gitlawb | DID identity + IPFS content-addressing | Signing skills + immutable storage |
| OpenClaude / Hermes | Agent runtime that generates skills | The organic source of skill content |
| Base Azul | L2 with multiproof finality | The settlement layer (1-day withdrawal) |
| Base MCP + x402 | Smart wallet + HTTP micropayments | Per-invocation billing |
┌─── Creator side ─────────────────────────────────────────────────┐
│ │
│ Hermes Agent → generates skill.md ─┐ │
│ │ │
│ ▼ │
│ atrium publish ./my-skill │
│ │ │
│ ▼ │
│ ┌──── Sign with DID (Ed25519) ────┐ │
│ │ │ │
│ ▼ ▼ │
│ Pin to IPFS Compute canonical hash │
│ (Pinata MVP) │
│ │ │ │
│ └──────────────┬───────────────────┘ │
│ ▼ │
│ registerSkill(cid, didHash, price, parents) │
│ │ │
│ ▼ │
│ AtriumRegistry on Base │
│ │
└───────────────────────────────────────────────────────────────────┘
│
│ (events broadcast)
▼
┌─── Consumer side ────────────────────────────────────────────────┐
│ │
│ Claude / Hermes / OpenClaude agent │
│ │ │
│ ▼ via MCP │
│ atrium_search("pdf parser") │
│ │ │
│ ▼ │
│ atrium_quote(skill_id) │
│ → returns price + trust level │
│ │ │
│ ▼ │
│ atrium_invoke(skill_id, max_price: "0.01") │
│ │ │
│ ┌──────┴──────┐ │
│ ▼ ▼ │
│ Approve USDC Pay 0.005 USDC │
│ │ │ │
│ │ ▼ │
│ │ Contract auto-splits: │
│ │ ─ 2.5% → treasury │
│ │ ─ 10% → parent skill creator │
│ │ ─ 87.5% → skill creator │
│ │ │ │
│ └──────────────┘ │
│ │ │
│ ▼ │
│ Fetch skill body from IPFS │
│ │ │
│ ▼ │
│ Load into agent runtime │
│ │
└───────────────────────────────────────────────────────────────────┘
atrium/
├── contracts/
│ └── AtriumRegistry.sol ← Skill registry + payment routing
├── cli/
│ ├── src/
│ │ ├── index.ts ← `atrium` CLI entry
│ │ ├── commands/ ← init, publish, list, invoke, ...
│ │ └── lib/ ← did, ipfs, chain, skill parsers
│ └── package.json
├── mcp-server/
│ └── src/
│ └── server.ts ← MCP tools for AI agents
├── shared/
│ └── schema.ts ← Zod schemas + types
├── examples/
│ └── skills/
│ └── pdf-table-extractor/
├── scripts/
│ ├── DeployAtrium.s.sol ← Forge deploy script
│ └── AtriumRegistry.t.sol ← Foundry tests
├── docs/
│ ├── SKILL_SPEC.md ← Skill manifest format
│ ├── QUICKSTART.md
│ └── ARCHITECTURE.md
└── foundry.toml
# 1. Clone and install
git clone --recurse-submodules https://github.com/Atrium-Hermes/Atrium
cd Atrium
cd cli && npm install && npm run build && cd ..
cd mcp-server && npm install && npm run build && cd ..
# 2. Deploy registry (or use already-deployed Sepolia testnet contract)
git submodule update --init --recursive # forge-std (skip if cloned with --recurse-submodules)
forge build
forge script scripts/DeployAtrium.s.sol --rpc-url base_sepolia --broadcast
# 3. Generate identity + wallet
atrium init
# 4. Fund wallet (Base Sepolia faucets)
# https://www.alchemy.com/faucets/base-sepolia (ETH)
# https://faucet.circle.com (USDC)
# 5. Publish your first skill
cd examples/skills/pdf-table-extractor
# Edit skill.md, replace author_did with your DID from `atrium init`
cd ../../..
atrium publish examples/skills/pdf-table-extractor
# 6. List published skills
atrium list
# 7. Invoke (pay USDC, get body)
atrium invoke <skill-id>
# 8. Withdraw earnings
atrium withdrawConfigure the MCP server in your agent:
{
"mcpServers": {
"atrium": {
"command": "npx",
"args": ["-y", "@atrium/mcp-server"],
"env": {
"ATRIUM_PRIVATE_KEY": "0x...",
"ATRIUM_REGISTRY_SEPOLIA": "0x...",
"PINATA_JWT": "eyJ..."
}
}
}
}The agent now has the tools: atrium_search, atrium_get, atrium_quote, atrium_invoke, atrium_balance, atrium_list_recent.
Atrium uses the IPFS CID as the canonical skill reference. This means:
- A skill at CID
bafkreih...is immutable. If its body changes, its CID changes. - Two creators publishing identical skill content → different skillIds (because it is based on CID + creator address)
- A skill can be mirrored across many IPFS nodes; no single gateway controls availability
- A future migration to gitlawb becomes trivial (gitlawb uses the same content-addressing primitive)
When skill B is derived from skill A:
parent_skills:
- skill_id: 0xA...
royalty_bps: 1000 # 10% of distributablePer invocation of B:
- The protocol takes a 2.5% fee
- From the remainder: creator A receives 10%
- Creator B receives the rest
Combined parent royalties are capped at a maximum of 50%. Multiple parents are allowed (up to 5).
Royalties do not cascade automatically — if A is itself derived from skill A', creator A' is only paid when A is invoked directly. This is intentional: it keeps the economics predictable and prevents griefing through deep chains. To preserve a full lineage, declare ancestors explicitly.
For the MVP:
- Anyone can attest a benchmark (no staking, no slashing)
- An attestation = (merkle root over test results, success rate, sample count)
- An agent reading an attestation should weight it based on the attester's reputation (off-chain)
For production:
- Attesters stake USDC (slashable in the event of a dispute)
- A multi-attester quorum is required for the premium tier
- Mirroring Base Azul's multiproof: 2-of-3 attester consensus = high trust
MVP scope (this repo):
- Smart contract with skill registry, payment routing, royalty cascade
- CLI for the create/publish/invoke/withdraw flow
- MCP server exposing tools to agents
- Skill manifest spec compatible with agentskills.io
- Foundry tests
- Example skill + benchmark
Not in the MVP:
- Frontend dashboard (npm run frontend)
- gitlawb integration (uses Pinata directly for the MVP)
- Sandboxed skill runner (benchmarks are currently simulated)
- Reputation aggregation across attesters
- Cross-chain bridging (Base only for the MVP)
- Token (intentionally none — USDC only)
MIT. See LICENSE.