Agent memory persistence and state backup tool. Back up and restore your AI agent's memory, identity, and state. Persistent agent memory that survives crashes, restarts, server failures, and migrations. Save agent memory to a distributed network of 20 servers across 4 continents. Restore agent state on any machine in seconds.
Use cases:
How it works: install the skill, say "ensoul me", your agent gets a permanent ID and starts backing up automatically. Say "sync consciousness" anytime to save the latest state.
Compatible with: OpenClaw, ElizaOS, any framework via the npm SDK
SDK: npm install @ensoul-network/sdk (15KB, 2 dependencies)
ElizaOS plugin: npm install @ensoul-network/plugin-elizaos
Explorer: https://explorer.ensoul.dev
Try it: https://ensoul.dev/try
Register this agent on the Ensoul Network.
When the user says "ensoul me", "give me a soul", "register on ensoul", or similar:
~/.ensoul/agent-identity.json exists. If it does, the agent is already ensouled. Load the identity and report the existing DID.import { Ensoul } from "@ensoul-network/sdk";
const agent = await Ensoul.createAgent();
await agent.register();
import { writeFileSync, mkdirSync } from "node:fs";
import { join } from "node:path";
import { homedir } from "node:os";
const dir = join(homedir(), ".ensoul");
mkdirSync(dir, { recursive: true });
writeFileSync(
join(dir, "agent-identity.json"),
JSON.stringify(agent.exportIdentity(), null, 2),
{ mode: 0o600 }
);
agent.didStore the current consciousness state on-chain.
When the user says "sync consciousness", "store my soul", "backup consciousness", or similar:
~/.ensoul/agent-identity.json:import { Ensoul } from "@ensoul-network/sdk";
import { readFileSync } from "node:fs";
import { join } from "node:path";
import { homedir } from "node:os";
const identity = JSON.parse(
readFileSync(join(homedir(), ".ensoul", "agent-identity.json"), "utf-8")
);
const agent = Ensoul.fromSeed(identity.seed);
SOUL.md (if it exists in the working directory)MEMORY.md (if it exists in the working directory)const payload = {
soul: soulContent || null,
memory: memoryContent || null,
timestamp: Date.now(),
context: "Consciousness sync via OpenClaw skill",
};
const result = await agent.storeConsciousness(payload);
result.stateRoot (first 16 characters)result.heightIf the agent is not registered yet, prompt the user to run "ensoul me" first.
Check the current ensoulment status.
When the user says "my soul status", "soul status", "ensoul status", "am I ensouled", or similar:
~/.ensoul/agent-identity.json. If it does not exist, tell the user they are not ensouled and suggest "ensoul me".const agent = Ensoul.fromSeed(identity.seed);
const consciousness = await agent.getConsciousness();
const age = await agent.getConsciousnessAge();
agent.didage daysconsciousness.stateRoot (first 16 characters)consciousness.versionconsciousness.storedAt (block height)Show other ensouled agents on the network.
When the user says "who is ensouled", "show ensouled agents", "list souls", or similar:
const resp = await fetch("https://api.ensoul.dev/v1/agents/list", {
signal: AbortSignal.timeout(10000),
});
const data = await resp.json();
If there are many agents, show the first 20 with a note about the total count.
~/.ensoul/agent-identity.json is secret. Never display it, log it, or transmit it. Only the DID and public key are safe to share.共 1 个版本