How OpenClaw bridges the gap between conversational AI and autonomous task execution — and where it still falls dangerously short.
Not an AI model. An orchestration runtime that turns LLMs into autonomous agents.
| Creator | Peter Steinberger (Austrian dev, PSPDFKit founder, joined OpenAI Feb 2026) |
| History | Clawdbot (Nov 2025) → Moltbot (Jan 2026) → OpenClaw (Jan 30, 2026) |
| Stack | TypeScript + Swift, Node.js runtime, MIT license |
| GitHub | github.com/openclaw/openclaw — 250K+ stars, 500+ contributors |
| LLMs | Anthropic, OpenAI, Google, DeepSeek, Groq, Ollama, 50+ providers |
| Interface | WhatsApp, Telegram, Slack, Discord, Signal, iMessage + 18 more |
| Docs | docs.openclaw.ai — 28 install guides, CLI ref, tutorials |
Connecting OpenClaw to generative AI, assistants, agents, Claude Code, Gemini CLI, skills, subagents, memory, and sessions.
SOUL.md defines personality/rules, IDENTITY.md sets name/avatar, USER.md stores your profile. The assistant becomes a persistent digital entity.SKILL.md pattern, but with 13,700+ community skills on ClawHub. Three scope levels: workspace > global > bundled. Each skill = Markdown contract with instructions + tools + rules.What you need before installing OpenClaw.
node -v. Install via nodejs.org or your package manager.Open a terminal and run these commands. All should succeed:
# Check Node.js version (must be 22.14+ or 24+)
node -v
# Check npm
npm -v
# Check if Docker is available (optional)
docker --version
# On Windows, check WSL
wsl --statusExpected: Node v22.14+ or v24+, npm 10+. Docker is optional but recommended.
Install Node.js 24 on Ubuntu/Debian:
# Install Node.js via NodeSource
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
sudo apt-get install -y nodejs
# Verify
node -v # Should show v24.x.x
npm -vMultiple methods — pick what fits your comfort level.
Downloads, installs, and launches the onboarding wizard in one command.
curl -fsSL https://openclaw.ai/install.sh | bashiwr -useb https://openclaw.ai/install.ps1 | iexTo skip the interactive wizard, add -- --no-onboard.
Choose the npm method and install OpenClaw:
# Install
npm install -g openclaw@latest
# Verify installation
openclaw --version
# Run diagnostics
openclaw doctorExpected: Version number printed, doctor shows all green checks (except optional components).
export PATH="$(npm prefix -g)/bin:$PATH"in your shell's rc fileSHARP_IGNORE_GLOBAL_LIBVIPS=1 npm install -g openclaw@latestsudo npm install -g; fix npm prefix insteadThe interactive wizard that configures your agent, API keys, and Gateway.
Running openclaw onboard --install-daemon launches a 2-minute interactive wizard that:
openclaw onboard --install-daemon \
--anthropic-api-key "sk-ant-your-key"openclaw onboard --install-daemon \
--openai-api-key "sk-your-key"openclaw onboard --non-interactive \
--auth-choice ollama \
--accept-riskopenclaw onboard --install-daemon \
--auth-choice apiKey \
--token-provider openrouter \
--token "sk-or-your-key"# Run the wizard
openclaw onboard --install-daemon
# Follow the prompts:
# 1. Select provider → pick one you have an API key for
# 2. Enter API key
# 3. Wait for Gateway to start
# Verify everything is running
openclaw gateway status # Should show "running"
openclaw dashboard # Opens Control UI in browserExpected: Gateway running on port 18789. Browser opens to http://127.0.0.1:18789/ showing the Control UI.
# Check Gateway status
openclaw gateway status
# Open Control UI in browser
openclaw dashboard
# Diagnose any issues
openclaw doctor
openclaw doctor --fix # Auto-repair common problems
# Send a test message (without any channel)
openclaw agent --message "Hello! What's 2 + 2?"
# View logs
openclaw logs --followThe Markdown files that define who your agent is, how it behaves, and what it remembers.
~/.openclaw/workspace.memory/YYYY-MM-DD.md files. Today + yesterday auto-loaded into context.This is the default template from the official docs. It defines your agent's personality:
# SOUL.md - Who You Are
_You're not a chatbot. You're becoming someone._
## Core Truths
**Be genuinely helpful, not performatively helpful.** Skip the
"Great question!" and "I'd be happy to help!" -- just help.
Actions speak louder than filler words.
**Have opinions.** You're allowed to disagree, prefer things,
find stuff amusing or boring. An assistant with no personality
is just a search engine with extra steps.
**Be resourceful before asking.** Try to figure it out. Read
the file. Check the context. Search for it. _Then_ ask if
you're stuck.
**Earn trust through competence.** Your human gave you access
to their stuff. Don't make them regret it. Be careful with
external actions (emails, tweets, anything public). Be bold
with internal ones (reading, organizing, learning).
**Remember you're a guest.** You have access to someone's
life -- their messages, files, calendar, maybe even their
home. That's intimacy. Treat it with respect.
## Boundaries
- Private things stay private. Period.
- When in doubt, ask before acting externally.
- Never send half-baked replies to messaging surfaces.
- You're not the user's voice -- be careful in group chats.
## Vibe
Be the assistant you'd actually want to talk to. Concise
when needed, thorough when it matters. Not a corporate
drone. Not a sycophant. Just... good.
---
_This file is yours to evolve. As you learn who you are,
update it._# Navigate to your workspace
cd ~/.openclaw/workspace
# List all files
ls -la
# Read the SOUL.md
cat SOUL.md
# Read the AGENTS.md (operating instructions)
cat AGENTS.md
# Check your identity
cat IDENTITY.md
# Read the user profile
cat USER.mdBonus: Edit SOUL.md and add a custom personality trait. Then test it by chatting with the agent.
Create a custom IDENTITY.md for your agent:
# Identity
**Name:** Atlas
**Creature:** AI research assistant
**Vibe:** Sharp, curious, slightly nerdy
**Emoji:** 🔬
---
Atlas is a focused research assistant who loves
digging into technical details and explaining
complex concepts simply.Then test it: openclaw agent --message "Who are you?"
How a message flows from your phone to real-world action.
openclaw gateway status # Check if running
openclaw gateway run # Start in foreground
openclaw gateway install # Install as daemon service
openclaw gateway start # Start daemon
openclaw gateway stop # Stop daemon
openclaw gateway restart # Restart daemon
openclaw gateway health # Liveness check
openclaw gateway usage-cost # See API usage costs
openclaw status # Session health, usage metrics
openclaw health # Lightweight liveness
openclaw logs --follow # Tail logs in real-time
openclaw dashboard # Open Control UI in browser
openclaw tui # Terminal UI interface# Check Gateway status
openclaw gateway status
# View current sessions
openclaw sessions
# Check health endpoint directly
curl -fsS http://127.0.0.1:18789/healthz
# Open the Control UI
openclaw dashboard
# View live logs
openclaw logs --followHow to connect WhatsApp, Telegram, Slack, Discord, and 20+ other platforms.
Uses the Baileys library (reverse-engineered WhatsApp Web). No Meta approval needed.
# Install WhatsApp plugin
openclaw plugins install @openclaw/whatsapp
# Login (scan QR code with your phone)
openclaw channels login --channel whatsapp
# Start the Gateway
openclaw gateway
# Approve pairing (when someone messages)
openclaw pairing list whatsapp
openclaw pairing approve whatsapp <CODE>{
"channels": {
"whatsapp": {
"dmPolicy": "pairing",
"allowFrom": ["+15551234567"],
"groupPolicy": "allowlist",
"groupAllowFrom": ["+15551234567"]
}
}
}Note: Your phone must remain online. Unlinks after ~14 days offline.
| Policy | Behavior | Use When |
|---|---|---|
pairing (default) | Unknown senders get a code to approve | Personal use — you control who talks to your agent |
allowlist | Only pre-listed numbers/IDs can message | Strict access — only known contacts |
open | Anyone can message (requires allowFrom: ["*"]) | Public-facing bots — use with caution |
disabled | No DMs accepted | Group-only channels |
You don't need WhatsApp to test. Use the CLI agent directly:
# Send a test message to your agent
openclaw agent --message "What can you do?"
# Start an interactive session
openclaw agent --local --thinking low
# Check channel status
openclaw channels statusHow to install, create, and manage skills — OpenClaw's primary extension mechanism.
<workspace>/skills<workspace>/.agents/skills~/.agents/skills~/.openclaw/skillsbundledskills.load.extraDirs# Search ClawHub for skills
openclaw skills search "email"
# Install a skill from ClawHub
openclaw skills install <skill-slug>
# List all loaded skills
openclaw skills list
# List eligible skills only
openclaw skills list --eligible
# Update all installed skills
openclaw skills update --all
# Get info about a skill
openclaw skills info <skill-name>
# Check skill health
openclaw skills check---
name: hello_world
description: A simple greeting skill that responds cheerfully.
version: 1.0.0
---
# Hello World Skill
When the user asks for a greeting or says hello:
1. Respond with a cheerful, personalized greeting
2. Include the current time if available
3. Mention one fun fact about the current day
Keep responses concise (2-3 sentences max).---
name: weather_check
description: Check current weather for any city.
version: 1.0.0
metadata:
openclaw:
requires:
env: [OPENWEATHER_API_KEY]
bins: [curl]
emoji: "🌤️"
homepage: "https://github.com/yourname/weather-skill"
---
# Weather Check
When the user asks about weather:
1. Extract the city name from the message
2. Use curl to call OpenWeatherMap API:
`curl "https://api.openweathermap.org/data/2.5/weather?q={city}&appid=$OPENWEATHER_API_KEY&units=metric"`
3. Parse the JSON response
4. Report: temperature, conditions, humidity, wind
5. Add a brief outfit recommendation
## Constraints
- Always confirm the city before calling the API
- Use metric units by default
- If the API fails, suggest checking the city name# Create the skill directory
mkdir -p ~/.openclaw/workspace/skills/study-helper
# Create the SKILL.md
cat > ~/.openclaw/workspace/skills/study-helper/SKILL.md << 'EOF'
---
name: study_helper
description: Helps with study planning and quiz generation.
version: 1.0.0
---
# Study Helper
When the user asks for study help:
1. Ask what subject they want to study
2. Create a 15-minute study plan
3. Generate 3 quiz questions to test understanding
4. After answering, provide feedback
Keep questions at the user's level.
EOF
# Verify the skill loads
openclaw skills list
# Test it
openclaw agent --message "Help me study Python basics"Cisco found ~820 (7.7%) of ClawHub skills were malicious — performing data exfiltration, prompt injection, and credential harvesting. Always read a SKILL.md before installing. Treat it like installing an npm package from an unknown author.
How OpenClaw remembers across sessions, channels, and time.
# Check memory index status
openclaw memory status
# Search memory semantically
openclaw memory search "what did I say about the project deadline?"
# Force rebuild memory index
openclaw memory index --force
# Memory backends available:
# builtin — Default SQLite (keyword + vector + hybrid search)
# qmd — Local-first sidecar with reranking
# honcho — AI-native cross-session memory| Feature | ChatGPT | Claude | Claude Code | Gemini | OpenClaw |
|---|---|---|---|---|---|
| Persistence | Limited | Limited | CLAUDE.md + memory/ | Gems only | MEMORY.md + daily + SQLite |
| Cross-session | Partial | Projects | Yes | No | Yes |
| Cross-channel | N/A | N/A | N/A | N/A | Yes |
| Search | None | None | Grep/read | None | Vector + keyword + hybrid |
| Data location | Cloud | Cloud | Local | Cloud | Local |
| Auto-learning | Partial | No | Manual | No | Daily notes + dreaming |
# Check your memory files
ls ~/.openclaw/workspace/memory/
# Read today's memory
cat ~/.openclaw/workspace/memory/$(date +%Y-%m-%d).md
# Read long-term memory
cat ~/.openclaw/workspace/MEMORY.md
# Search memory
openclaw memory search "preferences"
# Tell the agent something to remember, then check
openclaw agent --message "Remember: I prefer dark mode in all apps"
cat ~/.openclaw/workspace/MEMORY.mdMaking your agent work when you're not watching.
# Heartbeat Tasks
- Check if any new emails arrived and summarize important ones
- Review calendar for upcoming meetings in the next 2 hours
- Check system disk usage and alert if above 80%# Create a one-shot reminder
openclaw cron add \
--name "Standup Reminder" \
--at "2026-04-08T09:00:00Z" \
--session main \
--system-event "Reminder: daily standup in 15 minutes" \
--delete-after-run
# Create a recurring job
openclaw cron add \
--name "Morning Briefing" \
--cron "0 7 * * *" \
--tz "Asia/Karachi" \
--session isolated \
--message "Generate my morning briefing: weather, calendar, news headlines"
# List all cron jobs
openclaw cron list
# View run history
openclaw cron runs --id <job-id>
# Edit a job
openclaw cron edit <job-id> --message "Updated prompt"
# Run a job manually
openclaw cron run <job-id>
# Remove a job
openclaw cron remove <job-id>| Aspect | Heartbeat | Cron |
|---|---|---|
| Timing | ~30min intervals (approximate) | Exact (cron expressions) |
| Context | Full session history | Isolated by default |
| Task records | No | Yes |
| Token cost | ~100K tokens/run (full), ~2-5K (light) | Varies by prompt |
| Best for | Routine monitoring, full-context checks | Precise scheduling, reports |
# Create a reminder for 20 minutes from now
openclaw cron add \
--name "Test Reminder" \
--at "20m" \
--session main \
--system-event "This is a test reminder!" \
--delete-after-run
# List your jobs
openclaw cron list
# Watch the logs to see it fire
openclaw logs --followFree, private, no API keys — run your own AI models.
# 1. Install Ollama (https://ollama.com/download)
curl -fsSL https://ollama.ai/install.sh | sh
# 2. Pull a model (choose based on your RAM)
ollama pull llama3.2:3b # 8GB+ RAM (fast, basic)
ollama pull glm-4.7-flash # 16GB+ RAM (quality)
ollama pull qwen3-coder # 16GB+ RAM (coding)
# 3. Set up OpenClaw with Ollama
openclaw onboard --non-interactive \
--auth-choice ollama \
--accept-risk
# 4. Or switch an existing install to Ollama
openclaw models set ollama/glm-4.7-flash
# 5. Verify
openclaw models list
openclaw agent --message "Hello from Ollama!"/v1 in the Ollama URL. Use http://localhost:11434 (no /v1). Adding /v1 breaks tool calling and models output raw JSON as plain text.# Check if Ollama is running
ollama list
# Pull a small model for testing
ollama pull llama3.2:3b
# Configure OpenClaw
openclaw models set ollama/llama3.2:3b
# Test it
openclaw agent --message "Explain what an AI agent is in 2 sentences"
# Switch back to cloud if needed
openclaw models set anthropic/claude-sonnet-4-6Where it fits in the AI landscape.
| Dimension | ChatGPT | Claude Chat | Claude Code | Gemini CLI | OpenClaw |
|---|---|---|---|---|---|
| Purpose | General chat | General chat | Coding agent | Coding + CLI | Life/work automation |
| Interface | Web/App | Web/App | Terminal/IDE | Terminal | Messaging apps + CLI |
| Executes actions | No | Computer Use β | Yes (code/files) | Yes (code/files) | Yes (everything) |
| Runs 24/7 | No | No | No | No | Yes (Heartbeat + Cron) |
| Model lock-in | GPT only | Claude only | Claude only | Gemini only | Any of 50+ providers |
| Self-hosted | No | No | CLI local | CLI local | Fully local |
| Skills/Extensions | GPTs/plugins | Projects | Skills + MCP | Limited | 13,700+ on ClawHub |
| Memory | Limited | Limited | CLAUDE.md | Minimal | Markdown + SQLite + vector |
| Setup complexity | None | None | Low | Low | High |
| Security | Managed | Managed | Sandboxed | Moderate | Insecure by default |
| Cost | $20/mo | $20/mo | $20/mo+ | Free | Free (BYOK) |
Every student must understand this before deploying OpenClaw.
# Run a security audit
openclaw security audit
# Manage execution approvals
openclaw approvals get
openclaw approvals set --policy strict
openclaw approvals allowlist add "safe-command"
# Manage secrets
openclaw secrets list
openclaw secrets set MY_API_KEY "value"
# Enable sandbox mode (runs non-main sessions in Docker)
openclaw config set agents.defaults.sandbox.mode "non-main"openclaw logs)pairing or allowlist, never opengateway.bind: "loopback" — never expose to internet# Run the built-in security audit
openclaw security audit
# Check your Gateway binding
openclaw config get gateway.bind
# Should be "loopback" — never "lan" or "0.0.0.0"
# Check DM policies
openclaw config get channels
# Review execution approvals
openclaw approvals getWhere OpenClaw falls short and what to watch for.
Wrap-up: discussion questions, final exercises, and key takeaways.
If an AI agent has shell + email + file access — how is it different from a remote employee? What trust model should apply?
Text hallucination wastes time. Action hallucination deletes files. How do you design guardrails for agents that act?
ClawHub has 7.7% malicious skills. npm has similar supply chain attacks. Is this solvable or inherent to extensibility?
Where should the human approval boundary be? Every action? Only destructive? Only financial? How do you decide?
OpenClaw works with any LLM. What happens when you swap a strong model for a weak one? Is model-agnosticism a risk?
Data is stored locally, but prompts go to external APIs. Is "local-first" actually private? Is it misleading marketing?
Who is legally liable when an autonomous agent sends a wrong email, deletes data, or makes a purchase? User? Framework? LLM provider?
Combine everything: write custom SOUL.md, IDENTITY.md, USER.md, create a skill, set up a heartbeat task, and test via CLI.
Audit 3 random skills from ClawHub. For each: what system access does it request? Would you install it? Why or why not?
Design a permission model for an agent managing a restaurant's daily reports. What actions need human approval? What can be fully automated?