Architecture
clawui bridge network. Only ports
3000, 8080, and 6379 are exposed on the host.
Prerequisites
Quick Start
1. Configure environment
2. Deploy
- Build the Go binary (multi-stage Docker build)
- Build the SolidStart frontend (node:22-alpine)
- Start Redis, wait for it to be healthy
- Start the backend, wait for
/healthto return 200 - Start the frontend
3. Verify
Startup Sequence
Services start in this strict order (Dockerdepends_on + condition: service_healthy):
Health Check Endpoints
Common Commands
Updating the Application
up call. Docker layer cache makes
rebuilds fast for unchanged layers.
Data Persistence
Redis data is stored in a named Docker volumeredis_data. It persists across
container restarts and docker compose down. To wipe all data:
Local Development (without Docker)
For active development, run services individually: Redis (if not using system Redis):Note: Dev mode runs on port 3001. Theapp.config.tsproxies/apitohttp://localhost:8080automatically.
Troubleshooting
Backend won’t start — “redis: connection refused”
Redis isn’t healthy yet. Wait 10–15 seconds, or check:Frontend build fails — “Cannot find module”
Node dependencies may be stale. The Docker build handles this, but for local dev:Backend returns 500 — “openclaw: connection refused”
OPENCLAW_ENDPOINT is unreachable. Verify the gateway is running and the
endpoint URL in .env is correct.
CORS errors in browser
EnsureCORS_ALLOWED_ORIGINS in .env matches the origin your browser uses
(e.g., http://localhost:3000).
Port conflict
If port 3000, 8080, or 6379 is in use:.env:
Known Issues
UAT note: The deployment is functional for testing the UI, content
rendering, pinning, and session persistence. Real AI responses require
OPENCLAW_TOKEN to point to a working gateway.