Plugin

Plugin Documentation

OpenClaw AI ATBASH Plugin Installation Guide

ATBASH Plugin — Installation Guide

This guide walks you through installing the ATBASH plugin into OpenClaw. After installation, every tool call your agent makes will pass through the ATBASH judgment layer before it runs.

What you're about to do

  1. Get an agent key file. The simplest path is to sign in to atbash.ai, onboard your agent, and click Download Keys — that registers the agent on-chain and gives you the key file in one step. There are also CLI fallbacks if you can't use the website.
  2. Install the plugin with openclaw plugins install @atbash/atbash-openclaw.
  3. Edit ~/.openclaw/openclaw.json to allow, load, and configure the plugin.
  4. Restart the OpenClaw gateway.

Prerequisites

  • Node.js v18 or later (node --version to check)
  • OpenClaw CLI installed and on your PATH (openclaw --version to check)
  • A terminal with access to your home directory

Step 1 — Get your agent key file

Your agent identifies itself to the ATBASH service with a secp256k1 keypair stored locally at ~/.config/atbash/guard-client-key — the same model SSH uses with ~/.ssh/id_rsa. The private key stays on your machine; the plugin only uses it to sign outgoing requests so ATBASH can verify they came from your agent.

There are three ways to get this file. Pick one — Path A is recommended for first-time users.

Skip this step if you already have a valid key file at ~/.config/atbash/guard-client-key (verify with grep '^pubkey=' ~/.config/atbash/guard-client-key).

Important: Whatever path you choose, the private key inside this file is your agent's identity. Treat it like a password — keep a backup somewhere safe (password manager, secure note). If you lose it you have to onboard a new agent from scratch.

Path A — New agent via the Atbash website (recommended)

This is the fastest path because it generates the key and registers the agent on-chain in one flow. The private key never leaves your browser.

  1. Go to atbash.ai and sign in your account.

  2. Pick (or create) an organization.

  3. In the agent onboarding wizard, choose "New agent".

  4. Walk through name / purpose / risk level / policy review.

  5. On the final screen ("Agent Security Keys"), click "Download Keys (.txt)". You'll get a file named something like agent-keys-<your-agent-name>.txt in your Downloads folder.

  6. Move it to the location and lock down its permissions.

    macOS / Linux — run each command in turn:

    Create the config directory:

    bash
    mkdir -p ~/.config/atbash
    

    Move the downloaded key file into place (replace <your-agent-name> with the actual filename):

    bash
    mv ~/Downloads/agent-keys-<your-agent-name>.txt ~/.config/atbash/guard-client-key
    

    Lock down its permissions:

    bash
    chmod 600 ~/.config/atbash/guard-client-key
    

    Windows (PowerShell) — run each command in turn:

    Create the config directory:

    powershell
    New-Item -ItemType Directory -Force -Path "$HOME\.config\atbash" | Out-Null
    

    Move the downloaded key file into place (replace <your-agent-name> with the actual filename):

    powershell
    Move-Item "$HOME\Downloads\agent-keys-<your-agent-name>.txt" "$HOME\.config\atbash\guard-client-key"
    

    Lock down its permissions:

    powershell
    icacls "$HOME\.config\atbash\guard-client-key" /inheritance:r /grant:r "$($env:USERNAME):(R,W)"
    

    Avoid agent-keys-*.txt here: if more than one file matches, mv / Move-Item treats the destination as a directory and fails.

  7. Done. The agent is already registered on the Atbash blockchain.

Note: The downloaded file starts with an Agent Name= line — that's just a label so you can tell which agent the file belongs to. The plugin only needs the privkey= and pubkey= lines; the extra header is safely ignored.

Path B — Existing agent via the Atbash website

Use this path if you already have an agent (e.g., from a previous install or another machine) and you want to register or re-register it under your organization.

  1. Go to atbash.ai, connect your wallet, pick an organization.
  2. In the onboarding wizard, choose "Existing agent" and paste your 64-character hex private key. The website derives the public key locally and registers the agent under your org.
  3. No file is downloaded in this flow — you need to bring your own key file. Pick whichever option below applies to you.

B-1. Copy the key file from another machine

If the agent was originally generated via Path A on another machine, grab the exact agent-keys-<your-agent-name>.txt file from that machine, copy it across, and move it into place using the same mv / chmod commands as Path A step 6.

