About This Guide: OpenClaw's power comes from its ability to act without being asked — scheduled cron jobs that run morning briefings, webhook triggers that respond to external events, heartbeat check-ins, and 24/7 daemon operation. This Q&A covers every automation command including openclaw start/stop/restart, cron configuration, webhook setup, and background process management.
Automation Commands at a Glance
# Agent lifecycle
openclaw start # Start agent (foreground)
openclaw start --daemon # Start as background daemon
openclaw stop # Graceful shutdown
openclaw stop --force # Force immediate stop
openclaw restart # Stop then start
openclaw restart --graceful # Finish current task first
openclaw status # Show running state + stats
# Cron job management
openclaw cron list # List all scheduled jobs
openclaw cron add # Add new cron job
openclaw cron remove [id] # Remove a cron job
openclaw cron enable [id] # Enable disabled job
openclaw cron disable [id] # Disable job temporarily
openclaw cron run [id] # Run job manually right now
openclaw cron logs [id] # View job run history
# Webhook management
openclaw webhook list # List registered webhooks
openclaw webhook create # Create new webhook endpoint
openclaw webhook delete [id] # Remove a webhook
openclaw webhook test [id] # Send test payload
openclaw webhook logs [id] # View webhook trigger history
Part 1: start, stop, restart, status Commands (Q1–Q10)
Q1 What is the difference between "openclaw start" and "openclaw start --daemon"?
openclaw start (foreground)
- ✅ Shows live logs in terminal
- ✅ Easy to Ctrl+C to stop
- ✅ Best for development/testing
- ❌ Stops when terminal closes
- ❌ Not suitable for 24/7 use
openclaw start --daemon
- ✅ Runs in background
- ✅ Survives terminal close
- ✅ Best for 24/7 production
- ✅ Logs written to file
- ❌ Need to check logs separately
Q2 How do I make OpenClaw auto-start on system boot?
# Option 1: Built-in autostart command
openclaw start --autostart
# Registers system service automatically
# Option 2: macOS LaunchAgent (manual)
cat > ~/Library/LaunchAgents/com.openclaw.plist << EOF
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0"><dict>
<key>Label</key><string>com.openclaw</string>
<key>ProgramArguments</key>
<array><string>/usr/local/bin/openclaw</string><string>start</string></array>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
</dict></plist>
EOF
launchctl load ~/Library/LaunchAgents/com.openclaw.plist
# Option 3: Linux systemd service
openclaw start --systemd # Auto-creates systemd unit file
systemctl enable --now openclaw
Q3 What does "openclaw status" show and how to interpret it?
openclaw status
──────────────────────────────────────
🦞 OpenClaw Agent Status
──────────────────────────────────────
Status: ● Running (PID: 18432)
Agent Name: Jarvis
Uptime: 3 days 14 hours 22 min
AI Provider: anthropic (claude-sonnet-4-5)
Memory: 245 MB used
Skills Active: 8 / 12 installed
Messages Today: 47
Cron Jobs: 5 active
Webhooks: 3 registered
Last Activity: 4 minutes ago
API Calls Today: 312 (est. $0.48)
Q4 How do I perform a graceful restart without interrupting active tasks?
# Graceful restart (waits for current task to finish)
openclaw restart --graceful
# Immediate restart (use when not processing anything)
openclaw restart
# Restart with config reload
openclaw restart --reload-config
# Check if restart is safe right now
openclaw status --check-safe-restart
Always use --graceful in production to avoid interrupting in-progress skill executions or webhook handlers.
Q5 How do I run multiple OpenClaw agent instances simultaneously?
# Start with a named profile (separate config)
openclaw start --profile work
openclaw start --profile personal
openclaw start --profile team-bot
# Each profile uses separate port and config directory
# work: ~/.openclaw-work/
# personal: ~/.openclaw-personal/
# Check status of specific profile
openclaw status --profile work
# Stop a specific profile
openclaw stop --profile work
Q6 OpenClaw stops unexpectedly — how do I enable crash recovery?
# Start with auto-restart on crash
openclaw start --daemon --auto-restart
# Configure in .env
AUTO_RESTART=true
RESTART_DELAY=5000 # Wait 5s before restart
MAX_RESTART_COUNT=10 # Max restarts per hour
# Use PM2 for production-grade process management
npm install -g pm2
pm2 start "openclaw start" --name openclaw
pm2 save && pm2 startup
Pro tip: For truly reliable 24/7 operation, combine PM2 process management with VPN07's stable connection. PM2 handles crashes, VPN07 handles network reliability. Together, they ensure your agent never misses a cron job.
Q7 How do I monitor OpenClaw's CPU and memory usage?
# Real-time performance stats
openclaw status --metrics
openclaw status --watch # Updates every 2 seconds
# Detailed performance report
openclaw status --full
# System-level monitoring
top -p $(openclaw status --pid)
htop # Then filter by "openclaw"
Q8 How do I send a command to a running agent from the terminal?
# Send a message to your agent via CLI
openclaw send "What's on my calendar today?"
# Trigger a specific skill command
openclaw send --skill gmail "send_email to:[email protected] subject:Hello body:Hi there"
# Trigger from shell script or another process
echo "run morning briefing" | openclaw send --stdin
Q9 How do I use openclaw with Docker for 24/7 cloud deployment?
# Basic Docker run
docker run -d \
--name openclaw-agent \
--restart unless-stopped \
-e ANTHROPIC_API_KEY="sk-ant-xxx" \
-e TELEGRAM_BOT_TOKEN="xxx" \
-v ~/.openclaw:/root/.openclaw \
-p 3000:3000 \
openclaw/openclaw:latest
# Check logs
docker logs openclaw-agent -f
# Send command to dockerized agent
docker exec openclaw-agent openclaw status
Q10 What does "openclaw start --debug" enable?
openclaw start --debug
# Enables:
# ✅ Verbose API request/response logging
# ✅ Full skill execution traces
# ✅ Memory read/write operations logged
# ✅ Cron job scheduling details
# ✅ Webhook payload logging
# ✅ Performance timing for each operation
# Note: Debug mode increases disk I/O significantly
# Use only for troubleshooting, not production
Part 2: Cron Job Commands (Q11–Q20)
Q11 How do I add a cron job via the CLI command?
# Interactive cron job creator
openclaw cron add
# Add with inline parameters
openclaw cron add \
--name "morning-briefing" \
--schedule "0 8 * * *" \
--action "send morning briefing summary"
# Add with specific skill
openclaw cron add \
--name "weekly-grocery-order" \
--schedule "0 9 * * 0" \
--skill tesco-shopper \
--action "order_groceries"
Q12 How do I write cron schedule expressions for OpenClaw?
Format: minute hour day-of-month month day-of-week
0 8 * * *
0 9 * * 1
0 * * * *
*/15 * * * *
0 0 1 * *
0 9,17 * * 1-5
@every 5m
@daily
Q13 How do I list all scheduled cron jobs and check their status?
openclaw cron list
ID NAME SCHEDULE STATUS LAST RUN NEXT RUN
1 morning-briefing 0 8 * * * active 2026-02-20 08:00 2026-02-21 08:00
2 weekly-grocery 0 9 * * 0 active 2026-02-16 09:00 2026-02-23 09:00
3 health-check */30 * * * * active 2026-02-20 14:30 2026-02-20 15:00
4 backup-memory 0 2 * * * disabled 2026-02-19 02:00 N/A
# View only active jobs
openclaw cron list --status active
Q14 How do I configure cron jobs directly in config.json?
// ~/.openclaw/config.json
{
"cron": [
{
"name": "morning-briefing",
"schedule": "0 8 * * *",
"action": "Send me a morning briefing with calendar, emails, and weather",
"channel": "telegram",
"enabled": true
},
{
"name": "api-cost-check",
"schedule": "0 20 * * *",
"action": "Report today's API usage cost and token count",
"channel": "telegram",
"enabled": true
},
{
"name": "memory-backup",
"schedule": "0 3 * * *",
"skill": "my-backup-skill",
"action": "backup_memory",
"enabled": false
}
]
}
Q15 How do I run a cron job immediately for testing?
# Run by cron job ID
openclaw cron run 1
# Run by cron job name
openclaw cron run morning-briefing
# Run and view output
openclaw cron run morning-briefing --verbose
# Dry run (shows what would happen, doesn't execute)
openclaw cron run morning-briefing --dry-run
Q16 What are heartbeats and how do I configure them?
Heartbeats are a special type of proactive message — your agent reaches out to you on a schedule without waiting for input. Unlike regular cron jobs that run a task silently, heartbeats always send a message to your chat.
// In config.json
{
"heartbeats": [
{
"name": "morning-check-in",
"schedule": "0 8 * * *",
"message": "Good morning! Here's your daily briefing...",
"include": ["calendar", "weather", "emails"]
},
{
"name": "end-of-day",
"schedule": "0 18 * * 1-5",
"message": "End of workday summary and tomorrow's prep"
}
]
}
Q17 A cron job didn't fire at the scheduled time — how do I debug this?
Step 1: Check the cron log
Step 2: Verify agent was running at scheduled time
Step 3: Check timezone configuration
openclaw config get TIMEZONE
# Cron schedules use the configured timezone
openclaw config set TIMEZONE "America/New_York"
Step 4: Check network — failed API call prevents cron delivery
If the agent couldn't reach the AI API at schedule time, the cron message won't be generated. VPN07's 1000Mbps stable connection prevents this.
Q18 How do I configure timezone for cron jobs?
# Set global timezone
openclaw config set TIMEZONE "America/New_York"
openclaw config set TIMEZONE "Europe/London"
openclaw config set TIMEZONE "Asia/Singapore"
# Or per-cron-job timezone (in config.json)
{
"name": "ny-morning-briefing",
"schedule": "0 8 * * *",
"timezone": "America/New_York",
"action": "morning briefing"
}
Q19 How do I set up a cron job that runs a shell command instead of an AI task?
// In config.json
{
"name": "server-health-check",
"schedule": "*/5 * * * *",
"type": "bash",
"command": "uptime && df -h",
"notify_on_error": true,
"notify_channel": "telegram"
}
Shell cron jobs run the command and only notify you if there's an error or the exit code is non-zero.
Q20 How do I view the history of a cron job's past runs?
# View last 20 runs for a specific job
openclaw cron logs morning-briefing
openclaw cron logs morning-briefing --last 50
# View runs within a date range
openclaw cron logs morning-briefing --since "2026-02-01"
# View only failed runs
openclaw cron logs morning-briefing --status failed
# Example output:
RUN_ID DATE DURATION STATUS
142 2026-02-20 08:00 4.2s ✅ success
141 2026-02-19 08:00 12.1s ✅ success
140 2026-02-18 08:00 - ❌ failed (ECONNRESET)
Part 3: Webhook Commands (Q21–Q28)
Q21 What is a webhook in OpenClaw and how does it work?
A webhook lets external services (GitHub, Stripe, your smart home hub, etc.) trigger your OpenClaw agent automatically. OpenClaw exposes an HTTP endpoint — when an external service calls that URL, your agent executes the configured action.
🌐
External Service
GitHub, Stripe, IFTTT...
🦞
OpenClaw Agent
Executes action + notifies you
Q22 How do I create a new webhook endpoint?
# Interactive webhook creator
openclaw webhook create
# Create with inline parameters
openclaw webhook create \
--name "github-pr-notifier" \
--path "/webhooks/github" \
--action "A new PR was opened: summarize and notify me"
# Output:
✅ Webhook created!
URL: http://your-server:3000/webhooks/github
Secret: wh_secret_xxxxxxxxxxxxx
ID: webhook_7
Q23 How do I expose my webhook URL to the internet (from behind NAT)?
If your OpenClaw runs on a home machine without a public IP, you need a tunnel:
✅ Option 1: cloudflared (free)
cloudflared tunnel --url http://localhost:3000
# Gives you: https://xxx.trycloudflare.com
✅ Option 2: ngrok
ngrok http 3000
# Gives you: https://abc123.ngrok.io
✅ Option 3: Deploy on VPS with VPN07
A $5/month VPS with VPN07 gives your agent a permanent public IP. Our 1000Mbps bandwidth handles any webhook traffic volume.
Q24 How do I add webhook secret verification for security?
# Create webhook with secret signature verification
openclaw webhook create \
--name "stripe-payments" \
--path "/webhooks/stripe" \
--secret "whsec_your_stripe_webhook_secret" \
--verify-signature true \
--action "A payment was received, notify me with details"
# OpenClaw verifies HMAC signature on every incoming request
# Invalid signatures are rejected with 401
Q25 How do I test a webhook by sending a simulated payload?
# Test using openclaw CLI
openclaw webhook test webhook_7
# Test with custom payload
openclaw webhook test webhook_7 \
--payload '{"action":"opened","pull_request":{"title":"Fix bug"}}'
# Test with curl directly
curl -X POST http://localhost:3000/webhooks/github \
-H "Content-Type: application/json" \
-d '{"action":"opened","number":42}'
Q26 How do I set up Gmail to trigger OpenClaw on new emails?
# Step 1: Install gmail skill
openclaw skills install gmail
# Step 2: Configure Gmail Pub/Sub webhook trigger
openclaw skills configure gmail
# Follow the OAuth + Pub/Sub setup wizard
# Step 3: Create webhook for Gmail events
openclaw webhook create \
--name "gmail-incoming" \
--path "/webhooks/gmail" \
--skill gmail \
--trigger "on_email_received" \
--action "Summarize and notify me of this email"
Q27 How do I view all webhook trigger history and success/failure rates?
# View recent webhook triggers
openclaw webhook logs
openclaw webhook logs webhook_7
openclaw webhook logs --last 50
# Filter by status
openclaw webhook logs --status failed
openclaw webhook logs --status success
# View success rate statistics
openclaw webhook stats
# Output: 98.4% success rate (last 30 days)
Q28 How does a reliable network affect cron jobs and webhooks?
Both cron jobs and webhooks make API calls to your AI provider when they trigger. A dropped or throttled connection causes:
❌ Without stable VPN
- • Cron jobs silently fail
- • Missing morning briefings
- • Webhook timeouts
- • ECONNRESET errors in logs
✅ With VPN07 1000Mbps
- • 99.9% cron success rate
- • Instant webhook responses
- • Stable AI API connections
- • Zero network-caused failures
Best VPN for 24/7 OpenClaw Automation
VPN07 — The Reliability Standard for AI Automation
Your cron jobs fire at 3 AM. Your webhook handler responds in under 200ms. Your 8 AM morning briefing arrives without fail. That's what VPN07's 10-year track record of network stability delivers — every day, for just $1.5/month.
Related Articles
Never Miss a Cron Job Again — Use VPN07
Your OpenClaw cron jobs and webhooks depend on a stable AI API connection. VPN07's 1000Mbps network across 70+ countries ensures every scheduled task fires on time, every webhook response arrives in under 200ms. 10 years trusted. $1.5/month.