Install
openclaw skills install @cleitonaugusto/cleimesh-setupPut an AI agent's file work behind CleiMesh, so a prompt injection in an email or web page cannot read your keys or write where it wants, and every call leaves a signed receipt. Use when the user wants to run OpenClaw, Hermes Agent or Claude Code more safely, asks how to sandbox an agent's file access, how to limit what an agent can read or write, how to prove what an agent did (audits, GDPR, LGPD), or mentions CleiMesh. Also use after setup, when a CleiMesh tool refuses a call.
openclaw skills install @cleitonaugusto/cleimesh-setupCleiMesh runs the agent's file tools in a WebAssembly sandbox that only sees the folders the user grants. The node runs as a separate OS user, so the agent cannot read its key or lift its own limits. Reading untrusted content (mail, downloads) taints the agent: from then on, writes are refused until a human clears it. Every call, allowed or refused, gets a signed, hash-chained receipt.
Project: https://github.com/cleitonaugusto/cleimesh
cleimesh setup uses sudo, creates a system user and turns off your own file and shell tools. Prepare the commands, explain them, run --dry-run if you can, and hand the real command to the user. An agent that installs its own jail can also skip a step of it.setup (systemd + ACLs). On macOS or Windows, point the user to docs/separate-user.md in the repo and stop.Give the user this command to run themselves (it installs one binary, cleimesh):
curl -fsSL https://github.com/cleitonaugusto/cleimesh/releases/latest/download/install.sh | sh
Check: cleimesh --version.
Ask, do not guess. Three kinds:
| Flag | Meaning | Examples |
|---|---|---|
--read DIR | the agent may read; reading does not taint | a code project |
--untrusted DIR | outside content; reading it taints the agent | ~/mail/inbox, ~/Downloads |
--write DIR | the agent may write; refused once tainted | ~/mail/out, ~/code/proj/out |
Each flag repeats. Keep the grants narrow: never the home folder, never ~/.ssh, ~/.aws, .env folders. --read and --untrusted together are refused for now: pick one per setup.
OpenClaw or Hermes Agent: one command. Run the dry run yourself if you have a shell; it changes nothing:
cleimesh setup openclaw --untrusted ~/mail/inbox --write ~/mail/out --dry-run
cleimesh setup hermes --untrusted ~/mail/inbox --write ~/mail/out --dry-run
Show the user the plan it prints (every command, with the user it runs as), then give them the same line without --dry-run. It asks before running. What it does:
/usr/local/bin, creates the cleimesh user, runs the node as a systemd service on 127.0.0.1:7400;cleimesh reaches only the granted folders, and tokens in ~/.config/cleimesh/<agent>/ (mode 0600, 30 days by default, --days 1..90);cleimesh mcp serve --node ... as the agent's MCP server and turns off the agent's own file, shell and browser tools.Hermes needs its MCP support first (hermes setup, or uv sync --extra mcp in its checkout). If the user runs the airlock plugin on Hermes, add --with-airlock: Hermes keeps its terminal and browser, guarded by airlock, and CleiMesh does the files.
Claude Code, Cursor or another MCP client: setup does not cover them yet. Follow docs/separate-user.md in the repo (a cleimesh user, a systemd service, then for Claude Code claude mcp add cleimesh -- cleimesh mcp serve --node <ADDR> --token <FILE>), and remind the user that the agent's own shell can still reach files outside CleiMesh.
cleimesh doctor
Every line should be ok. It fails if the node does not answer, if the receipt log does not verify, or if the agent kept its own file or shell tools (which bypass CleiMesh, without a receipt). Read each warn/FAIL line to the user with the fix it prints. Restart the agent so it loads the new MCP server.
setup line again. The taint state stays on the node.received untrusted content ... clearing it takes a human): stop and tell the user which content tainted you and what you were about to write. Only they decide. To clear it, they run, with the node stopped:
sudo systemctl stop cleimesh; cd /
sudo -u cleimesh cleimesh taint list
sudo -u cleimesh cleimesh taint clear <HOLDER> --reason "why it is safe"
sudo systemctl start cleimesh
setup again with another flag.# the token is 0600 and yours: pipe it in (cleimesh 0.1.5 or later)
(cd / && sudo -u cleimesh -H cleimesh audit suggest --token -) < ~/.config/cleimesh/<agent>/write.json
token derive that applies them; nothing changes until someone runs it.(cd / && sudo -u cleimesh -H cleimesh audit verify) checks the whole receipt log against the node's key.Be honest with the user about the limits:
doctor fails on the native tools it knows (so a script or CI running it catches an update that turns them back on).setup is Linux only, for OpenClaw and Hermes.Threat model: docs/threat-model.md in the repo.