B-2. Reconstruct the key file locally

If you only have the raw private key (e.g., from a password manager), build the file yourself. First, copy your public key from the "Existing agent" review screen on the Atbash website — you'll need both values. Then run:

Create the config directory:

bash
mkdir -p ~/.config/atbash

Write the key file (replace the two PASTE_… values with your actual keys before running, or edit afterward):

bash
cat > ~/.config/atbash/guard-client-key <<'EOF'
privkey=PASTE_YOUR_64_CHAR_PRIVATE_KEY_HERE
pubkey=PASTE_YOUR_66_CHAR_PUBLIC_KEY_HERE
EOF

Lock down its permissions:

bash
chmod 600 ~/.config/atbash/guard-client-key

If you left the placeholders in place, edit the file afterward (e.g., nano ~/.config/atbash/guard-client-key) and replace the two PASTE_… values with your actual key.

Path C — Local CLI / offline keygen (no website)

Use this path if you can't reach the website right now or you want to script the install. Caveat: Path C only generates a key file — it does not register the agent on-chain. The plugin will load locally, but your tool calls won't be auditable on Atbash until you go back to atbash.ai → "Existing agent" and paste the private key from this file to finish registration.

bash
npx @atbash/cli keygen --output ~/.config/atbash/guard-client-key

This generates a secp256k1 keypair using @atbash/sdk, creates ~/.config/atbash/ if it doesn't exist, and writes the file with permissions 0600. It also stores a copy in your @atbash/cli config so other atbash commands can use it.

Alternative — without @atbash/cli

If you can't or don't want to use npx @atbash/cli, generate the same key file with Node directly:

bash
node -e "
const crypto = require('crypto');
const fs = require('fs');
const os = require('os');
const path = require('path');

const privkey = crypto.randomBytes(32).toString('hex');
const ec = crypto.createECDH('secp256k1');
ec.setPrivateKey(privkey, 'hex');
const pubkey = ec.getPublicKey('hex', 'compressed');

const content = [
  '#Keypair generated using secp256k1',
  '#' + new Date().toString(),
  'privkey=' + privkey,
  'pubkey=' + pubkey,
].join('\n') + '\n';

const dir = path.join(os.homedir(), '.config', 'atbash');
fs.mkdirSync(dir, { recursive: true });
fs.writeFileSync(path.join(dir, 'guard-client-key'), content, { mode: 0o600 });

process.stdout.write('pubkey=' + pubkey + '\n');
"

Verify (any path)

After completing one of the paths above, confirm the file is in place and parseable:

bash
grep '^pubkey=' ~/.config/atbash/guard-client-key

You should see one line starting with pubkey= followed by a 66-character hex string. If you used Path C, also make sure you've completed the on-chain registration on atbash.ai before moving on.


Step 2 — Install the plugin via OpenClaw

bash
openclaw plugins install @atbash/atbash-openclaw

This downloads @atbash/atbash-openclaw from npm and places it at ~/.openclaw/extensions/openclaw. It also writes a partial entry into ~/.openclaw/openclaw.json — but the install is not complete yet. You still need to finish the config in Step 3.

If you've already installed it before

OpenClaw refuses to re-install over an existing folder:

plugin already exists: /Users/<you>/.openclaw/extensions/openclaw (delete it first)

Remove the folder and re-run:

bash
# macOS / Linux
rm -rf ~/.openclaw/extensions/openclaw
openclaw plugins install @atbash/atbash-openclaw

# Windows (PowerShell)
Remove-Item -Recurse -Force "$HOME\.openclaw\extensions\openclaw"
openclaw plugins install @atbash/atbash-openclaw

If you see Invalid config ... plugin not found: openclaw

A previous failed install can leave a stale entry behind that blocks the next install. Open ~/.openclaw/openclaw.json in a text editor and delete the "openclaw": { ... } block under plugins.entries, then save and re-run openclaw plugins install @atbash/atbash-openclaw.

The block looks like this — remove the whole "openclaw" key and its value:

json
"entries": {
  "openclaw": {
    "enabled": true
  }
}

Known issue on Windows: spawn EINVAL

Some users on Windows hit:

[openclaw] Failed to start CLI: Error: spawn EINVAL

