brew install ollama
ollama --versionexport OLLAMA_MODELS=/Users/simonking/OpenClawSandbox/ollama_data/models
ollama serveollama pull qwen2.5:7b
ollama pull mistral:7b
ollama pull nomic-embed-text:latestollama listUse Tailscale Serve to expose your local OpenClaw gateway on your tailnet.
tailscale uptailscale serve --bg 18789tailscale serve statusExpected result should look like:
https://<your-device>.<your-tailnet>.ts.net (tailnet only)
|-- / proxy http://127.0.0.1:18789
tailscale serve reset
tailscale serve --bg 18789
tailscale serve statusIf you want internet-accessible exposure (not just tailnet), use Funnel:
tailscale funnel 18789Note: Keep OpenClaw bound to loopback for safety; Tailscale Serve handles secure access.
docker compose pull openclaw
docker compose up -d --force-recreate openclawdocker compose down
docker compose pull openclaw
docker compose up -ddocker image prune -fWhen opening the Control UI in a new browser, you may see a "Device pairing required" screen.
docker exec openclaw-gateway node dist/index.js devices listCopy the device ID from the pairing screen and run:
docker exec openclaw-gateway node dist/index.js devices approve <device-id>Example:
docker exec openclaw-gateway node dist/index.js devices approve f8a7757c-52d3-42f0-af77-5ad217133775After approval, click Reconnect (or reload the page) in your browser.
docker exec openclaw-gateway node dist/index.js config set agents.defaults.model.primary ollama/qwen2.5:7bdocker exec openclaw-gateway node dist/index.js config set agents.defaults.model.primary amazon-bedrock/openai.gpt-oss-20b-1:0tmux new -s ollama
# or, if it already exists:
tmux attach -t ollamaCtrl+B then % # vertical split (left/right)
Ctrl+B then " # horizontal split (top/bottom)
Ctrl+B then D # detach and keep processes running
tmux attach -t ollama
export OLLAMA_MODELS=/Users/simonking/OpenClawSandbox/ollama_data/models
ollama serve