openclaw-layer
Recipe card from the charly-openclaw plugin (Images — the deployable catalog).
openclaw — AI gateway service
Section titled “openclaw — AI gateway service”Candy Properties
Section titled “Candy Properties”| Property | Value |
|---|---|
| Dependencies | nodejs, socat, supervisord |
| Ports | 18789 |
| Port relay | 18789 (eth0 -> loopback) |
| Volumes | data -> ~/.openclaw |
| Aliases | openclaw -> openclaw |
| Service | openclaw (supervisord) |
| Install files | package.json |
| Home repo | opencharly/layer-openclaw (candy/openclaw) |
Environment Variables
Section titled “Environment Variables”| Variable | Value |
|---|---|
NODE_ENV |
production |
The package pin and the engine floor
Section titled “The package pin and the engine floor”The npm pin lives in package.json ([email protected]) and the candy’s own plan asserts
it, together with the engine range the package declares — >=24.16.0 <25 || >=26.1.0. The
floor moved at 2026.9.3 and excludes node 22 and node 25.x, so the check fails on a base
whose node is outside the range instead of running an unsupported runtime. The Arch
nodejs package in the CachyOS base satisfies it.
# box charly.ymlopenclaw: candy: base: cachyos candy: - openclawcharly alias install openclaw # install host 'openclaw' commandopenclaw config # uses the aliasUsed In Boxes
Section titled “Used In Boxes”/charly-openclaw:openclaw— the family’s gateway image (this layer plus theopenclaw:check verb)
Port Relay
Section titled “Port Relay”The gateway binds to 127.0.0.1:18789 (loopback only). A socat relay forwards from the
container’s network interface to loopback, so every connection appears as loopback to the
gateway and OpenClaw’s allowedOrigins requirement for the Control UI never applies. Same
pattern as the chrome candy (CDP on port 9222).
Related
Section titled “Related”/charly-openclaw:openclaw— the box that composes this layer/charly-check:openclaw-cmd— theopenclaw:check verb, served byopencharly/plugin-openclaw/charly-coder:nodejs,/charly-infrastructure:socat,/charly-infrastructure:supervisord— this layer’s dependencies

