Documentation

Deployment

Run ClawPilot on a VPS, a Raspberry Pi 4, or your local machine. Docker-first, single command to start.

Requirements

Minimum (Raspberry Pi 4)

4GB RAM, 32GB SD card, Docker + Docker Compose. OpenClaw only (no cloud API costs).

Recommended (VPS)

2 vCPU, 4GB RAM, 20GB SSD. Ubuntu 22.04+. Full stack with all cloud adapters.

Quick Start

1. Clone the repository

git clone https://github.com/ldom1/dombot-labos
cd dombot-labos

2. Configure environment

cp .env.example .env
nano .env   # or your preferred editor

Required variables:

# Required
CLAUDE_API_KEY=sk-ant-...

# Optional — enables additional agent adapters
MISTRAL_API_KEY=...
GEMINI_API_KEY=...

# Optional — Authelia auth (recommended for VPS)
AUTHELIA_JWT_SECRET=change-me-in-production
AUTHELIA_SESSION_SECRET=change-me-in-production

# Optional — custom ports
HUB_PORT=8088
KANBAN_PORT=8089

3. Start the stack

docker-compose up -d

Services start in order. The Hub is available at http://localhost:8088 within ~15 seconds.

4. Verify

docker-compose ps       # all services should be Up
curl localhost:8088/health  # {"ok": true, "agents": 1}

Services

Service Port Description
hub 8088 Dashboard + SSE stream + quick actions
kanban 8089 Task CRUD API + dependency enforcement
logger 8090 Append-only audit log + query API
openclaw 8091 Local AI agent (free, no API key needed)
nginx 80/443 Reverse proxy + static assets
authelia 9091 SSO auth (optional but recommended)

Nginx Configuration

ClawPilot ships with a ready-to-use Nginx config. It routes by subdirectory:

server {
    listen 80;
    server_name lab.yourdomain.com;

    # Hub dashboard
    location / {
        proxy_pass http://hub:8088;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    # Kanban API
    location /api/tasks {
        proxy_pass http://kanban:8089;
    }

    # Logs API + SSE
    location /api/logs {
        proxy_pass http://logger:8090;
        proxy_set_header X-Accel-Buffering no;  # required for SSE
    }

    # Static assets
    location /assets/ {
        root /var/www/public;
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
}

TLS with Let's Encrypt

docker-compose -f docker-compose.yml -f docker-compose.tls.yml up -d

The TLS compose override runs Certbot automatically. Set DOMAIN=lab.yourdomain.com and EMAIL=you@example.com in your .env.

Authelia (SSO)

Authelia protects all services behind a single login portal. Useful when exposing ClawPilot on a public VPS.

# In .env
ENABLE_AUTHELIA=true
AUTHELIA_DOMAIN=auth.yourdomain.com

# Default admin user (change immediately)
AUTHELIA_ADMIN_USER=admin
AUTHELIA_ADMIN_PASSWORD=changeme

After starting, visit https://auth.yourdomain.com to complete setup.

Updates

git pull
docker-compose pull
docker-compose up -d

Zero-downtime updates: services are replaced one at a time. Existing log entries and task state are preserved in Docker volumes.

Backup

# Backup all persistent data
docker run --rm \
  -v dombot-labos_data:/data \
  -v $(pwd)/backups:/backup \
  alpine tar czf /backup/labos-$(date +%Y%m%d).tar.gz /data