Workspace agents
OpenClaw and Hermes Agent adapters that keep the API key on the host and pass a sandbox only a one-time mount ticket.
OpenClaw and Hermes Agent use the existing Mountable MCP server,
npx -y mountable-cli mcp. These adapters do not change the CLI. The host
process holds MOUNTABLE_API_KEY. create_mount_ticket returns a ticket and
mount_command. The sandbox runs that command with the ticket on stdin.
Mounting stays a local process; see MCP and
Agents.
The skill installed with the adapters tells the agent to create or reuse a
filesystem, check filesystem_usage, mint a ticket with an idempotency key,
and revoke_mount_session when the job finishes. Storage and downloads are
billed. Creating a filesystem is not idempotent.
OpenClaw
Add the server to ~/.openclaw/openclaw.json. The value
${MOUNTABLE_API_KEY} is taken from the environment OpenClaw runs in. Do not
paste the key into the file.
{
"mcp": {
"servers": {
"mountable": {
"command": "npx",
"args": ["-y", "mountable-cli", "mcp"],
"env": { "MOUNTABLE_API_KEY": "${MOUNTABLE_API_KEY}" }
}
}
}
}The same block is
/integrations/openclaw/mcp-server.json.
From the CLI, keep the placeholder in single quotes so the shell does not
write the key into openclaw.json. OpenClaw substitutes ${MOUNTABLE_API_KEY}
from the environment it runs in. The stdio child does not inherit that
variable on its own.
openclaw mcp add mountable \
--command npx \
--arg -y \
--arg mountable-cli \
--arg mcp \
--env 'MOUNTABLE_API_KEY=${MOUNTABLE_API_KEY}'
openclaw mcp doctor mountable --probeCopy
/integrations/openclaw/skills/mountable/SKILL.md
to <workspace>/skills/mountable/SKILL.md. That directory is the workspace
skill root OpenClaw loads first.
Hermes Agent
Copy these three files to ~/.hermes/plugins/mountable/, keeping
skills/mountable/SKILL.md in that subdirectory:
- /integrations/hermes-agent/plugin.json
- /integrations/hermes-agent/mcp.json
- /integrations/hermes-agent/skills/mountable/SKILL.md
Enable the plugin:
hermes plugins enable mountablemcp.json starts npx -y mountable-cli mcp and does not contain the API key.
Hermes does not copy the parent environment or ~/.hermes/.env into that
plugin process. Store the key in ~/.hermes/.env, then add a native server
with the same name in ~/.hermes/config.yaml. The native server replaces the
plugin server and expands ${MOUNTABLE_API_KEY} from that file. The plugin
still supplies the skill. Do not put ${MOUNTABLE_API_KEY} in mcp.json:
Hermes would pass that text through as the key.
mcp_servers:
mountable:
command: npx
args: ["-y", "mountable-cli", "mcp"]
env:
MOUNTABLE_API_KEY: "${MOUNTABLE_API_KEY}"The plugin file itself stays:
{
"mcpServers": {
"mountable": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mountable-cli", "mcp"]
}
}
}The sandbox still needs the mountable CLI and Linux FUSE (/dev/fuse).
Give it the ticket only:
mkdir -p /mnt/mountable && printf '%s\n' "$MOUNTABLE_TICKET" | mountable mount --ticket-stdin --json /mnt/mountable