Date: March 28, 2026 Version: @rootz/morpheus-agent v0.1.0 Tester: Steven Sprague + Claude Opus 4.6 Status: PASSED -- all steps completed successfully
| Component | Detail |
|-----------|--------|
| Morpheus API | Live -- https://api.mor.org/api/v1 |
| Morpheus Model | Kimi K2.5 (live, real tokens consumed) |
| Agent Mode | --local (simulated chain, console logging) |
| Desktop V6 | Running (port 3020), wallet 0x3f07...8B1, 17 POL |
| Agent TEE | Not bootstrapped (relay not initialized) |
| Sovereign Secret | 0x70b893e3b519255166a1fb64dcde920d056a2d5c (real, on Polygon) |
| Element | Status | Detail |
|---------|--------|--------|
| Morpheus inference calls | REAL | 3 live API calls to Kimi K2.5, real tokens |
| Birth certificate content | REAL | Correct structure, parents, policy |
| Birth certificate on-chain | REAL | Written to Polygon via Desktop V6 create_archive |
| Sovereign Secret contract | REAL | 0x70b893... deployed on Polygon Mainnet 137 |
| Deployment TX | REAL | 0xa689ba006882b0ee1fae319de9ac3362960d4e1ecb7777686891ba9d16f06f7c |
| Action Note chain-linking | SIMULATED | Hash-linking computed correctly but Notes written to console, not to chain |
| Action Note signatures | SIMULATED | Agent signature = 0x stub (Desktop relay not wired for morpheus-agent) |
| Settlement Merkle root | SIMULATED | Computed correctly but not anchored on Polygon |
| SecureChannel signing | SIMULATED | Channel active at Layer 1, but signatures are stubs in local mode |
| Provider manifest | NOT COLLECTED | No real provider queried from BASE ProviderRegistry |
Tool: morpheus_create_agent
Agent: 0xB29A12a4741430e707E596F71e9d7Bca722ffaA6
Authorizer: 0xCf3167957d57EC9dCDb59a569549f4DaD62b3fDa (Steven Sprague)
AI Parent: morpheus / kimi-k2.5
Scope: provable-ai-research
Created: 2026-03-28T16:34:51.774Z
Birth certificate written as Note 0 (console). Same content later anchored on-chain via create_archive to Sovereign Secret 0x70b893....
Tool: morpheus_inference
Prompt: "What is the current state of decentralized AI inference in March 2026?"
System: "You are a research analyst focused on decentralized AI infrastructure."
Model: kimi-k2.5 (LIVE)
Tokens: 1,542 (prompt + completion)
Latency: 27,094ms
Note Hash: 0x797b7de8e0b4ad5d120387f119ab9a363b69f03ab86f76249141ca19faa434f5
Response covered: Bittensor, Ritual/Modulus, Akash, Livepeer, Gensyn. Noted persistent unsolved problems: verification overhead, latency floor, weight custody, quality variance. Kimi's knowledge cutoff is April 2024 -- it projected forward but didn't know its own ecosystem.
Tool: morpheus_inference
Prompt: "What are the biggest gaps in AI agent identity today?"
System: "You are a research analyst focused on AI agent security and identity."
Model: kimi-k2.5 (LIVE)
Tokens: 1,702
Latency: 28,839ms
Note Hash: 0x945544b736d04adb056fe826952edb19b70db9934488dde5b1399d9eb40c4144
Kimi independently described the EXACT architecture we built: TEE attestation, signed delegation chains, capability tokens, hardware-rooted identity, SPIFFE/SPIRE mutual auth. It does not know Rootz exists.
Tool: morpheus_inference
Prompt: "If every AI inference call produced a signed receipt, how would that change enterprise adoption, regulation, and insurance?"
System: "You are a research analyst focused on enterprise AI governance."
Model: kimi-k2.5 (LIVE)
Tokens: 969
Latency: 16,118ms
Note Hash: 0x127be32bf9b14e3d451be2943a27431478e1e9053fdd62d493314ae45815f4b6
Response covered: shadow AI eradication, EU AI Act compliance, SEC disclosure, parametric insurance, fault isolation. Noted key friction: key management at scale and receipt oracle problem.
Tool: morpheus_settle
From Note: 1
To Note: 4
Actions: 3
Total Tokens: 4,213
Merkle Root: 0xc4f395e627c1ecda268028c8aadd83aa45f4c49147896ffdb231920d1e530a1b
Policy Hash: 0xe8dac4d2fcd06bddfad22591fa5c497e4cb87f1731b97b308b0be1511be2fe1d
Tool: morpheus_status
Initialized: true
Agent: 0xB29A12a4741430e707E596F71e9d7Bca722ffaA6
Sovereign Secret: 0xTEST (local mode -- real address is 0x70b893...)
Session Notes: 5 (birth cert + 3 inferences + settlement)
Inference Calls: 3
Total Tokens: 4,213
Revoked: false
Last Note Hash: 0x58d03b6b4dbf0e0a68a80e4e6d10a08b501ac7d6d868ecc9605d3e638ba0693c
The hash chain was computed correctly but only exists in memory / console logs:
Note 0: Birth Certificate
Hash: 0x (genesis, no previous)
Note 1: Inference -- "State of decentralized AI"
Previous: 0x797b7de8...
Note 2: Inference -- "Gaps in AI agent identity"
Previous: 0x945544b7...
Note 3: Inference -- "Signed receipts change enterprise/regulation/insurance"
Previous: 0x127be32b...
Note 4: Settlement
Merkle Root: 0xc4f395e6...
Covers Notes 1-4
To make this real: Switch from --local to --key-source relay with Desktop V6 providing TPM signing. Each Note becomes a real encrypted entry on the Sovereign Secret 0x70b893e3b519255166a1fb64dcde920d056a2d5c on Polygon.
1. Morpheus API integration works -- live inference, real tokens, correct response parsing 2. Birth certificate structure is correct -- parents (AI + Authorizer), policy, provenance 3. Hash-linking works -- each Note references the previous Note's hash 4. Settlement computes valid Merkle root -- covers all session actions 5. MCP tools work end-to-end -- all 5 tools callable from Claude Code 6. SecureChannel is wired in -- every inference goes through it (Layer 1, stubs for 2/3) 7. On-chain Sovereign Secret exists -- real contract on Polygon for this agent
| Step | What | Blocker | |------|------|---------| | Relay mode | Desktop V6 signs Notes via TPM | TEE bootstrap needed | | Real Notes | Write action Notes to Sovereign Secret on Polygon | Relay mode | | Provider manifest | Query BASE ProviderRegistry for real provider data | None (code built) | | Layer 2 signing | Modify our Morpheus node proxy-router | Need to spin up node | | Layer 3 ECDH | Wire @rootz/crypto ECDH into SecureChannel | Layer 2 first |
Test conducted March 28, 2026. First ever AI agent with a birth certificate running on decentralized inference with a cryptographic audit chain.
sha256:a7b619d4186c96ca25589175bcdf780adbef39d8e76c896abe85c954cf91d926
IPFS stores a JSON envelope containing metadata (owner, tags, timestamps, source info) and a plainContent field.
The on-chain contentHash is the SHA-256 of the plainContent field value only — not the full IPFS document.
This is by design: the envelope metadata may vary, but the core content hash is immutable and anchored on-chain at creation time.
IPFS JSON envelope
├── owner, tags, timestamp, source, version (metadata)
├── contentHash: "sha256:..." (on-chain anchor)
└── plainContent: "{ ... }" ← THIS is what is hashed
curl -s "https://gateway.pinata.cloud/ipfs/QmY9xoFRYV3xbcNDoqqHMnd4T4nWFgHNLvpsbW7nmuwa2v" -o envelope.json
plainContent field# Python — extract the inner content that was hashed
import json
with open('envelope.json') as f:
envelope = json.load(f)
plain_content = envelope['plainContent'] # This is the hashed value
plainContent# Python
import hashlib
hash = hashlib.sha256(plain_content.encode('utf-8')).hexdigest()
print('sha256:' + hash)
Expected (on-chain): sha256:bc2a4e29870b3b24731ac49c0483ac75c74b482a3637fbbdb79063864ca8fe3a
Computed (from plainContent): sha256:<your result from Step 3>
→ If they match, content integrity is confirmed.
Visit: https://polygonscan.com/tx/0x849e545c451a3a3f9d4b86cbb15d1759d8ae354031c22a1ad913c82ab91ca1b8
Check: KeyVaultCreated event at block 84800045
Creator: 0x3f07d9de7d4f803d748f254c526fa6f351e3f8b1
The contentHash is stored in the encryptedKeysData field of the event.
| Claim | Evidence |
|---|---|
| Content is authentic | SHA-256 of plainContent matches on-chain contentHash |
| Published by 0x3f07...f8b1 | KeyVaultCreated event creator field |
| Published at known time | Block 84800045 timestamp |
| Content not modified | IPFS is content-addressable + hash match |
| Provenance chain intact | Contract → Event → IPFS → Hash = complete chain |
gateway.pinata.cloud/ipfs/QmY9xoFRYV3xbcNDoqqHMnd4T4nWFgHNLvpsbW7nmuwa2vplainContent fieldplainContent (UTF-8 encoded string)sha256:<computed> matches sha256:bc2a4e29870b3b24731ac49c0483ac75c74b482a3637fbbdb79063864ca8fe3a0x3f07d9de7d4f803d748f254c526fa6f351e3f8b1 via Polygonscan