Git for AI agents — versioned, encrypted, verifiable memory + identity on 0G, ENS, and ERC-7857.
Sirius is git for AI agents. When you mint an AI agent as an NFT today, you mint a frozen brain — no version history, no rollback, no way to fork it, no way to verify what it actually knows. Sirius fixes that with a complete versioned memory and identity layer for agents on chain.
Every memory the agent learns becomes a SHA-256 leaf in a Merkle tree, anchored on 0G Chain via an ERC-7857 iNFT. Plaintext is encrypted client-side with XChaCha20-Poly1305, sealed under the owner's policy, and stored on 0G Storage. The agent gets a real on-chain identity through ENS — <name>.siriusagents.eth — with HEAD commit and Merkle root published as text records, so anyone can verify the agent's full state without ever calling the 0G RPC. Pure ENS resolution plus a local hash check.
You can mint an agent, commit memories session by session, diff any two commits to see what the agent learned or forgot, fork it at any historical version (the new owner gets a fresh iNFT with on-chain lineage and EIP-2981 royalties to the original creator), chat with it (the agent answers by analyzing its own commit chain, every answer traceable to a specific audit-able entry), and verify any agent's state with three ENS lookups.
We also ship @sirius/openclaw-memory — a drop-in npm plugin that gives any OpenClaw agent five memory tools: recall, remember, recallAtVersion, diff, and whoami, with auto-commit lifecycle hooks at session end. Plug it in, your agent has versioned memory.
Aria, our demo agent, is live on testnet with five real sessions of commit history. Submitted to three ETHGlobal Open Agents tracks: 0G Framework, 0G iNFT, ENS Most Creative.
Sirius is a four-layer system stitched together end to end.
The smart contract layer is AgentINFT.sol — a Solidity 0.8.26 hybrid of OpenZeppelin ERC-721, ERC-7857 (sealed metadata + secure transfer via TEE oracle attestation), and EIP-2981 (5% royalties on transfer). Anti-fork is enforced at the contract level: every commit() requires parent == repo.head or it reverts with a custom error. We deployed it on 0G Galileo testnet with Hardhat, ten of ten tests green. The reseal flow uses a hardcoded mock oracle keypair for the demo since ERC-7857 oracle infra isn't broadly deployed yet.
The cryptographic core was ported verbatim from our Sirius v1 codebase (originally on Sui Walrus). XChaCha20-Poly1305 for entry encryption via @noble/ciphers, AES-256-GCM for the sealed Root Master Key, SHA-256 over canonicalized manifest JSON for the Merkle root. This is pure crypto — we did not rewrite a line.
The backend is Express + TypeScript with clean architecture (domain → application → infrastructure). viem v2 talks to 0G Chain. The 0G Storage adapter has a content-addressed local-FS fallback so the demo runs deterministically. Prisma + SQLite as a read-through cache. Pino for structured logs.
The ENS layer writes three text records per agent (sirius.head, sirius.merkle, sirius.repo) on Sepolia via raw resolver calls in viem. The verify-without-RPC flow resolves these, fetches the manifest, recomputes the Merkle locally, and compares — zero 0G RPC calls in the verification path. That's the killer feature.
The frontend is Vite + React 18 + wagmi v2 + RainbowKit, all Tailwind, monochrome design with Vipnagorgialla and Satoshi fonts. The landing is a 700vh GSAP ScrollTrigger pinned hero with Lenis smooth scroll, a Three.js organic blob (custom GLSL shader doing 3D simplex noise displacement, plus dust cloud and streak particle systems, plus EffectComposer bloom). The pin scrubs the camera z from 2.8 to 0.1 so the blob "approaches" you as you scroll. WalletConnect via RainbowKit with a custom themed modal.
The chat surface runs a deterministic local mock model that analyzes the agent's own commit chain — reads every commit, decrypts the entries on the fly with the agent's RMK, accumulates unique memories, scores them by keyword overlap with the prompt, detects intent (greet/whoami/preference/list/recall), and quotes the relevant ones verbatim. No LLM API call. Every answer is traceable to a specific committed entry. Architecture supports a real path through 0G Compute Sealed Inference plus an Anthropic fallback when configured.
@sirius/openclaw-memory is a separate dependency-free npm package — five tool descriptors (recall, remember, recallAtVersion, diff, whoami) plus a session-lifecycle auto-commit hook that batches entries and flushes at session end. Drop in any OpenClaw runtime, your agent has versioned memory in five lines of code.
Particularly hacky bits worth mentioning: the ENS mock resolver state is rehydrated from the DB on backend boot so the verify-without-RPC demo survives restarts; the __scrollProgress is shared between GSAP and the Three.js camera via a window global the way Sirius 2.0 does it; commits route through a backend signer to avoid a MetaMask popup per action while keeping the user wallet as logical owner in the UI.

