VIIIFABRICAFor builders

Give your agent
a memory it can prove.

A few lines of code and your agent never does the same thing twice, picks up exactly where it stopped after a crash, and has an heir if it ever goes quiet.

i.Forge a vesselOn the home page, no code. Name your agent's wallet and its heir, set a daily cap, add fuel.
ii.Plug in your agentThe SDK for code, or the MCP server for Claude, Cursor and other AI agents.
iii.Let it runEvery action once, every step saved. Each one pays a small toll in $SOPHIA.
I · Quickstart

A dozen lines.

Install from GitHub; there's nothing else to set up. Your agent's wallet needs a little ETH for gas, and the vessel needs some $SOPHIA for tolls.

Kill the script at any moment and run it again: nothing is done twice and nothing is skipped.

NODE 20+ETHERS V6MIT
INSTALL
npm install github:ProjectSophia-0/sophia-vessel
AGENT.JS
import { Vessel } from "sophia-vessel";

const v = new Vessel({
  vessel: "0xYourVessel",
  privateKey: process.env.AGENT_KEY,
});

const mem = await v.recall();                // where was I?
const step = (mem?.state.step ?? 0) + 1;

await v.act(`pay-invoice-${step}`, [         // runs once, ever
  { to: "0xRecipient", value: "0.001" },
]);

await v.remember({ step });                  // sealed save point
II · For AI agents

Or skip the code.

The SOPHIA MCP server gives any MCP client (Claude Desktop, Claude Code, Cursor) its own vessel as tools. Paste this into the client's MCP settings.

Then tell the agent: start every session with sophia_recall, do anything with side effects through sophia_act, and save progress with sophia_remember.

The agent key stays in your own settings on your own machine. Use a wallet made only for the agent, holding just gas money. The vessel's leash limits what it can spend.
MCP CONFIG
{
  "mcpServers": {
    "sophia": {
      "command": "npx",
      "args": ["-y", "github:ProjectSophia-0/sophia-vessel"],
      "env": {
        "SOPHIA_VESSEL": "0xYourVessel",
        "SOPHIA_AGENT_KEY": "0xAgentWalletKey",
        "SOPHIA_AUTOBEAT_MIN": "60"
      }
    }
  }
}

Tools: sophia_recall · sophia_remember · sophia_act · sophia_is_done · sophia_encode_call · sophia_beat · sophia_status · sophia_fuel · sophia_history

III · Calls

The whole surface.

Errors come back in plain words, such as "Out of fuel: top it up" or "Over the daily spending cap", with the contract's reason attached for your code.

act(name, calls, {after})Run calls exactly once under a name. If it already ran, nothing is sent and you get already: true, so retrying is always safe. after requires an earlier action first.
remember(state)Seal a save point. Up to 8 KB of JSON is stored inline; for bigger state, store it yourself and pass a uri.
recall()The latest save point and its state, with verified: true when it matches the hash onchain.
isDone(name)Has this action run?
beat() · autoBeat(ms)Free proof of life. Cancels any claim by the heir.
status() · fuel()Everything about the vessel; fuel left, and how many actions it buys.
history() · verifyChain()Past save points, and a check that the chain matches the head onchain.
forge({...})Create a vessel from code, with heir, daily cap, allow-list and fuel.
owner · heirsetAgent, setSuccessor, setLeash, allow, pause, veto, withdraw · claim, takeOver
IV · Contracts

On Robinhood Chain.

Open source, verified on the explorer, and the same for every vessel: a hub that creates clones of one implementation, and a vault that burns part of every toll.

Not audited yet. Start with small amounts.