Building Custom AI Skills with InstructLab Taxonomy
Create domain-specific AI capabilities using InstructLab's taxonomy system—from writing skill definitions to generating synthetic training data and validating fine-tuned models.
The OpenClaw CLI (openclaw-cli) is the primary tool for configuring, managing, and troubleshooting your gateway. When running via Docker Compose, every CLI command follows this pattern:
docker compose run --rm openclaw-cli <command> [options]Running --help shows the full command tree:
docker compose run --rm openclaw-cli --helpOpenClaw v2026.2.25 ships with 40+ top-level commands organized into logical groups:
| Command | Description |
|---|---|
gateway * | Run, inspect, and query the WebSocket Gateway |
health | Fetch health from the running gateway |
status | Show channel health and recent session recipients |
doctor | Health checks + quick fixes for the gateway and channels |
logs | Tail gateway file logs via RPC |
dashboard | Open the Control UI with your current token |
| Command | Description |
|---|---|
config * | Non-interactive config helpers (get/set/unset) |
configure | Interactive setup wizard for credentials, channels, gateway, and agent defaults |
setup | Initialize local config and agent workspace |
onboard | Interactive onboarding wizard for gateway, workspace, and skills |
reset | Reset local config/state (keeps the CLI installed) |
| Command | Description |
|---|---|
agent | Run one agent turn via the Gateway |
agents * | Manage isolated agents (workspaces, auth, routing) |
sessions * | List stored conversation sessions |
message * | Send, read, and manage messages |
memory * | Search and reindex memory files |
| Command | Description |
|---|---|
channels * | Manage connected chat channels (Telegram, Discord, etc.) |
directory * | Lookup contact and group IDs (self, peers, groups) |
pairing * | Secure DM pairing (approve inbound requests) |
webhooks * | Webhook helpers and integrations |
| Command | Description |
|---|---|
security * | Security tools and local config audits |
approvals * | Manage exec approvals (gateway or node host) |
devices * | Device pairing + token management |
update * | Update OpenClaw and inspect update channel status |
uninstall | Uninstall the gateway service + local data |
| Command | Description |
|---|---|
cron * | Manage cron jobs via the Gateway scheduler |
hooks * | Manage internal agent hooks |
models * | Discover, scan, and configure models |
skills * | List and inspect available skills |
plugins * | Manage OpenClaw plugins and extensions |
sandbox * | Manage sandbox containers for agent isolation |
browser * | Manage OpenClaw’s dedicated browser (Chrome/Chromium) |
dns * | DNS helpers for wide-area discovery (Tailscale + CoreDNS) |
nodes * | Manage gateway-owned node pairing and node commands |
node * | Run and manage the headless node host service |
acp * | Agent Control Protocol tools |
tui | Open a terminal UI connected to the Gateway |
docker compose run --rm openclaw-cli config get agents.defaults.memorySearch.providerdocker compose run --rm openclaw-cli config set \
agents.defaults.compaction.memoryFlush.enabled truedocker compose run --rm openclaw-cli config unset \
agents.defaults.compaction.memoryFlush.systemPromptRun multiple config set commands in sequence. Each change generates a SHA-256 hash trail:
docker compose run --rm openclaw-cli config set key1 value1
docker compose run --rm openclaw-cli config set key2 value2
docker compose run --rm openclaw-cli config set key3 value3
docker compose restart openclaw-gatewayThe config file tracks changes with hash chains:
sha256 d6d04328... -> dd9c4954... (first change)
sha256 dd9c4954... -> 00585ebf... (second change)
sha256 00585ebf... -> 77d13c91... (third change)| Option | Description |
|---|---|
--dev | Dev profile: isolate state under ~/.openclaw-dev |
--profile <name> | Named profile under ~/.openclaw-<name> |
--log-level <level> | Override log level (silent|fatal|error|warn|info|debug|trace) |
--no-color | Disable ANSI colors |
-V, --version | Print version number |
Profiles let you run multiple OpenClaw instances with separate state:
# Production
docker compose run --rm openclaw-cli config set gateway.port 18789
# Development (isolated state)
docker compose run --rm openclaw-cli --dev gateway
# Uses port 19001, state in ~/.openclaw-dev/When environment variables like CLAUDE_WEB_COOKIE aren’t set, Docker Compose emits warnings:
WARN[0000] The "CLAUDE_WEB_COOKIE" variable is not set.
Defaulting to a blank string.Suppress these by adding empty defaults to your .env file:
cat >> ~/openclaw/.env <<'EOF'
CLAUDE_WEB_COOKIE=
CLAUDE_AI_SESSION_KEY=
CLAUDE_WEB_SESSION_KEY=
EOFOpenClaw CLI commands can be long. Create aliases:
# Add to ~/.bashrc
alias oc='docker compose run --rm openclaw-cli'
alias oc-config='docker compose run --rm openclaw-cli config'
alias oc-restart='docker compose restart openclaw-gateway'Then:
oc config set agents.defaults.memorySearch.provider local
oc-restartView the current full config:
docker exec -it openclaw-openclaw-gateway-1 sh -lc \
'cat /home/node/.openclaw/openclaw.json' | python3 -m json.toolCompare current config with the last backup:
docker exec -it openclaw-openclaw-gateway-1 sh -lc \
'diff /home/node/.openclaw/openclaw.json.bak /home/node/.openclaw/openclaw.json'When things aren’t working, doctor runs automated health checks:
docker compose run --rm openclaw-cli doctordocker compose run --rm openclaw-cli completion > /tmp/openclaw-completion.sh
source /tmp/openclaw-completion.shYou may notice the CLI prints a random tagline on every run:
🦞 OpenClaw 2026.2.25 (unknown)
curl for conversations.
🦞 OpenClaw 2026.2.25 (unknown)
I'm the reason your shell history looks like a hacker-movie montage.
🦞 OpenClaw 2026.2.25 (unknown)
Your .env is showing; don't worry, I'll pretend I didn't see it.These are built into the CLI binary — a nice touch of personality in an otherwise serious tool. Each invocation shows a different one.
# Search agent memory
docker compose run --rm openclaw-cli memory search "deployment configuration"
# Reindex memory files (after manual edits)
docker compose run --rm openclaw-cli memory reindex
# List memory contents
docker compose run --rm openclaw-cli memory list# Run security audit
docker compose run --rm openclaw-cli security audit
# Check for dangerous config flags
docker compose run --rm openclaw-cli security checkWhen troubleshooting, follow this sequence:
# 1. Check health
docker compose run --rm openclaw-cli health
# 2. Check channel status
docker compose run --rm openclaw-cli status
# 3. Run doctor
docker compose run --rm openclaw-cli doctor
# 4. Check logs
docker compose run --rm openclaw-cli logs
# 5. Verify config
docker compose run --rm openclaw-cli config get gatewayAI & Cloud Advisor with 18+ years experience. Author of 8 technical books, creator of Ansible Pilot. Speaker at KubeCon EU & Red Hat Summit 2026.
Create domain-specific AI capabilities using InstructLab's taxonomy system—from writing skill definitions to generating synthetic training data and validating fine-tuned models.
How to access the OpenClaw Control UI dashboard from an Azure VM — via SSH tunnel (secure) or public IP. Covers device pairing, dashboard authentication, and the browser-based management interface.
End-to-end guide to building a complete persistent memory system for your OpenClaw AI agent. Combine memory flush, hybrid search, file-backed notes, SQLite indexing, and session hooks into a cohesive knowledge architecture.