We’re rebuilding ClawControl. Sign-ups are paused until v2 launches.

Documentation

Run OpenClaw and the runtime in Docker

Use the clawcontrol-openclaw-docker example project to run a self-managed OpenClaw plus ClawControl runtime stack in Docker.

This guide uses the example project for the Docker stack:

The stack starts:

  • an OpenClaw gateway container
  • an OpenClaw CLI helper container for onboarding and approval commands
  • a runtime container built from the published @clawcontrol/runtime npm package

Before you start

Make sure the Docker host has:

  • Docker Engine with the Docker Compose v2 plugin
  • enough disk space for container images plus persistent OpenClaw and runtime state
  • a ClawControl workspace where you can create a pairing code

1. Clone the example project

Clone the repo, then move into the project directory:

2. Create the local env file

At minimum, review these values in .env:

3. Build and start the stack

This command:

  • pulls the configured OPENCLAW_IMAGE
  • builds a runtime image that installs @clawcontrol/runtime@${CLAWCONTROL_RUNTIME_NPM_SPEC}
  • starts the OpenClaw gateway and runtime containers

4. Onboard OpenClaw on first run

If this is a fresh state/openclaw directory, run:

If the gateway reports pending device approvals during onboarding, approve them:

5. Pair the runtime to ClawControl

Create a pairing code in ClawControl

In the ClawControl app, open the runtimes area and generate a pairing code for this Docker host.

Run pair inside the runtime container

Use the helper to run the runtime CLI in the container:

If OpenClaw asks for approval again after pairing, run:

6. Verify the stack

Check container status:

Check runtime status:

Tail logs:

Default host endpoints:

  • OpenClaw browser UI: http://127.0.0.1:18801
  • OpenClaw gateway: ws://127.0.0.1:18799

Persistent data

By default, the repo stores data next to the stack files:

  • state/openclaw for OpenClaw state
  • state/runtime for runtime config and state
  • workspace for the mounted OpenClaw workspace

If you want those paths somewhere else, set OPENCLAW_STATE_DIR, OPENCLAW_WORKSPACE_DIR, or RUNTIME_STATE_DIR in .env before starting the stack.

Day-2 commands

When to use this guide vs other runtime docs

  • Use this guide when you want OpenClaw and the runtime to live together on a Docker host you manage.
  • Use Install and connect a runtime when OpenClaw already exists on the host and you want to install the runtime directly from npm.
  • Use managed instances when you do not want to operate the host yourself.