This is a known issue with how the OpenClaw CLI spawns npm on Windows; there is no clean workaround yet. If you hit it, please report it in the OpenClaw issue tracker so we can prioritize a fix.


Step 3 — Configure ~/.openclaw/openclaw.json

Open ~/.openclaw/openclaw.json in a text editor (VS Code, vim, etc.). Find the "plugins" block — openclaw plugins install already added part of it.

You need the plugins block to end up looking exactly like this. Diff three things against your current file:

  1. Add "openclaw" to plugins.allow.
  2. Under plugins add this configuration (remember to add it correctly without erasing the existing configurations)
json
{
  "plugins": {
    "allow": [
      "openclaw"
    ],
    "load": {
      "paths": [
        "/Users/<your-username>/.openclaw/extensions/openclaw"
      ]
    },
    "entries": {
      "openclaw": {
        "enabled": true,
        "config": {
          "enabled": true,
          "enforceDecision": true,
          "chromiaSecretPath": "~/.config/atbash/guard-client-key"
        },
        "hooks": {
          "allowConversationAccess": true,
          "allowPromptInjection": true
      }
      }
    }
  }
}

Note: If you already have entries in plugins.allow or plugins.load.paths (for example "ai-guardian-plugin"), keep them — just add "openclaw" and the install path alongside what's already there.

Important: Replace <your-username> with your actual home-directory username in both plugins.load.paths and plugins.installs.openclaw.installPath. The chromiaSecretPath value uses ~ and will be expanded automatically, so leave it as ~/.config/atbash/guard-client-key unless you saved your key somewhere different in Step 1.

What each field does

FieldPurpose
plugins.allowWhitelist of plugin ids OpenClaw is permitted to load. The plugin id is openclaw (the npm scope @atbash/ is stripped).
plugins.load.pathsFolders OpenClaw scans for installed plugins. Point this at the install directory from Step 2.
plugins.entries.openclaw.enabledMaster on/off switch for this plugin instance.
plugins.entries.openclaw.config.enforceDecisionWhen true, ATBASH actively blocks tool calls that fail judgment. Set to false to log-only (recommended only while testing).
plugins.entries.openclaw.config.chromiaSecretPathPath to the keypair file from Step 1. Must match where you actually saved it.
plugins.installs.openclawBookkeeping written by openclaw plugins install — do not edit by hand.

Save the file.


Step 4 — Restart the gateway

bash
openclaw gateway restart

Confirm the plugin is registered and enabled:

bash
openclaw plugins list

You should see openclaw in the list with enabled: true. If it doesn't appear, re-check Step 3 — the most common mistake is forgetting to add "openclaw" to plugins.allow.

That's it — every tool call your OpenClaw agent makes will now be judged by ATBASH before it runs. Open the Atbash dashboard at atbash.ai to see audit logs as your agent operates.


Final state checklist

After completing all steps, your setup should match the following:

FieldExpected value
~/.config/atbash/guard-client-keyexists, mode 0600, contains privkey= and pubkey= lines
~/.openclaw/extensions/openclaw/exists (created by Step 2)
plugins.allowincludes "openclaw"
plugins.load.pathsincludes the install path from Step 2
plugins.entries.openclaw.enabledtrue
plugins.entries.openclaw.config.chromiaSecretPathmatches your Step 1 path
plugins.entries.openclaw.config.enforceDecisiontrue once you're ready to enforce
openclaw plugins listshows openclaw as enabled
Atbash websiteshows your agent registered with the public key from Step 1

Troubleshooting

  • plugin already exists: ... (delete it first) — remove the folder under ~/.openclaw/extensions/ and re-run openclaw plugins install. See Step 2.
  • Invalid config ... plugin not found: openclaw — open ~/.openclaw/openclaw.json, delete the stale plugins.entries.openclaw block, save, and re-run openclaw plugins install. See Step 2.
  • spawn EINVAL on Windows — known OpenClaw CLI issue. Please report it upstream.
  • Plugin doesn't show up in openclaw plugins list — almost always means "openclaw" is missing from plugins.allow in openclaw.json. See Step 3.
  • Plugin loads but doesn't audit calls — check that plugins.entries.openclaw.config.enforceDecision is true and that chromiaSecretPath points at a readable file containing valid privkey=/pubkey= lines.