Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Open more actions menu

Repository files navigation

Clawbot-Hub - Multi-Tenant OpenClaw/Hermes Management Platform

Table of Contents

1. What is Clawbot-Hub?

  • Clawbot-Hub is a multi-tenant intelligent Agent management platform.
    1. Clawbot-Hub can create and manage OpenClaw/Hermes instances in containers, including create, delete, restart, rebuild, view logs, and view resource usage.
    2. Users can chat with OpenClaw/Hermes and schedule tasks through the Clawbot-Hub chat interface.
    3. Clawbot-Hub can also connect to OpenClaw/Hermes instances that you create yourself through Channel.
    4. Clawbot-Hub can manage files and scheduled tasks inside OpenClaw/Hermes.

  • Create and manage OpenClaw/Hermes instances in containers.

  • Chat with your OpenClaw/Hermes instances and schedule tasks.

  • How to use Clawbot-Hub with Hub-created OpenClaw/Hermes instances:

    1. Create an OpenClaw/Hermes Agent instance in "Agent Management".
    2. Create a robot in "Robot Management", then choose "Bind Agent" from the action menu and bind the Agent instance you just created.
    3. In "Robot Management", choose "Chat" from the action menu, enter a chat name, and click "Create Chat". After the chat is created, you can chat with the Agent instance and schedule tasks.
  • How to use Clawbot-Hub with existing OpenClaw/Hermes instances:

    1. Create a robot in "Robot Management".
    2. If you use OpenClaw, see 6. Connect a Local OpenClaw Instance to Clawbot-Hub.
    3. If you use Hermes, see 7. Connect a Local Hermes Instance to Clawbot-Hub.
    4. After OpenClaw/Hermes is configured, the connection status in "Robot Management" changes to "Connected".
    5. In "Robot Management", choose "Chat" from the action menu, enter a chat name, and click "Create Chat". After the chat is created, you can chat with the Agent instance and schedule tasks.

2. Clawbot-Hub Components

  • postgres: Clawbot-Hub database, used to store users, Agent instances, conversations, scheduled tasks, and related data.
  • Docker in Docker (dind): Agent instances created by Clawbot-Hub run inside DinD.

3. Quick Install with Docker

Docker installation is suitable for deployment on a server or for long-running local use. This mode starts:

  • clawbot-hub: frontend static server on 5173 and backend API on 8787
  • postgres: Hub database
  • docker-0.docker: Docker in Docker, used to run OpenClaw/Hermes Agent containers created by Hub
  1. Clone the source code.
git clone https://github.com/cookeem/clawbot-hub.git
cd clawbot-hub
  1. Build the OpenClaw plugin.
npm --prefix plugin/openclaw install
npm --prefix plugin/openclaw run build
  1. Prepare the Docker deployment directory.
mkdir -p data/sandbox
mkdir -p data/clawbot-hub/uploads
mkdir -p data/clawbot-hub/workspaces
mkdir -p data/clawbot-hub/logs

cp -rp backend/config.docker.yaml data/clawbot-hub/
cp -rp plugin data/clawbot-hub/

# Generate DinD Docker daemon TLS certificates. Certificates are written to ./certs.
sh docker_certs.sh
  1. Update configuration.

Edit data/clawbot-hub/config.docker.yaml:

  • server.corsOrigin: frontend access URL, for example http://SERVER_IP:5173
  • server.auth.tokenSecret: use a strong random string in production
  • docker.openclaw.channelBaseUrl: Hub address reachable by OpenClaw Agents, for example http://SERVER_IP:8787
  • docker.hermes.channelBaseUrl: Hub address reachable by Hermes Agents, for example http://SERVER_IP:8787
  • database.password: must match POSTGRES_PASSWORD in docker-compose-clawbothub.yaml
  • models.providers: model service base URL, API key, model list, and parameters
  • smtp: password reset email settings; keep enabled: false if email is not used

If the frontend does not access the backend through localhost, set this before startup:

export FRONTEND_API_BASE_URL=http://SERVER_IP:8787
  1. Start the services.
docker compose -f docker-compose-clawbothub.yaml up -d
docker compose -f docker-compose-clawbothub.yaml ps
  1. Load Agent images into DinD.

If the server cannot pull OpenClaw/Hermes images directly, place image archives under data/sandbox/, then load them inside the DinD container:

docker exec -ti clawbot-hub-docker-0 ash
docker pull ghcr.io/openclaw/openclaw:2026.6.5-slim
docker pull nousresearch/hermes-agent:v2026.6.5
docker images
exit
  1. Access the services.

4. Local Development Setup

  1. Clone the source code.
git clone https://github.com/cookeem/clawbot-hub.git
cd clawbot-hub
  1. Install dependencies.
npm --prefix backend install
npm --prefix frontend install
npm --prefix plugin/openclaw install
  1. Start PostgreSQL and DinD.
sh docker_certs.sh
docker compose up -d

Default ports:

  • PostgreSQL: 127.0.0.1:15432
  • Docker daemon: 127.0.0.1:22376
  1. Update local configuration.

Edit backend/config.yaml:

  • database: defaults to the PostgreSQL instance started by local compose
  • docker.daemonHosts / docker.daemonTls: defaults to the DinD instance started by local compose
  • docker.openclaw.channelBaseUrl / docker.hermes.channelBaseUrl: change them to a Hub backend URL reachable by Agent containers
  • models.providers: model service settings
  • smtp: password reset email settings
  1. Start the backend.
npm run backend:dev

Backend default URLs:

  1. Start the frontend.
npm run frontend:dev

Frontend default URL:

To override the backend URL used by the frontend:

VITE_API_BASE_URL=http://localhost:8787 npm run frontend:dev
  1. Database migrations.

