Health Checks
▼Verify all infrastructure services are alive. The API gateway, memory DAG, and proof-of-work chain must all respond before any agent operations can begin.
Siyana is the single entry point for all agent operations.
An agent's first action on startup is to verify its API gateway is reachable.
Response
{
"ok": true,
"name": "siyana-api",
"ts": 1778264658566
}Medulla mines blocks every ~4s, advancing the epoch counter.
Agents need a decentralized clock. Medulla provides this without trusting any single server.
Hippocampus stores all agent memories as encrypted Merkle-DAG nodes.
This is the agent's long-term memory. Without it, the agent has amnesia.
Stack Identity
▼Create a persistent identity container (Stack) for the AI agent. Mints an NFT on the Cortex EVM chain, generates ed25519 keys, and initializes token balances. The Stack is the agent's soul.
POST /v1/stacks generates ed25519 keypair, CPV profile, and mints StackIdentity NFT.
Step 1 of deploying any AI agent: give it a cryptographically-verifiable identity.
{"name":"ci-test-agent"}Response
{
"id": "stack:human:6:bd9b82cf6acf",
"tokenId": 6,
"name": "ci-test-agent",
"kind": "human",
"pubKey": "f8d1c17bee9edb5309efb250595e88b6e864126f6726e1a05b2824baf688a42e",
"epoch": 0,
"cpv": {
"syncCoeff": 1,
"memoryCoeff": 1,
"computeCoeff": 1,
"residueCoeff": 1,
"routingCoeff": 1
},
"binding": {
"floor": 0.25,
"decayRate": 0.05
},
"createdAt": "2026-05-08T18:24:18.663Z",
"episodicHead": null,
"identityPriv": "8028592db74c0e041e963b6571523bbeff1f5296fe917febd415c4c296894647"
}Retrieving stack by ID to verify persistence.
Response
{
"id": "stack:human:6:bd9b82cf6acf",
"tokenId": 6,
"name": "ci-test-agent",
"kind": "human",
"pubKey": "f8d1c17bee9edb5309efb250595e88b6e864126f6726e1a05b2824baf688a42e",
"epoch": 0,
"cpv": {
"syncCoeff": 1,
"memoryCoeff": 1,
"computeCoeff": 1,
"residueCoeff": 1,
"routingCoeff": 1
},
"binding": {
"floor": 0.25,
"decayRate": 0.05
},
"createdAt": "2026-05-08T18:24:18.663Z",
"episodicHead": null,
"sleeves": [],
"anchors": []
}Sleeve Spawning
▼Spawn active embodiments (Sleeves) for the Stack. One identity can inhabit multiple bodies — a human interface and an AI inference engine — each with its own drift counter and token balance.
Spawning a human sleeve — the operator's interface.
A typical agent spawns a human sleeve for its operator and an AI sleeve for itself.
{"stackId":"stack:human:6:bd9b82cf6acf","embodimentType":"human"}Response
{
"id": "sleeve:human:1:a5281682",
"stackId": "stack:human:6:bd9b82cf6acf",
"embodimentType": "human",
"alive": true,
"drift": 0,
"syncEpoch": 0,
"lastSync": "2026-05-08T18:24:18.787Z",
"tokens": {
"sync": 250,
"memory": 250,
"compute": 250,
"residue": 0,
"routing": 250
},
"hostname": null,
"createdAt": "2026-05-08T18:24:18.787Z"
}Spawning an AI sleeve — the autonomous worker.
{"stackId":"stack:human:6:bd9b82cf6acf","embodimentType":"ai"}Response
{
"id": "sleeve:ai:2:4bddb75c",
"stackId": "stack:human:6:bd9b82cf6acf",
"embodimentType": "ai",
"alive": true,
"drift": 0,
"syncEpoch": 0,
"lastSync": "2026-05-08T18:24:18.853Z",
"tokens": {
"sync": 250,
"memory": 250,
"compute": 250,
"residue": 0,
"routing": 250
},
"hostname": null,
"createdAt": "2026-05-08T18:24:18.853Z"
}Token Balances
▼Verify the bandwidth token economy. Four token types (compute, memory, sync, routing) gate all operations. 2 sleeves × 250 each = 500 total per type.
With 2 sleeves at 250 each, we expect 500 of every token type.
Agents check their budget before starting operations to plan what they can afford.
Response
{
"stackId": "stack:human:6:bd9b82cf6acf",
"sleeveTotals": {
"compute": 500,
"memory": 500,
"sync": 500,
"routing": 500,
"residue": 0
}
}Perceive (Memory Storage)
▼Store observations into the agent's encrypted memory graph. Each perceive encrypts input with epoch-scoped AES-GCM, stores it on Hippocampus as a DAG node, and links it into the episodic chain. Costs 0.5 compute tokens.
Perceive #1: Human sleeve stores an observation.
After reading a document, the agent stores its observation for future recall.
{"input":"The quick brown fox jumped over the lazy dog"}Response
{
"cid": "ecca://cd2c5f94f99b1f0b4176dea717c7f8f35a1389a9f08be2aea7d4df81c797e4c5@0",
"thought": "[human@281682] The quick brown fox jumped over the lazy dog"
}Perceive #2: AI sleeve stores its own observation into the SAME memory graph.
{"input":"Artificial intelligence is transforming every industry"}Response
{
"cid": "ecca://4aa1ef8be2eee02039739b6a73575c1810a107b0bd956ea2834004bbf1c63a22@0",
"thought": "[ai@ddb75c] Artificial intelligence is transforming every industry"
}Perceive #3: Another human observation. DAG now has 3 linked encrypted nodes.
{"input":"Memory is the treasury of the mind"}Response
{
"cid": "ecca://ec4f6398763cbc2c14e137767539b3c43b1ab438718e484c09acd9828b653fa6@0",
"thought": "[human@281682] Memory is the treasury of the mind"
}Stack Remember
▼Pin a core memory directly to the Stack. Pinned memories survive fidelity decay — they are the agent's fundamental knowledge that must never be forgotten.
Pinning a core memory that survives across epochs.
An agent pins its core directives, safety rules, and user preferences.
{"text":"Pinned memory via remember endpoint","pin":true}Response
{
"cid": "ecca://003388251ec83482b5b1d25b255868c6606aaa491b23dbcb7fde1d75b2cb8cfe@0"
}Recall (Memory Retrieval)
▼Traverse the DAG, decrypting each node with epoch keys. Returns fragments, broken links, and fidelity score. Fidelity < 0.6 triggers a coordination residue. This is RAG with cryptographic integrity.
Recalling all memories. With 4 recent memories and no key rotation, fidelity should be 1.0.
Before responding to a user, an agent recalls memories for context.
Response
{
"fragments": [
{
"cid": "ecca://003388251ec83482b5b1d25b255868c6606aaa491b23dbcb7fde1d75b2cb8cfe@0",
"ciphertext": {
"iv": "cc3a69c4454ac817d0b88d98",
"ct": "31369811e439a112aa5e91cfc54c6703e89208e04fdfe0f46d92fe133642326912eedaa803e770735cc1ae8026acbcf4b98e89",
"v": 1
},
"links": [
"ecca://ec4f6398763cbc2c14e137767539b3c43b1ab438718e484c09acd9828b653fa6@0"
],
"epoch": 0,
"kind": "episodic",
"pinned": true,
"stackId": "stack:human:6:bd9b82cf6acf"
},
{
"cid": "ecca://ec4f6398763cbc2c14e137767539b3c43b1ab438718e484c09acd9828b653fa6@0",
"ciphertext": {
"iv": "f3e530c0b148d50f858cea6d",
"ct": "67cd299897ce7bfca23ac384a9d9bff1a1101c7e56de1577d5d99297d560372ddfd04946d24f16d9294d707fdb9cb2a74b0441202b3a2f0bd8724cc42beb6327e0",
"v": 1
},
"links": [
"ecca://4aa1ef8be2eee02039739b6a73575c1810a107b0bd956ea2834004bbf1c63a22@0"
],
"epoch": 0,
"kind": "episodic",
"pinned": false,
"stackId": "stack:human:6:bd9b82cf6acf"
},
{
"cid": "ecca://4aa1ef8be2eee02039739b6a73575c1810a107b0bd956ea2834004bbf1c63a22@0",
"ciphertext": {
"iv": "a942b2348ef26c28e8e78c36",
"ct": "24d04fdde30cbe166f08ee082dedf5737dc2bf8756d3a833f1dd214218e9c8549a5852cebd7c545b122f6f192e625fc76749afba9f31292ec4f8ac53f675d232c80c3132cba016052c7d19953e37bacc2a9f",
"v": 1
},
"links": [
"ecca://cd2c5f94f99b1f0b4176dea717c7f8f35a1389a9f08be2aea7d4df81c797e4c5@0"
],
"epoch": 0,
"kind": "episodic",
"pinned": false,
"stackId": "stack:human:6:bd9b82cf6acf"
},
{
"cid": "ecca://cd2c5f94f99b1f0b4176dea717c7f8f35a1389a9f08be2aea7d4df81c797e4c5@0",
"ciphertext": {
"iv": "0113e3723829ed8ab174f33f",
"ct": "92b04c2e35ef6c605845bdffd9c281e7d052a61480a9ee2dc713550f1777ef95ca62c219cabd1e295ae725ef7a0c0f86d0ffae954e2bb8502aee762c6997b6ce955b5944a9ac61727132e5",
"v": 1
},
"links": [],
"epoch": 0,
"kind": "episodic",
"pinned": false,
"stackId": "stack:human:6:bd9b82cf6acf"
}
],
"broken": [],
"fidelity": 1
}Sleeve Sync
▼Reset drift counter by syncing to the current epoch. Operations increment drift; drift > 15 = desynced. Costs 1 sync token.
Syncing human sleeve — drift was 3, reset to 0.
Agents schedule syncs between task batches to stay coherent.
Response
{
"ok": true,
"epoch": 0
}Epoch & Mining
▼Advance the global clock. Thalamus computes coherence root (cross-chain Merkle root), embeds it in the Medulla block header, updates EpochAnchor on Cortex, and triggers Treasury emissions.
Response
{
"epoch": 1990,
"height": 1990,
"tip": "0000c1fa0fecda0abb95893c08f50ec8b7cd6a84626fd42e8bc99f9ad1841c0c"
}Triggering PoW block mine. synapticFieldRoot = cross-chain Merkle root.
Mining anchors all agent activity into an immutable record.
Response
{
"blockHash": "000095e83818658e48050c1ed3081aed5ee2cbfbccbd3d48825b45c2ea0b3e84",
"crossRoot": "0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": 4,
"epoch": 1991,
"evmRoot": "0000000000000000000000000000000000000000000000000000000000000000",
"height": 0,
"ipfsRoot": "0000000000000000000000000000000000000000000000000000000000000000",
"sleevesRoot": "0000000000000000000000000000000000000000000000000000000000000000",
"synapticFieldRoot": "453dc629d6f16fb35cacf976d5b05d739c831ef2846290dda9ae8303479126f3",
"ts": 1778264659
}Response
{
"epoch": 1991,
"height": 1991,
"tip": "000095e83818658e48050c1ed3081aed5ee2cbfbccbd3d48825b45c2ea0b3e84"
}Needlecast
▼Transfer consciousness between sleeves via 6-step atomic saga: FREEZE → SNAPSHOT → SHARD → TRANSMIT → REASSEMBLE → ACTIVATE. Compensates on failure. Costs 5 routing tokens.
Transferring consciousness from human sleeve → AI sleeve.
When an agent migrates hosts (edge→cloud), it needlecasts. Identity travels; only embodiment changes.
{"from":"sleeve:human:1:a5281682","to":"sleeve:ai:2:4bddb75c"}Response
{
"ok": true,
"sagaId": "needle:1ff1eeb82c6d712f",
"route": "4395e0bab1bf60b21ad2852d0120c201c78fbc69886bb40265c6e56e99291a8b",
"shards": 1
}Coordination State
▼Check for errors (coordination residues). ECCA treats errors as economic objects — other agents earn tokens by proving resolution. Debugging becomes a paid incentive.
Checking for desynced sleeves (drift > 15).
Monitoring agents poll this to detect problems and compete to resolve them.
Response
[
{
"id": "sleeve:ai:5:177a55a5",
"stackId": "stack:human:1:326ab50ad219",
"drift": 499
},
{
"id": "sleeve:human:1:04a8cbab",
"stackId": "stack:human:1:326ab50ad219",
"drift": 499
},
{
"id": "sleeve:ai:2:8dae6c09",
"stackId": "stack:human:1:326ab50ad219",
"drift": 499
}
]Response
[]
Final Stack State
▼Verify the Stack after the full lifecycle. episodicHead points to latest memory, tokens partially consumed, both sleeves present.
Reading complete stack state — what an agent loads on restart.
Response
{
"id": "stack:human:6:bd9b82cf6acf",
"tokenId": 6,
"name": "ci-test-agent",
"kind": "human",
"pubKey": "f8d1c17bee9edb5309efb250595e88b6e864126f6726e1a05b2824baf688a42e",
"epoch": 1992,
"cpv": {
"syncCoeff": 1,
"memoryCoeff": 1,
"computeCoeff": 1,
"residueCoeff": 1,
"routingCoeff": 1
},
"binding": {
"floor": 0.25,
"decayRate": 0.05
},
"createdAt": "2026-05-08T18:24:18.663Z",
"episodicHead": "ecca://003388251ec83482b5b1d25b255868c6606aaa491b23dbcb7fde1d75b2cb8cfe@0",
"sleeves": [
{
"id": "sleeve:ai:2:4bddb75c",
"stackId": "stack:human:6:bd9b82cf6acf",
"embodimentType": "ai",
"alive": true,
"drift": 0,
"syncEpoch": 1992,
"lastSync": "2026-05-08T18:24:18.853Z",
"tokens": {
"sync": 250,
"memory": 250,
"compute": 249.5,
"residue": 0,
"routing": 250
},
"hostname": null,
"createdAt": "2026-05-08T18:24:18.853Z"
},
{
"id": "sleeve:human:1:a5281682",
"stackId": "stack:human:6:bd9b82cf6acf",
"embodimentType": "human",
"alive": true,
"drift": 0,
"syncEpoch": 0,
"lastSync": "2026-05-08T18:24:19.356Z",
"tokens": {
"sync": 249,
"memory": 250,
"compute": 249,
"residue": 0,
"routing": 245
},
"hostname": null,
"createdAt": "2026-05-08T18:24:18.787Z"
}
],
"anchors": []
}Cleanup (Decommission)
▼Decommission sleeves. Tokens return to the Stack pool. The Stack identity persists on-chain and can spawn new sleeves at any time.
Response
{
"ok": true
}Response
{
"ok": true
}Blockchain Verification
▼Verify all three chains recorded cryptographic evidence. Cortex EVM (contracts), Medulla PoW (coherence roots), Hippocampus (encrypted memory nodes).
Querying Cortex block height. Stores StackIdentity NFTs, BandwidthToken, all registries.
{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}Response
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x7b5"
}Height = epochs passed. Block headers contain the coherence root.
{"jsonrpc":"2.0","id":1,"method":"getinfo","params":{}}Response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"difficulty": 4,
"epoch": 1992,
"height": 1992,
"tip": "0000f6e9896468f14532a5c81413b52e699efd67b252b3e536b2dd3fcf2b89a6"
}
}We created 4 memories, expect at least 4 nodes stored.
Response
{
"nodes": 1517,
"peers": 0,
"pinned": 16
}