aeonora
v0.2.0
Published
Owner-controlled encrypted memory for AI agents. One MCP server, portable across harnesses.
Maintainers
Readme
Aeonora
One agent. Any runtime. Verifiable continuity.
Aeonora is an experimental open framework for durable, owner-controlled agents. It keeps public identity, constitution commitments, lifecycle, and receipt hashes verifiable while private memory, prompts, secrets, models, and execution stay off-chain.
Website
python3 -m http.server 4173Open http://127.0.0.1:4173/site/.
Start in five minutes
Requires Node.js 22+ and npm.
npm install
npm link
aeonora validate examples/duckman.aeonora.json
aeonora keygen .aeonora/controller-key.json
aeonora bind-controller examples/duckman.aeonora.json .aeonora/controller-key.json .aeonora/duckman.jsonaeonora register .aeonora/duckman.json .aeonora/controller-key.json
aeonora resolve <agentId>
aeonora verify <agentId>
aeonora authorize <agentId> research
aeonora authorize <agentId> publish
aeonora authorize <agentId> deleteExpected decisions: allow, require-human, deny. Full walkthrough: quickstart.
One command, then govern it
npm i -g aeonora
aeonora setup # detects your brain, shows the path, asks which policysetup finds an installed brain (Hermes, OpenClaw, NanoClaw, OpenHands, Claude
Code, Codex, Cursor) or takes a folder — aeonora setup /path/to/notes, or
OBSIDIAN_VAULT=/path aeonora setup obsidian. It encrypts what it finds, prints
the MCP config to paste, and applies a policy.
From then on every tool call that touches the brain is gated and receipted:
aeonora policy # read freely; writes and exports need approval
aeonora grant write-memory # 1 use, expires in 15 minutes
aeonora receipts --verify # exit 0 intact, exit 1 tamperedAn agent that tries to write without approval is refused and told to ask you:
remember refused by Aeonora governance (require-human): policy preset "guarded"
requires owner approval for write-memory
This needs the owner's approval. Ask them to run: aeonora grant write-memoryFull rules, precedence, and limits: governance.
Run the portable-agent flow
Turn any folder of Markdown into an encrypted portable brain:
aeonora-portable init ./my-agent-brain hermes:local .aeonora/my-agent
aeonora-portable verify .aeonora/my-agent
aeonora-portable migrate .aeonora/my-agent openclaw:local ./restored-brainHosted encrypted sync:
aeonora-portable push .aeonora/my-agent https://aeonora.net/api/vault
aeonora-portable pull .aeonora/my-agent ./restored-brainBrowser vault: aeonora.net/app.
Migration preserves the agent ID, rotates the brain data key, records signed lineage, and restores the same Markdown through the new runtime profile. Runtime names are identifiers, not claims of shipped Hermes or OpenClaw adapters.
What is real now
- canonical manifest validation and hashing
- Ed25519 controller binding and signed version lineage
- deterministic local agent identity
- allow/deny/require-human policy decisions
- brain governance at the MCP boundary: every read, write, import and export is gated and receipted
- open/guarded/readonly policy presets,
guardedby default - time-boxed, use-counted owner grants that lift
require-humanand never adeny - hash-chained, tamper-evident receipt log (
aeonora receipts --verify) - runtime migration receipts and action receipts
- suspension
- minimal Solidity anchor with signed EVM client
- independent local and chain-anchor verification
- A2A discovery metadata example
- copy-paste coding-agent prompt and reusable skill
- encrypted Markdown brain capture, restore, and key-rotating runtime migration
- deterministic portability/security eval suite
- private hosted ciphertext sync with optimistic version checks
- 24-word browser recovery and WebAuthn PRF passkey unlock
- nine brain adapters: Hermes, OpenClaw, NanoClaw, OpenHands, Claude Code, Codex, Cursor, Obsidian, plain Markdown
- one-command setup that detects installed brains, shows the path it would encrypt, and asks which policy to apply
- authenticated self-hosted Kubo/IPFS mirroring of encrypted snapshots
- controller transfer and two-day delayed guardian recovery in
AeonoraRegistry - controller-gated on-chain encrypted-brain CID pointers
- browser-wallet Base Sepolia deployment and anchoring flow
- legacy encrypted storage, grants, compute, and workers retained as compatibility code
What is not done
- independent professional security audit
- canonical public registry deployment
- ERC-8004 adapter
- on-chain revocation primitive (expiring grants are implemented off-chain, not on-chain)
- governance of plaintext once exported to disk: exports are gated and disclosed, but not enforceable after the write
- live Duckman A2A/MCP endpoints
- proof that an off-chain action was truthful
Do not market those items as shipped. See implementation status.
Core commands
aeonora setup | policy | grant | revoke | receipts
aeonora keygen | validate | register | resolve | verify | authorize | migrate | suspend
aeonora-chain register | resolve | verify-anchor | update | suspend | reactivate | commit-receiptDocumentation
- Release status and claim boundary
- Investor demo guide
- Current deployed system reference
- POC operations and release checklist
- Constitution
- Thesis and positioning
- Quickstart
- Protocol reference
- Brain governance
- Implementation status
- Contributing and security
- Copy-paste agent prompt
- Historical prototype docs
Verify the repository
npm run check
npm run evalThis runs Aeonora unit checks, legacy compatibility checks, end-to-end flows, and Solidity compilation.
Deploy a development anchor
Start a local EVM node with an unlocked funded account:
npm run compile:contracts
RPC_URL=http://127.0.0.1:8545 DEPLOYER=0xUnlockedDevAccount npm run deploy:rpcThe on-chain workflow is documented in the quickstart. Never use unlocked accounts in production.