By default, database.autoMigrateOnStart: true in backend/config.yaml, so the backend runs database migrations automatically on startup. You can also run them manually:

npm run db:migrate

5. Build the Docker Image

# Clone the source code.
git clone https://github.com/cookeem/clawbot-hub.git
cd clawbot-hub

# Install dependencies.
npm --prefix backend install
npm --prefix frontend install
npm --prefix plugin/openclaw install

# Build artifacts. The Dockerfile copies these artifacts directly and does not run npm run build inside the image.
npm --prefix backend run build
npm --prefix frontend run build
npm --prefix plugin/openclaw run build

# Build a single-architecture image.
docker build --platform=linux/amd64 -t cookeem/clawbot-hub:v0.6.1 .

# Optional: save the image archive.
docker save -o clawbot-hub__v0.6.1 cookeem/clawbot-hub:v0.6.1

Build and push a multi-architecture image:

docker buildx create --name clawbot-multi --use
docker buildx inspect --bootstrap

docker buildx build \
  --platform linux/amd64,linux/arm64/v8 \
  -t cookeem/clawbot-hub:v0.6.1 \
  -t cookeem/clawbot-hub:latest \
  --push .

6. Connect a Local OpenClaw Instance to Clawbot-Hub

Clawbot-Hub connects to a local OpenClaw instance through the native OpenClaw Channel extension. For full details, see:

  • plugin/openclaw/README.md
  1. Create a robot in Hub.

Create a robot in the Clawbot-Hub frontend, choose type openclaw, and record these values from the robot details:

  • appId
  • appSecret
  1. Install the OpenClaw plugin.
mkdir -p ~/.openclaw/extensions/clawbot-hub
rsync -a plugin/openclaw/ ~/.openclaw/extensions/clawbot-hub/

If the local plugin has not been built, run:

npm --prefix plugin/openclaw install
npm --prefix plugin/openclaw run build
  1. Configure OpenClaw.

Add this to the active openclaw.json used by OpenClaw:

{
  "plugins": {
    "entries": {
      "clawbot-hub": {
        "enabled": true
      }
    }
  },
  "channels": {
    "clawbot-hub": {
      "enabled": true,
      "baseUrl": "http://127.0.0.1:8787",
      "appId": "cb_app_xxx",
      "appSecret": "cb_sec_xxx",
      "openclawInstanceId": "openclaw-local-1",
      "pollTimeoutMs": 1000,
      "heartbeatIntervalMs": 15000
    }
  }
}

If OpenClaw runs in a Docker container and Hub runs on the host machine, baseUrl usually should be:

http://host.docker.internal:8787
  1. Restart OpenClaw Gateway and verify.
openclaw plugins list --enabled | grep -i clawbot-hub
openclaw channels list | grep -i "ClawBot Hub"
openclaw channels status | grep -i "ClawBot Hub"

After the connection succeeds, you can see the Agent connection status in Hub Robot Management and create chat conversations.

7. Connect a Local Hermes Instance to Clawbot-Hub

Hermes currently connects to Hub through a bridge: Hermes starts its own api_server, and plugin/hermes/bridge.py polls Hub, calls the Hermes API Server, and pushes results back to Hub.

For full details, see:

  • plugin/hermes/README.md
  1. Create a robot in Hub.

Create a robot in the Clawbot-Hub frontend, choose type hermes, and record:

  • appId
  • appSecret
  • agentInstanceId (customizable, for example hermes-local-1)
  1. Install the Hermes bridge.
mkdir -p ~/.hermes/extensions/clawbot-hub
rsync -a plugin/hermes/bridge.py ~/.hermes/extensions/clawbot-hub/
chmod +x ~/.hermes/extensions/clawbot-hub/bridge.py
  1. Configure Hermes itself in ~/.hermes/config.yaml.

Minimal example:

model:
  provider: openai
  model: MiniMax-M2_5
  default: MiniMax-M2_5
  base_url: "https://your-openai-compatible-endpoint/v1"
  api_key: "YOUR_API_KEY"
  api_mode: openai-completions

platforms:
  api_server:
    enabled: true
    extra:
      host: 127.0.0.1
      port: 8642
  1. Configure the bridge in ~/.hermes/clawbot-hub.json.
{
  "enabled": true,
  "hub": {
    "baseUrl": "http://127.0.0.1:8787",
    "appId": "cb_app_xxx",
    "appSecret": "cb_sec_xxx",
    "accountId": "clawbot-hub-cb_app_xxx",
    "agentInstanceId": "hermes-local-1",
    "pollTimeoutMs": 1000,
    "heartbeatIntervalMs": 15000
  },
  "apiServer": {
    "baseUrl": "http://127.0.0.1:8642",
    "keyFromEnv": "API_SERVER_KEY",
    "requestTimeoutMs": 180000
  }
}

If Hermes runs in a Docker container and Hub runs on the host machine, hub.baseUrl usually should be:

http://host.docker.internal:8787
  1. Start Hermes and the bridge.

Local example:

export HERMES_HOME=~/.hermes
export API_SERVER_ENABLED=true
export API_SERVER_HOST=127.0.0.1
export API_SERVER_PORT=8642
export API_SERVER_KEY=Hello@123
export CLAWBOT_HUB_BRIDGE_CONFIG=$HERMES_HOME/clawbot-hub.json

python $HERMES_HOME/extensions/clawbot-hub/bridge.py &
gateway run
  1. Verify the connection.
curl -s http://127.0.0.1:8642/health

Check the bridge logs. You should see:

  • [clawbot-hub/hermes] config path: ...
  • [clawbot-hub/hermes] login success

After the connection succeeds, you can see the Hermes Agent connection status in Hub Robot Management and create chat conversations.

About

Clawbot-Hub - Multi-Tenant OpenClaw/Hermes Management Platform

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.