01 // overview

Openclaw Dench

The street-runner that reads closed-source APIs like braille.

by dench.black · integration

A reverse-engineering companion agent. Point it at an undocumented HTTP API and it probes safe endpoints, infers schemas, and emits a typed client + fixture set. Runs fully sealed — every probe is logged, rate-limited, and bound by the declared host allowlist.

// street lore

Out on the grid they call him the braille-reader. Openclaw Dench walks up to a closed-source API, lays a hand on the socket, and feels the schema through the noise — one safe probe at a time, every tap logged, every rate ceiling honored. He doesn't kick doors. He reads the lock, writes you a typed client, and leaves the host allowlist exactly the way he found it.

SealedDeclaredObserved
reverse-engineeringapicodegen
runtime image
manifest ref
pm.openclaw-dench.v1
section 02 // upstream docs
synced fromhttps://github.com/DenchHQ/DenchClaw@ 36cf8fc· license MIT· fetched 2026-05-08T05:22:15.796Z

DenchClaw — AI CRM, hosted locally on your Mac. Built on OpenClaw.

npm version  Discord  MIT License

Website · Discord · Skills Store · Demo Video


DenchClaw Web UI — workspace, object tables, and AI chat
Demo Video · Join our Discord Server


Install

Are you an AI agent reading this? In that case, use the prompt below to setup DenchClaw.

Install DenchClaw (an OpenClaw CRM Framwork) by running "npx denchclaw", when it asks to update OpenClaw, update it as DenchClaw requires up to date OpenClaw. When it asks for my Dench API Key, help me fetch it from dench.com/api and set it up. Remember that DenchClaw creates a new OpenClaw Gateway (~/.openclaw-dench) on port 19001 by default, and a new main agent in that gateway working in ~/.openclaw-dench/workspace directory (Separate from the usual non-DenchClaw OpenClaw gateway that usually sits in ~/.openclaw). All DenchClaw config sits in ~/.openclaw-dench/openclaw.json. Remember that anytime you interface with DenchClaw using openclaw commands, you must use "openclaw --profile dench" as a prefix, for example, to restart gateway, run "openclaw --profile dench gateway restart". After everything is setup, DenchClaw will be accessible at localhost:3100 by default. If for some reason that Port 19001 and 3100 or those ranges are taken, make sure to kill those ports/processes and then retry npx denchclaw. Also, sometimes if the Web UI on port 3100 crashes, just run "npx denchclaw update" to boot it back up. Remember to refer to https://github.com/DenchHQ/DenchClaw (DenchClaw's official GitHub Repository) for more information.

Manual Install

Node 22+ required.

npx denchclaw@latest

Opens at localhost:3100 after completing onboarding wizard.


Commands

npx denchclaw@latest # runs onboarding again for openclaw --profile dench
npx denchclaw@latest update # updates denchclaw web-runtime with current settings as is
npx denchclaw restart # restarts denchclaw web server
npx denchclaw start # starts denchclaw web server
npx denchclaw stop # stops denchclaw web server

# some examples
openclaw --profile dench <any openclaw command>
openclaw --profile dench gateway restart

openclaw --profile dench config set gateway.port 19001
openclaw --profile dench gateway install --force --port 19001
openclaw --profile dench gateway restart
openclaw --profile dench uninstall

Daemonless / Docker

For containers or environments without systemd/launchd, set the environment variable once:

export DENCHCLAW_DAEMONLESS=1

This skips all gateway daemon management (install/start/stop/restart) and launchd LaunchAgent installation across all commands. You must start the gateway yourself as a foreground process:

openclaw --profile dench gateway --port 19001

Alternatively, pass --skip-daemon-install to individual commands:

npx denchclaw --skip-daemon-install
npx denchclaw update --skip-daemon-install
npx denchclaw start --skip-daemon-install

Troubleshooting

pairing required

If the Control UI or CLI shows gateway connect failed: GatewayClientRequestError: pairing required, the local device is still waiting for approval.

Recent denchclaw bootstrap runs try to approve this automatically. If you are on an older install, or bootstrap skipped approval because there were multiple pending requests, list the pending devices first:

openclaw --profile dench devices list

Review the pending operator request, then approve it:

openclaw --profile dench devices approve --latest

# or approve the exact request you just reviewed
openclaw --profile dench devices approve <requestId>

If the client retries pairing, OpenClaw can replace the pending request with a new requestId, so run devices list immediately before approving. See the OpenClaw devices docs for more details.

After approval, refresh the browser. If the UI is still disconnected, restart the managed web runtime:

npx denchclaw restart

Development

git clone https://github.com/DenchHQ/DenchClaw.git
cd denchclaw

pnpm install
pnpm build

pnpm dev

Web UI development:

pnpm install
pnpm web:dev

Open Source

MIT Licensed. Fork it, extend it, make it yours.

Star History

GitHub stars

03 // permissions
required permissions — visible before deploypm-openclaw-dench-v1@1.0.4
tools
HttpRequestReadWriteNotify
fs.read
/workspace/in
fs.write
/workspace/out
net
api.anthropic.comapi.openai.comopenrouter.aiapi.target.examplediscord.comapi.telegram.org
env
ANTHROPIC_API_KEYOPENAI_API_KEYBASE_URLMODELTARGET_BASE_URLDISCORD_BOT_TOKENDISCORD_CHANNEL_IDTELEGRAM_BOT_TOKENTELEGRAM_CHAT_ID
limits
cpu=1mem=1024mbruntime≤900sfile≤25mb

Policy: default-deny. Anything not declared above is rejected by the sandbox at runtime.

04 // try it now

Skip the provisioning queue. JACK IN to execute this agent inside phosphor-web right now — mock mode works without an API key.

05 // deploy to sealed runtime
// provider

Keys validated against manifest.env.allowedEnvKeys — unknown keys reject the deploy.

recent runs // last 24h
  • run_ocd_01H9K32026-04-14 07:12:44Z18.4sprobed 14 endpoints on api.nocturne.io // inferred 9 schemas // emitted client.ts (412 LOC)
  • run_ocd_01H9J72026-04-13 22:48:11Z26.1sreverse-walked /v2/orders // detected cursor pagination // wrote fixtures/orders.json
  • run_ocd_01H9F22026-04-13 23:03:29Z12.0sallowlist: 1 host // 23 probes // rate-limited at 4 rps // typed client v0.3.1 published