ββββββββββ ββββββ βββ ββββββββββ βββββββ βββββββ ββββββββββββββββ
βββββββββββ βββββββββββ ββββββββββββββββββββββββββββββββββββββββββββ
βββ βββ βββββββββββ ββ ββββββ ββββββββββββββ βββββββββββββββββββ
βββ βββ βββββββββββββββββββββ ββββββββββββββ βββββββββββββββββββ
βββββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββ βββ ββββββββ βββββββ βββββββ βββββββ ββββββββββββββββ
Run a hardened, multi-agent OpenClaw setup in a container. Zero host dependencies.
This is Clawdboss packaged as a Docker image. Same security-first multi-agent setup, same interactive wizard β just docker compose up instead of SSH-ing into a VPS.
- Docker 20.10+
- Docker Compose v2+
- An LLM provider API key (Copilot, OpenAI, or Anthropic)
- A Discord bot token, Telegram bot token, or both
git clone https://github.com/NanoFlow-io/clawdboss-docker.git
cd clawdboss-docker
cp .env.example .envEdit .env with your API keys and bot tokens.
docker compose run --rm clawdbossThis launches the interactive Clawdboss setup wizard inside the container. It will walk you through:
- Your identity and preferences
- Agent name, personality, and mission
- LLM provider selection
- Discord/Telegram configuration
- Optional tools (Graphthulhu, ApiTap, Scrapling, OCTAVE, and more)
- OpenClaw skills setup
Your configuration is persisted in a Docker volume, so it survives container recreation.
Once setup is complete, start the gateway as a background service:
docker compose up -dThat's it. Your agent is running.
| Interface | Token Needed | How It Works |
|---|---|---|
| Discord only | DISCORD_BOT_TOKEN |
Bot joins your server, responds in channels |
| Telegram only | TELEGRAM_BOT_TOKEN |
Chat with your bot via DM or groups |
| Both | Both tokens | Same agent, two interfaces simultaneously |
| Console only | Neither | Interactive terminal session inside container |
The container runs three phases:
- Build β Installs Node.js 22, Python, system tools, OpenClaw, and clones Clawdboss
- Setup (first run) β Interactive wizard creates your config, agents, and workspace
- Run (subsequent starts) β Starts the OpenClaw gateway on port 18789
All state lives in the openclaw-config Docker volume mounted at /home/openclaw/.openclaw.
Copy .env.example to .env and fill in your values:
# LLM Provider (pick at least one)
COPILOT_API_KEY=
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
# Interface (pick at least one)
DISCORD_BOT_TOKEN=
TELEGRAM_BOT_TOKEN=
# Gateway
GATEWAY_AUTH_TOKEN=
# Optional
BRAVE_API_KEY=
ELEVENLABS_API_KEY=Control the entrypoint behavior with CLAWDBOSS_MODE:
| Mode | Behavior |
|---|---|
auto (default) |
Run setup if no config exists, otherwise start gateway |
setup |
Always launch the setup wizard |
run |
Always start the gateway (fails if no config) |
The Docker volume clawdboss-openclaw-config stores:
openclaw.jsonβ Main configuration.envβ API keys and secrets (inside the container)- Agent workspaces and memory files
- Gateway state and logs
Your configuration survives docker compose down and docker compose up cycles. To start completely fresh, remove the volume:
docker volume rm clawdboss-openclaw-config# Option 1: Force setup mode
CLAWDBOSS_MODE=setup docker compose run --rm clawdboss
# Option 2: Remove config and restart
docker compose exec clawdboss rm ~/.openclaw/openclaw.json
docker compose restart clawdboss# Pull latest Clawdboss and OpenClaw
docker compose build --no-cache
docker compose up -ddocker compose logs -f clawdbossdocker compose exec clawdboss bashdocker compose run --rm clawdboss openclaw consoleUncomment the clawsuite service in docker-compose.yml to enable the browser-based management UI:
clawsuite:
image: ghcr.io/nanoflow-io/clawsuite:latest
container_name: clawsuite
restart: unless-stopped
ports:
- "3000:3000"
environment:
- GATEWAY_URL=http://clawdboss:18789
- GATEWAY_AUTH_TOKEN=${GATEWAY_AUTH_TOKEN:-}
depends_on:
- clawdbossThen access it at http://localhost:3000.
βββββββββββββββββββββββββββββββββββββββββββββββ
β Docker Container β
β β
β βββββββββββββββ ββββββββββββββββββββββββ β
β β OpenClaw β β Clawdboss Config β β
β β Gateway β β (/opt/clawdboss) β β
β β :18789 β β β β
β ββββββββ¬ββββββββ ββββββββββββββββββββββββ β
β β β
β ββββββββ΄ββββββββββββββββββββββββββββββββ β
β β ~/.openclaw (Docker Volume) β β
β β βββ openclaw.json β β
β β βββ .env β β
β β βββ workspace/ β β
β β βββ agents/ β β
β βββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββ¬βββββββββββββββββββββββββββ
β
βββββββββββ΄ββββββββββ
β β
Discord API Telegram API
Setup wizard doesn't appear:
Make sure you're using docker compose run (not up) for first-time setup, so stdin is attached.
Gateway won't start:
Check that openclaw.json exists in the volume: docker compose exec clawdboss ls ~/.openclaw/openclaw.json
Permission errors:
The container runs as user openclaw (uid 1000). If mounting host directories, ensure they're owned by uid 1000.
Port already in use:
Change the host port mapping in docker-compose.yml: "8080:18789" instead of "18789:18789".
- Clawdboss β The main setup wizard (non-Docker)
- OpenClaw β The AI agent platform
- NanoFlow β More tools and extensions
MIT β see LICENSE