{"id":"a81213fe-ae86-4a34-959c-96ca429e4f3e","shortId":"57Bzka","kind":"skill","title":"openclaw-config","tagline":"Manage OpenClaw bot configuration - channels, agents, security, and autopilot settings","description":"# OpenClaw Operations Runbook\n\nDiagnose and fix real problems. Every command here is tested and works.\n\n---\n\n## Quick Health Check\n\nRun this first when anything seems wrong. Copy-paste the whole block:\n\n```bash\necho \"=== GATEWAY ===\" && \\\nps aux | grep -c \"[o]penclaw\" && \\\necho \"=== CONFIG JSON ===\" && \\\npython3 -m json.tool ~/.openclaw/openclaw.json > /dev/null 2>&1 && echo \"JSON: OK\" || echo \"JSON: BROKEN\" && \\\necho \"=== CHANNELS ===\" && \\\ncat ~/.openclaw/openclaw.json | jq -r '.channels | to_entries[] | \"\\(.key): policy=\\(.value.dmPolicy // \"n/a\") enabled=\\(.value.enabled // \"implicit\")\"' && \\\necho \"=== PLUGINS ===\" && \\\ncat ~/.openclaw/openclaw.json | jq -r '.plugins.entries | to_entries[] | \"\\(.key): \\(.value.enabled)\"' && \\\necho \"=== CREDS ===\" && \\\nls ~/.openclaw/credentials/whatsapp/default/ 2>/dev/null | wc -l | xargs -I{} echo \"WhatsApp keys: {} files\" && \\\nfor d in ~/.openclaw/credentials/telegram/*/; do bot=$(basename \"$d\"); [ -f \"$d/token.txt\" ] && echo \"Telegram $bot: OK\" || echo \"Telegram $bot: MISSING\"; done && \\\n[ -f ~/.openclaw/credentials/bird/cookies.json ] && echo \"Bird cookies: OK\" || echo \"Bird cookies: MISSING\" && \\\necho \"=== CRON ===\" && \\\ncat ~/.openclaw/cron/jobs.json | jq -r '.jobs[] | \"\\(.name): enabled=\\(.enabled) status=\\(.state.lastStatus // \"never\") \\(.state.lastError // \"\")\"' && \\\necho \"=== RECENT ERRORS ===\" && \\\ntail -10 ~/.openclaw/logs/gateway.err.log 2>/dev/null && \\\necho \"=== MEMORY DB ===\" && \\\nsqlite3 ~/.openclaw/memory/main.sqlite \"SELECT COUNT(*) || ' chunks, ' || (SELECT COUNT(*) FROM files) || ' files indexed' FROM chunks;\" 2>/dev/null\n```\n\n---\n\n## File Map\n\n```\n~/.openclaw/\n├── openclaw.json                    # MAIN CONFIG — channels, auth, gateway, plugins, skills\n├── openclaw.json.bak*               # Auto-backups (.bak, .bak.1, .bak.2 ...)\n├── exec-approvals.json              # Exec approval socket config\n│\n├── agents/main/\n│   ├── agent/auth-profiles.json     # Anthropic auth tokens\n│   └── sessions/\n│       ├── sessions.json            # SESSION INDEX — keys are like agent:main:whatsapp:+1234\n│       └── *.jsonl                  # Session transcripts (one JSON per line)\n│\n├── workspace/                       # Agent workspace (git-tracked)\n│   ├── SOUL.md                      # Personality, writing style, tone rules\n│   ├── IDENTITY.md                  # Name, creature type, vibe\n│   ├── USER.md                      # Owner context and preferences\n│   ├── AGENTS.md                    # Session behavior, memory rules, safety\n│   ├── BOOT.md                      # Boot instructions (autopilot notification protocol)\n│   ├── HEARTBEAT.md                 # Periodic task checklist (empty = skip heartbeat)\n│   ├── MEMORY.md                    # Curated long-term memory (main session only)\n│   ├── TOOLS.md                     # Contacts, SSH hosts, device nicknames\n│   ├── memory/                      # Daily logs: YYYY-MM-DD.md, topic-chat.md\n│   └── skills/                      # Workspace-level skills\n│\n├── memory/main.sqlite               # Vector memory DB (Gemini embeddings, FTS5 search)\n│\n├── logs/\n│   ├── gateway.log                  # Runtime: startup, channel init, config reload, shutdown\n│   ├── gateway.err.log              # Errors: connection drops, API failures, timeouts\n│   └── commands.log                 # Command execution log\n│\n├── cron/\n│   ├── jobs.json                    # Job definitions (schedule, payload, delivery target)\n│   └── runs/                        # Per-job run logs: {job-uuid}.jsonl\n│\n├── credentials/\n│   ├── whatsapp/default/            # Baileys session: ~1400 app-state-sync-key-*.json files\n│   ├── telegram/{botname}/token.txt # Bot tokens (one per bot account)\n│   └── bird/cookies.json            # X/Twitter auth cookies\n│\n├── extensions/{name}/               # Custom plugins (TypeScript)\n│   ├── openclaw.plugin.json         # {\"id\", \"channels\", \"configSchema\"}\n│   ├── index.ts                     # Entry point\n│   └── src/                         # channel.ts, actions.ts, runtime.ts, types.ts\n│\n├── identity/                        # device.json, device-auth.json\n├── devices/                         # paired.json, pending.json\n├── media/inbound/                   # Received images, audio files\n├── media/browser/                   # Browser screenshots\n├── browser/openclaw/user-data/      # Chromium profile (~180MB)\n├── tools/signal-cli/                # Signal CLI binary\n├── subagents/runs.json              # Sub-agent execution log\n├── canvas/index.html                # Web canvas UI\n└── telegram/\n    ├── update-offset-coder.json     # {\"lastUpdateId\": N} — Telegram polling cursor\n    └── update-offset-sales.json     # Reset these to 0 to replay missed messages\n```\n\n---\n\n## Troubleshooting: WhatsApp\n\n### \"I sent a message but got no reply\"\n\nThis is the #1 issue. The message arrives but the bot doesn't respond. Check in this order:\n\n```bash\n# 1. Is the bot actually running?\ngrep -i \"whatsapp.*starting\\|whatsapp.*listening\" ~/.openclaw/logs/gateway.log | tail -5\n\n# 2. Check for 408 timeout drops (WhatsApp web disconnects frequently)\ngrep -i \"408\\|499\\|retry\" ~/.openclaw/logs/gateway.err.log | tail -10\n# If you see \"Web connection closed (status 408). Retry 1/12\" — this is normal,\n# it auto-recovers. But if retries reach 12/12, the session dropped completely.\n\n# 3. Check for cross-context messaging blocks\ngrep -i \"cross-context.*denied\" ~/.openclaw/logs/gateway.err.log | tail -10\n# Common: \"Cross-context messaging denied: action=send target provider \"whatsapp\" while bound to \"signal\"\"\n# This means the agent was in a Signal session and tried to reply on WhatsApp.\n# FIX: The message needs to come through in the WhatsApp session context, not Signal.\n\n# 4. Check the session exists for that contact\ncat ~/.openclaw/agents/main/sessions/sessions.json | jq -r 'to_entries[] | select(.key | test(\"whatsapp\")) | \"\\(.key) | \\(.value.origin.label // \"?\")\"'\n\n# 5. Check if the sender is allowed\ncat ~/.openclaw/openclaw.json | jq '.channels.whatsapp | {dmPolicy, allowFrom, selfChatMode, groupPolicy}'\n# If dmPolicy is \"allowlist\" and the sender isn't in allowFrom, message is silently dropped.\n\n# 6. Check if it's a group message (groups are disabled by default)\ncat ~/.openclaw/openclaw.json | jq '.channels.whatsapp.groupPolicy'\n# \"disabled\" means ALL group messages are ignored.\n\n# 7. Check for lane congestion (agent busy with another task)\ngrep \"lane wait exceeded\" ~/.openclaw/logs/gateway.err.log | tail -5\n# If the agent is stuck on a long LLM call, new messages queue up.\n\n# 8. Check for agent run timeout\ngrep \"embedded run timeout\" ~/.openclaw/logs/gateway.err.log | tail -5\n# Hard limit is 600s (10 min). If the agent's response takes longer, it's killed.\n```\n\n### \"WhatsApp fully disconnected\"\n\n```bash\n# Check credential files exist (should be ~1400 files)\nls ~/.openclaw/credentials/whatsapp/default/ | wc -l\n\n# If 0 files: session was never created or got wiped\n# Fix: re-pair with `openclaw configure`\n\n# Check for QR/pairing events\ngrep -i \"pair\\|link\\|qr\\|scan\\|logged out\" ~/.openclaw/logs/gateway.log | tail -10\n\n# Check for Baileys errors\ngrep -i \"baileys\\|DisconnectReason\\|logout\\|stream:error\" ~/.openclaw/logs/gateway.err.log | tail -20\n\n# Nuclear fix: delete credentials and re-pair\n# rm -rf ~/.openclaw/credentials/whatsapp/default/\n# openclaw configure\n```\n\n---\n\n## Troubleshooting: Telegram\n\n### \"Bots have issues / forget things\"\n\nTwo separate problems that look the same:\n\n```bash\n# 1. Check for config validation errors (THE COMMON ONE)\ngrep -i \"telegram.*unrecognized\\|telegram.*invalid\\|telegram.*policy\" ~/.openclaw/logs/gateway.err.log | tail -10\n# Known issue: the keys \"token\" and \"username\" under accounts are not recognized.\n# The correct field is \"botToken\", not \"token\".\n\n# 2. Check the actual config\ncat ~/.openclaw/openclaw.json | jq '.channels.telegram'\n# Verify each bot has \"botToken\" (not \"token\") and \"name\" fields.\n\n# 3. Check polling status — bots die after getUpdates timeout\ngrep -i \"telegram.*exit\\|telegram.*timeout\\|getUpdates\" ~/.openclaw/logs/gateway.err.log | tail -10\n# \"[telegram] [sales] channel exited: Request to 'getUpdates' timed out after 500 seconds\"\n# This means the bot lost connection to Telegram's API and stopped listening.\n# Fix: restart gateway — `openclaw gateway restart`\n\n# 4. Check the polling offset (if bot \"forgets\" or replays old messages)\ncat ~/.openclaw/telegram/update-offset-coder.json\ncat ~/.openclaw/telegram/update-offset-sales.json\n# If lastUpdateId is stuck or 0, the bot will reprocess old messages.\n# To skip to latest: the gateway sets this automatically on restart.\n\n# 5. Check if both bots are starting\ngrep -i \"telegram.*starting\\|telegram.*coder\\|telegram.*sales\" ~/.openclaw/logs/gateway.log | tail -10\n\n# 6. \"Bot forgets\" — this is usually a session issue, not Telegram\n# Each Telegram user gets their own session in sessions.json.\n# Check if the session exists:\ncat ~/.openclaw/agents/main/sessions/sessions.json | jq -r 'to_entries[] | select(.key | test(\"telegram\")) | \"\\(.key) | \\(.value.origin.label // \"?\")\"'\n\n# 7. Check if compaction happened (context window pruned = \"forgot\")\nSESS_ID=\"paste-session-id\"\ngrep '\"compaction\"' ~/.openclaw/agents/main/sessions/$SESS_ID.jsonl | wc -l\n# If compaction count > 0, old messages were pruned from context.\n# The agent's compaction mode is:\ncat ~/.openclaw/openclaw.json | jq '.agents.defaults.compaction'\n```\n\n### Telegram config fix template\n\n```bash\n# Correct Telegram config structure:\ncat ~/.openclaw/openclaw.json | jq '.channels.telegram = {\n  \"enabled\": true,\n  \"accounts\": {\n    \"coder\": {\n      \"name\": \"Bot Display Name\",\n      \"enabled\": true,\n      \"botToken\": \"your-bot-token-here\"\n    },\n    \"sales\": {\n      \"name\": \"Sales Bot Name\",\n      \"enabled\": true,\n      \"botToken\": \"your-bot-token-here\"\n    }\n  },\n  \"dmPolicy\": \"pairing\",\n  \"groupPolicy\": \"disabled\"\n}' > /tmp/oc.json && mv /tmp/oc.json ~/.openclaw/openclaw.json\n```\n\n---\n\n## Troubleshooting: Signal\n\n### \"Signal RPC Failed to send message\"\n\nThis blocks cron jobs and cross-channel notifications.\n\n```bash\n# 1. Check if signal-cli process is alive\nps aux | grep \"[s]ignal-cli\"\n\n# 2. Check the RPC endpoint\ngrep -i \"signal.*starting\\|signal.*8080\\|signal.*rpc\" ~/.openclaw/logs/gateway.log | tail -10\n# Should see: \"[signal] [default] starting provider (http://127.0.0.1:8080)\"\n\n# 3. Check for connection instability\ngrep -i \"HikariPool\\|reconnecting\\|SSE stream error\\|terminated\" ~/.openclaw/logs/gateway.err.log | tail -10\n# \"HikariPool-1 - Thread starvation or clock leap detected\" = signal-cli internal DB issue\n# \"SSE stream error: TypeError: terminated\" = lost connection to signal-cli daemon\n\n# 4. Check for rate limiting\ngrep -i \"signal.*rate\" ~/.openclaw/logs/gateway.err.log | tail -5\n# \"Signal RPC -5: Failed to send message due to rate limiting\"\n\n# 5. Check for wrong target format\ngrep -i \"unknown target\" ~/.openclaw/logs/gateway.err.log | tail -5\n# \"Unknown target \"adi\" for Signal. Hint: <E.164|uuid:ID|...>\"\n# The agent must use phone numbers (+1...) or uuid: format, not names.\n\n# 6. Fix profile name warning spam\ngrep -c \"No profile name set\" ~/.openclaw/logs/gateway.err.log\n# If high count: run signal-cli updateProfile to set a name\n\n# 7. Test signal-cli directly\nACCT=$(cat ~/.openclaw/openclaw.json | jq -r '.channels.signal.account')\necho \"Account: $ACCT\"\n# signal-cli -a $ACCT send -m \"test\" +TARGET_NUMBER\n\n# 8. Check if the signal-cli daemon needs restart\n# The gateway manages signal-cli as a subprocess.\n# Restart the whole gateway: openclaw gateway restart\n```\n\n---\n\n## Troubleshooting: Cron Jobs\n\n```bash\n# 1. Overview of all jobs\ncat ~/.openclaw/cron/jobs.json | jq -r '.jobs[] | \"\\(.enabled | if . then \"ON \" else \"OFF\" end) \\(.state.lastStatus // \"never\" | if . == \"error\" then \"FAIL\" elif . == \"ok\" then \"OK  \" else .  end) \\(.name)\"'\n\n# 2. Failing jobs with error details\ncat ~/.openclaw/cron/jobs.json | jq '.jobs[] | select(.state.lastStatus == \"error\") | {name, error: .state.lastError, lastRun: (.state.lastRunAtMs | . / 1000 | todate), id}'\n\n# 3. Read the actual run log for a failing job\nJOB_ID=\"paste-job-uuid-here\"\ntail -20 ~/.openclaw/cron/runs/$JOB_ID.jsonl | python3 -c \"\nimport sys, json\nfor line in sys.stdin:\n    try:\n        obj = json.loads(line)\n        if obj.get('type') == 'message':\n            role = obj['message']['role']\n            text = ''.join(c.get('text','') for c in obj['message'].get('content',[]) if isinstance(c,dict))\n            if text.strip():\n                print(f'[{role}] {text[:300]}')\n    except: pass\n\"\n\n# 4. Common cron failure causes:\n#    - \"Signal RPC -1\" → Signal daemon down, see Signal section above\n#    - \"gateway timeout after 10000ms\" → gateway was restarting when cron fired\n#    - \"Brave Search 429\" → free tier rate limit hit (2000 req/month)\n#    - \"embedded run timeout\" → job took longer than 600s\n\n# 5. Next scheduled run times\ncat ~/.openclaw/cron/jobs.json | jq -r '.jobs[] | select(.enabled) | \"\\(.name): \\((.state.nextRunAtMs // 0) | . / 1000 | todate)\"'\n\n# 6. Disable a broken job temporarily\ncat ~/.openclaw/cron/jobs.json | jq '(.jobs[] | select(.name == \"JOB_NAME\")).enabled = false' > /tmp/cron.json && mv /tmp/cron.json ~/.openclaw/cron/jobs.json\n```\n\n---\n\n## Troubleshooting: Memory / \"It Forgot\"\n\nThe memory system has 3 layers. When the agent \"forgets,\" one of these broke:\n\n### Layer 1: Context window (within a session)\n\n```bash\n# Check compaction count for a session (compaction = old messages pruned)\ngrep -c '\"compaction\"' ~/.openclaw/agents/main/sessions/SESSION_ID.jsonl\n# 7 compactions = the agent has \"forgotten\" its earliest messages 7 times.\n\n# Check compaction mode\ncat ~/.openclaw/openclaw.json | jq '.agents.defaults.compaction'\n# \"safeguard\" = only compacts when hitting context limit\n```\n\n### Layer 2: Workspace memory files\n\n```bash\n# What daily memory files exist\nls -la ~/.openclaw/workspace/memory/\n\n# What's in MEMORY.md (long-term curated)\ncat ~/.openclaw/workspace/MEMORY.md\n\n# Search memory files for something specific\ngrep -ri \"KEYWORD\" ~/.openclaw/workspace/memory/\n```\n\n### Layer 3: Vector memory database (SQLite + Gemini embeddings)\n\n```bash\n# What files are indexed\nsqlite3 ~/.openclaw/memory/main.sqlite \"SELECT path, size, datetime(mtime/1000, 'unixepoch') as modified FROM files;\"\n\n# How many chunks (text fragments) exist\nsqlite3 ~/.openclaw/memory/main.sqlite \"SELECT COUNT(*) FROM chunks;\"\n\n# Search chunks by text (FTS5 full-text search)\nsqlite3 ~/.openclaw/memory/main.sqlite \"SELECT substr(text, 1, 200) FROM chunks_fts WHERE chunks_fts MATCH 'KEYWORD' LIMIT 5;\"\n\n# Check embedding config\nsqlite3 ~/.openclaw/memory/main.sqlite \"SELECT value FROM meta WHERE key='memory_index_meta_v1';\" | python3 -m json.tool\n\n# Check for Gemini embedding rate limits (breaks indexing)\ngrep -i \"gemini.*batch.*failed\\|RESOURCE_EXHAUSTED\\|429\" ~/.openclaw/logs/gateway.err.log | tail -10\n# \"embeddings: gemini batch failed (2/2); disabling batch\" = indexing degraded\n\n# Rebuild memory index (re-index all workspace files)\n# Delete the DB and restart gateway — it will rebuild:\n# rm ~/.openclaw/memory/main.sqlite && openclaw gateway restart\n```\n\n---\n\n## Searching Sessions\n\n### Find a person's conversations\n\n```bash\n# Search session index by name (case-insensitive)\ncat ~/.openclaw/agents/main/sessions/sessions.json | jq -r 'to_entries[] | select(.value.origin.label // \"\" | test(\"NAME\"; \"i\")) | \"\\(.value.sessionId) | \\(.value.lastChannel) | \\(.value.origin.label)\"'\n```\n\n### Find sessions by channel\n\n```bash\ncat ~/.openclaw/agents/main/sessions/sessions.json | jq -r 'to_entries[] | select(.value.lastChannel == \"whatsapp\") | \"\\(.value.sessionId) | \\(.value.origin.label // .key)\"'\n# Replace \"whatsapp\" with: signal, telegram, or check .key for cron sessions\n```\n\n### Most recent sessions\n\n```bash\ncat ~/.openclaw/agents/main/sessions/sessions.json | jq -r '[to_entries[] | {id: .value.sessionId, updated: .value.updatedAt, label: (.value.origin.label // .key), ch: (.value.lastChannel // \"cron\")}] | sort_by(.updated) | reverse | .[:10][] | \"\\(.updated | . / 1000 | todate) | \\(.ch) | \\(.label)\"'\n```\n\n### Search message content across all sessions\n\n```bash\n# Quick: find which session files contain a keyword\ngrep -l \"KEYWORD\" ~/.openclaw/agents/main/sessions/*.jsonl\n\n# Detailed: show matching messages with timestamps\ngrep \"KEYWORD\" ~/.openclaw/agents/main/sessions/*.jsonl | python3 -c \"\nimport sys, json\nfor line in sys.stdin:\n    path, data = line.split(':', 1)\n    try:\n        obj = json.loads(data)\n        if obj.get('type') == 'message':\n            role = obj['message']['role']\n            text = ''.join(c.get('text','') for c in obj['message'].get('content',[]) if isinstance(c,dict))\n            if text.strip():\n                sid = path.split('/')[-1].replace('.jsonl','')[:8]\n                ts = obj.get('timestamp','')[:19]\n                print(f'{ts} [{sid}] [{role}] {text[:200]}')\n    except: pass\n\" | head -30\n```\n\n### Read a specific session transcript\n\n```bash\n# Last 30 messages from a session\ntail -50 ~/.openclaw/agents/main/sessions/SESSION_ID.jsonl | python3 -c \"\nimport sys, json\nfor line in sys.stdin:\n    try:\n        obj = json.loads(line)\n        if obj.get('type') == 'message':\n            role = obj['message']['role']\n            text = ''.join(c.get('text','') for c in obj['message'].get('content',[]) if isinstance(c,dict))\n            if text.strip() and role != 'toolResult':\n                print(f'[{role}] {text[:300]}')\n                print()\n    except: pass\n\"\n```\n\n---\n\n## Config Editing\n\n### Safe edit pattern\n\nAlways: backup, edit with jq, restart.\n\n```bash\ncp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak.manual\njq 'YOUR_EDIT_HERE' ~/.openclaw/openclaw.json > /tmp/oc.json && mv /tmp/oc.json ~/.openclaw/openclaw.json\nopenclaw gateway restart\n```\n\n### Common edits\n\n```bash\n# Switch WhatsApp to allowlist\njq '.channels.whatsapp.dmPolicy = \"allowlist\" | .channels.whatsapp.allowFrom = [\"+1XXXXXXXXXX\"]' ~/.openclaw/openclaw.json > /tmp/oc.json && mv /tmp/oc.json ~/.openclaw/openclaw.json\n\n# Enable WhatsApp autopilot (bot responds as you to everyone)\njq '.channels.whatsapp += {dmPolicy: \"open\", selfChatMode: false, allowFrom: [\"*\"]}' ~/.openclaw/openclaw.json > /tmp/oc.json && mv /tmp/oc.json ~/.openclaw/openclaw.json\n\n# Add number to Signal allowlist\njq '.channels.signal.allowFrom += [\"+1XXXXXXXXXX\"]' ~/.openclaw/openclaw.json > /tmp/oc.json && mv /tmp/oc.json ~/.openclaw/openclaw.json\n\n# Change model\njq '.agents.defaults.models = {\"anthropic/claude-sonnet-4\": {\"alias\": \"sonnet\"}}' ~/.openclaw/openclaw.json > /tmp/oc.json && mv /tmp/oc.json ~/.openclaw/openclaw.json\n\n# Set concurrency\njq '.agents.defaults.maxConcurrent = 10 | .agents.defaults.subagents.maxConcurrent = 10' ~/.openclaw/openclaw.json > /tmp/oc.json && mv /tmp/oc.json ~/.openclaw/openclaw.json\n\n# Disable a plugin\njq '.plugins.entries.imessage.enabled = false' ~/.openclaw/openclaw.json > /tmp/oc.json && mv /tmp/oc.json ~/.openclaw/openclaw.json\n```\n\n### Restore from backup\n\n```bash\n# Latest backup\ncp ~/.openclaw/openclaw.json.bak ~/.openclaw/openclaw.json\n\n# List all backups by date\nls -lt ~/.openclaw/openclaw.json.bak*\n\n# Validate JSON before restart\npython3 -m json.tool ~/.openclaw/openclaw.json > /dev/null && echo \"OK\" || echo \"BROKEN\"\n\n# Nuclear reset\nopenclaw configure\n```\n\n---\n\n## Channel Security Modes\n\n| Mode | Behavior | Risk |\n|---|---|---|\n| `open` + `allowFrom: [\"*\"]` | Anyone can message, bot responds to all | HIGH — burns API credits, bot speaks as you |\n| `allowlist` + `allowFrom: [\"+1...\"]` | Only listed numbers get through | LOW — explicit control |\n| `pairing` | Unknown senders get a code, you approve | LOW — approval gate |\n| `disabled` | Channel completely off | NONE |\n\n### Check current security posture\n\n```bash\ncat ~/.openclaw/openclaw.json | jq '{\n  whatsapp: {policy: .channels.whatsapp.dmPolicy, from: .channels.whatsapp.allowFrom, groups: .channels.whatsapp.groupPolicy, selfChat: .channels.whatsapp.selfChatMode},\n  signal: {policy: .channels.signal.dmPolicy, from: .channels.signal.allowFrom, groups: .channels.signal.groupPolicy},\n  telegram: {policy: .channels.telegram.dmPolicy, groups: .channels.telegram.groupPolicy, bots: [.channels.telegram.accounts | to_entries[] | \"\\(.key)=\\(.value.enabled)\"]},\n  imessage: {enabled: .channels.imessage.enabled, policy: .channels.imessage.dmPolicy}\n}'\n```\n\n---\n\n## Workspace Files\n\n| File | What | When to edit |\n|---|---|---|\n| `SOUL.md` | Personality: tone, style (\"no em dashes, lowercase casual\") | To change how the bot talks |\n| `IDENTITY.md` | Name (Jarvis), creature type, emoji | To rebrand |\n| `USER.md` | Owner info, preferences | When user context changes |\n| `AGENTS.md` | Operating rules: memory protocol, safety, group chat behavior, heartbeat instructions | To change bot behavior |\n| `BOOT.md` | Startup instructions (autopilot notification protocol: WA → Signal) | To change what happens on boot |\n| `HEARTBEAT.md` | Periodic checklist (empty = no heartbeat API calls) | To add/remove periodic tasks |\n| `MEMORY.md` | Curated long-term memory (loaded only in main/direct sessions) | Bot manages this itself |\n| `TOOLS.md` | Contacts, SSH hosts, device nicknames | To add local tool notes |\n| `memory/*.md` | Daily raw logs, topic-specific chat logs | Bot writes automatically |\n\n---\n\n## Session JSONL Format\n\nEach `.jsonl` file has one JSON object per line. Types:\n\n| type | What |\n|---|---|\n| `session` | Session header: id, timestamp, cwd |\n| `message` | Conversation turn: role (user/assistant/toolResult), content, model, usage |\n| `custom` | Metadata: `model-snapshot`, `openclaw.cache-ttl` |\n| `compaction` | Context window was pruned (old messages dropped) |\n| `model_change` | Model was switched mid-session |\n| `thinking_level_change` | Thinking level adjusted |\n\nSession index (`sessions.json`) keys:\n- Pattern: `agent:main:{channel}:{contact}` or `agent:main:cron:{job-uuid}`\n- Fields: `sessionId` (UUID = filename), `lastChannel`, `origin.label` (human name), `origin.from` (canonical address), `updatedAt` (epoch ms), `chatType` (direct/group)\n\n---\n\n## Gateway Startup Sequence\n\nNormal startup takes ~3 seconds:\n```\n[heartbeat] started\n[gateway] listening on ws://127.0.0.1:18789\n[browser/service] Browser control service ready\n[hooks] loaded 3 internal hook handlers (boot-md, command-logger, session-memory)\n[whatsapp] [default] starting provider\n[signal] [default] starting provider (http://127.0.0.1:8080)\n[telegram] [coder] starting provider\n[telegram] [sales] starting provider\n[whatsapp] Listening for personal WhatsApp inbound messages.\n[signal] signal-cli: Started HTTP server on /127.0.0.1:8080\n```\n\nIf any line is missing, that component failed to start. Check `gateway.err.log`.\n\n---\n\n## Known Error Patterns\n\n| Error | Meaning | Fix |\n|---|---|---|\n| `Web connection closed (status 408)` | WhatsApp web timeout, auto-retries up to 12x | Usually self-heals. If reaches 12/12, restart gateway |\n| `Signal RPC -1: Failed to send message` | signal-cli daemon lost connection | Restart gateway |\n| `Signal RPC -5: Failed to send message due to rate limiting` | Signal rate limit | Wait and retry, reduce message frequency |\n| `No profile name set` (signal-cli WARN) | Floods logs, harmless | `signal-cli -a +ACCOUNT updateProfile --given-name \"Name\"` |\n| `Cross-context messaging denied` | Agent tried to send across channels | Not a bug — security guardrail. Message must originate from correct channel session |\n| `getUpdates timed out after 500 seconds` | Telegram bot lost polling connection | Restart gateway |\n| `Unrecognized keys: \"token\", \"username\"` | Wrong config keys for Telegram bots | Use `botToken` not `token` in openclaw.json |\n| `RESOURCE_EXHAUSTED` (Gemini 429) | Embedding rate limit | Reduce workspace file churn, or upgrade Gemini quota |\n| `lane wait exceeded` | Agent blocked on long LLM call | Wait, or restart if stuck > 2 min |\n| `embedded run timeout: timeoutMs=600000` | Agent response exceeded 10 min | Break task into smaller pieces |\n| `gateway timeout after 10000ms` | Gateway unreachable during restart window | Cron fired while gateway was down — transient |\n\n---\n\n## Extending OpenClaw\n\nOpenClaw has 4 extension layers. Each solves a different problem:\n\n| Layer | What | Where | How to add |\n|---|---|---|---|\n| **Skills** | Knowledge + workflows the agent loads on demand | `/opt/homebrew/lib/node_modules/openclaw/skills/` or `~/.openclaw/workspace/skills/` | `clawdhub install <slug>` or `npx add-skill <repo>` |\n| **Extensions** | Custom channel plugins (TypeScript) | `~/.openclaw/extensions/{name}/` | Create `openclaw.plugin.json` + TypeScript source |\n| **Channels** | Messaging platforms (built-in) | `openclaw.json → channels.*` + `plugins.entries.*` | Configure in openclaw.json, add credentials |\n| **Cron jobs** | Scheduled autonomous tasks | `~/.openclaw/cron/jobs.json` | Agent creates them via tool, or edit jobs.json directly |\n\n### Skills: ClawdHub Ecosystem\n\nSkills are the primary way to extend what the agent knows and can do. They're markdown files with optional scripts/assets that get loaded into context when relevant.\n\n```bash\n# Search for skills (vector search across the registry)\nclawdhub search \"postgres optimization\"\nclawdhub search \"image generation\"\n\n# Browse latest skills\nclawdhub explore\n\n# Install a skill\nclawdhub install supabase-postgres-best-practices\nclawdhub install nano-banana-pro\n\n# Install a specific version\nclawdhub install my-skill --version 1.2.3\n\n# List what's installed\nclawdhub list\n\n# Update all installed skills\nclawdhub update --all\n\n# Update a specific skill\nclawdhub update my-skill\nclawdhub update my-skill --force  # overwrite local changes\n```\n\n**Currently installed skills (bundled with OpenClaw):**\n\n| Category | Skills |\n|---|---|\n| **Messaging** | discord, slack, imsg, wacli, voice-call |\n| **Social/Web** | bird (X/Twitter), blogwatcher, github, trello, notion |\n| **Google** | gog, google-workspace-mcp, goplaces, local-places |\n| **Media** | nano-banana-pro (Gemini image gen), openai-image-gen, video-frames, gifgrep, pixelation, sag (TTS), openai-whisper, sherpa-onnx-tts, songsee, camsnap |\n| **Coding agents** | coding-agent (Codex/Claude Code/Pi), ccbg (background runner), tmux |\n| **Productivity** | apple-notes, apple-reminders, bear-notes, things-mac, obsidian, himalaya (email) |\n| **Smart home** | openhue (Philips Hue), eightctl (Eight Sleep), sonoscli, blucli (BluOS) |\n| **Dev tools** | github, worktree, starter, desktop, supabase-postgres-best-practices, superdesign |\n| **Content** | remotion-best-practices, remotion-fastest-tech-stack, humanizer, summarize, market, buildinpublic |\n| **Meta** | skill-creator, clawdhub, find-skills, add-skill, model-usage, session-logs, recentplans, canvas |\n\n### Creating Your Own Skill\n\nA skill is just a folder with a `SKILL.md`:\n\n```\nmy-skill/\n├── SKILL.md              # Required: YAML frontmatter + markdown instructions\n├── scripts/              # Optional: executable scripts\n├── references/           # Optional: docs loaded on demand\n└── assets/               # Optional: templates, images\n```\n\n**SKILL.md format:**\n```markdown\n---\nname: my-skill\ndescription: What this does and WHEN to trigger it. The description is the primary\n  trigger — the agent reads this to decide whether to load the full skill.\n---\n\n# My Skill\n\nInstructions go here. Only loaded AFTER the skill triggers.\nKeep under 500 lines. Split large content into references/ files.\n```\n\n**Key principle: the context window is a shared resource.** Only include what the agent doesn't already know. Prefer concise examples over verbose explanations.\n\n```bash\n# Publish to ClawdHub\nclawdhub login\nclawdhub publish ./my-skill --slug my-skill --name \"My Skill\" --version 1.0.0\n\n# Or publish to GitHub for npx add-skill\n# (see add-skill skill for details)\n```\n\n### Multi-Agent Orchestration\n\nOpenClaw can spawn other AI agents (Codex, Claude Code, Pi) as background workers. This is how you run parallel coding tasks, reviews, or any work that benefits from multiple agents.\n\n**The pattern:** `bash pty:true background:true workdir:/path command:\"agent 'task'\"`\n\n```bash\n# Spawn Codex to build something (background, auto-approve)\nbash pty:true workdir:~/project background:true command:\"codex exec --full-auto 'Build a REST API for todos'\"\n# Returns sessionId for tracking\n\n# Spawn Claude Code on a different task\nbash pty:true workdir:~/other-project background:true command:\"claude 'Refactor the auth module'\"\n\n# Monitor all running agents\nprocess action:list\n\n# Check output of a specific agent\nprocess action:log sessionId:XXX\n\n# Send input if agent asks a question\nprocess action:submit sessionId:XXX data:\"yes\"\n\n# Kill a stuck agent\nprocess action:kill sessionId:XXX\n```\n\n**Parallel PR reviews:**\n```bash\n# Fetch all PR refs\ngit fetch origin '+refs/pull/*/head:refs/remotes/origin/pr/*'\n\n# Launch one agent per PR\nbash pty:true workdir:~/project background:true command:\"codex exec 'Review PR #86. git diff origin/main...origin/pr/86'\"\nbash pty:true workdir:~/project background:true command:\"codex exec 'Review PR #87. git diff origin/main...origin/pr/87'\"\n```\n\n**Parallel issue fixing with git worktrees:**\n```bash\ngit worktree add -b fix/issue-78 /tmp/issue-78 main\ngit worktree add -b fix/issue-99 /tmp/issue-99 main\n\nbash pty:true workdir:/tmp/issue-78 background:true command:\"codex --yolo 'Fix issue #78: description. Commit and push.'\"\nbash pty:true workdir:/tmp/issue-99 background:true command:\"codex --yolo 'Fix issue #99: description. Commit and push.'\"\n```\n\n**Auto-notify when agent finishes:**\n```bash\nbash pty:true workdir:~/project background:true command:\"codex --yolo exec 'Your task.\n\nWhen completely finished, run: openclaw gateway wake --text \\\"Done: summary\\\" --mode now'\"\n```\n\n### Adding a New Channel\n\nChannels are messaging platforms the agent can communicate through. Built-in: WhatsApp, Signal, Telegram, iMessage, Discord, Slack.\n\n**Enable a built-in channel:**\n```bash\n# 1. Enable the plugin\njq '.plugins.entries.discord.enabled = true' ~/.openclaw/openclaw.json > /tmp/oc.json && mv /tmp/oc.json ~/.openclaw/openclaw.json\n\n# 2. Add channel config\njq '.channels.discord = {enabled: true, dmPolicy: \"pairing\", groupPolicy: \"disabled\"}' ~/.openclaw/openclaw.json > /tmp/oc.json && mv /tmp/oc.json ~/.openclaw/openclaw.json\n\n# 3. Add credentials (channel-specific)\n# 4. Restart gateway\nopenclaw gateway restart\n```\n\n**Build a custom channel extension:**\n\n```\n~/.openclaw/extensions/{name}/\n├── openclaw.plugin.json    # {\"id\": \"name\", \"channels\": [\"name\"], \"configSchema\": {...}}\n├── package.json            # Standard npm package\n├── index.ts                # Entry point\n└── src/\n    ├── channel.ts          # Inbound message handling + outbound send\n    ├── actions.ts          # Tool actions the agent can invoke\n    ├── runtime.ts          # Lifecycle: start, stop, health check\n    ├── config-schema.ts    # JSON schema for plugin config\n    └── types.ts            # TypeScript types\n```\n\n```bash\n# List installed extensions\nls ~/.openclaw/extensions/\n\n# View extension manifests\ncat ~/.openclaw/extensions/*/openclaw.plugin.json | jq .\n\n# Check extension source files\nfind ~/.openclaw/extensions/ -name \"*.ts\" -not -path \"*/node_modules/*\"\n```\n\n### Cross-Channel Communication\n\nThe agent can receive on one channel and send on another, but there are guardrails:\n\n```bash\n# Check cross-context settings\ncat ~/.openclaw/openclaw.json | jq '.tools.message.crossContext'\n# allowAcrossProviders: true = agent CAN send across channels\n# marker.enabled: false = no \"[via Signal]\" prefix on cross-channel messages\n\n# If you see \"Cross-context messaging denied\" errors:\n# The agent tried to send from a session bound to channel A to channel B.\n# This is a security feature. To allow it:\njq '.tools.message.crossContext.allowAcrossProviders = true' ~/.openclaw/openclaw.json > /tmp/oc.json && mv /tmp/oc.json ~/.openclaw/openclaw.json\n```\n\n**BOOT.md notification protocol** (already configured):\nThe agent receives WhatsApp messages, responds on WhatsApp, then sends a notification summary to Signal. This is the primary cross-channel pattern — autopilot on one channel, control center on another.\n\n### Canvas: Web UI for Connected Devices\n\nPush HTML/games/dashboards to connected Mac/iOS/Android nodes:\n\n```bash\n# Check canvas config\ncat ~/.openclaw/openclaw.json | jq '.canvasHost // \"not configured\"'\n\n# List connected nodes\nopenclaw nodes list\n\n# Present HTML content on a node\n# canvas action:present node:<node-id> target:http://localhost:18793/__moltbot__/canvas/my-page.html\n\n# Canvas files live in:\nls ~/.openclaw/canvas/\n```\n\n### Voice Calls\n\nInitiate phone calls via Twilio/Telnyx/Plivo:\n\n```bash\n# Check if voice-call plugin is enabled\ncat ~/.openclaw/openclaw.json | jq '.plugins.entries[\"voice-call\"] // \"not configured\"'\n\n# CLI usage\nopenclaw voicecall call --to \"+15555550123\" --message \"Hello\"\nopenclaw voicecall status --call-id <id>\n```\n\n### Cron: Scheduled Autonomous Tasks\n\n```bash\n# View all jobs\ncat ~/.openclaw/cron/jobs.json | jq '.jobs[] | {name, enabled, schedule: .schedule, channel: .payload.channel, to: .payload.to}'\n\n# Job schedule types:\n# \"kind\": \"at\", \"atMs\": <epoch>          — one-shot at specific time\n# \"kind\": \"every\", \"everyMs\": <ms>       — recurring interval\n\n# Job delivery targets:\n# channel + to fields determine where results go (signal, whatsapp, telegram)\n# sessionTarget: \"isolated\" = fresh context each run (no memory of previous runs)\n\n# To add a job, the agent creates it via tool, or edit jobs.json:\n# See existing jobs as templates in ~/.openclaw/cron/jobs.json\n```\n\n---\n\n## License\n\nMIT","tags":["openclaw","config","ara","adisinghstudent","agent-skills","ai-agents","skills-sh"],"capabilities":["skill","source-adisinghstudent","skill-openclaw-config","topic-agent-skills","topic-ai-agents","topic-openclaw","topic-skills-sh"],"categories":["ara.so"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/adisinghstudent/ara.so/openclaw-config","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add adisinghstudent/ara.so","source_repo":"https://github.com/adisinghstudent/ara.so","install_from":"skills.sh"}},"qualityScore":"0.455","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 10 github stars · SKILL.md body (33,729 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T07:03:25.651Z","embedding":null,"createdAt":"2026-04-23T13:04:09.243Z","updatedAt":"2026-04-24T07:03:25.651Z","lastSeenAt":"2026-04-24T07:03:25.651Z","tsv":"'+1':1245,2042,2077,2178 '+1234':218 '+15555550123':3836 '-1':1169,1455,1921,2564 '-10':158,489,532,758,820,877,965,1143,1167,1726 '-20':772,1400 '-30':1939 '-5':471,667,694,1205,1208,1229,2579 '-50':1953 '/.openclaw':182 '/.openclaw/agents/main/sessions':1020,1865,1875 '/.openclaw/agents/main/sessions/session_id.jsonl':1567,1954 '/.openclaw/agents/main/sessions/sessions.json':586,992,1776,1795,1822 '/.openclaw/canvas':3804 '/.openclaw/credentials/bird/cookies.json':131 '/.openclaw/credentials/telegram':114 '/.openclaw/credentials/whatsapp/default':100,724,783 '/.openclaw/cron/jobs.json':143,1337,1368,1497,1515,1527,2798,3854,3925 '/.openclaw/cron/runs':1401 '/.openclaw/extensions':2773,3567,3616,3621,3629 '/.openclaw/logs/gateway.err.log':159,487,530,665,692,770,818,875,1165,1203,1227,1263,1724 '/.openclaw/logs/gateway.log':469,756,963,1141 '/.openclaw/memory/main.sqlite':166,1641,1659,1674,1694,1755 '/.openclaw/openclaw.json':60,73,89,605,641,846,1041,1054,1093,1284,1583,2017,2023,2027,2044,2048,2065,2069,2079,2083,2091,2095,2103,2107,2114,2118,2127,2143,2209,3528,3532,3545,3549,3661,3717,3721,3775,3822 '/.openclaw/openclaw.json.bak':2126,2135 '/.openclaw/openclaw.json.bak.manual':2018 '/.openclaw/telegram/update-offset-coder.json':922 '/.openclaw/telegram/update-offset-sales.json':924 '/.openclaw/workspace/memory':1606,1626 '/.openclaw/workspace/memory.md':1616 '/.openclaw/workspace/skills':2760 '/127.0.0.1':2519 '/dev/null':61,102,161,179,2144 '/head':3364 '/my-skill':3186 '/node_modules':3634 '/openclaw.plugin.json':3622 '/opt/homebrew/lib/node_modules/openclaw/skills':2758 '/other-project':3302 '/path':3254 '/project':3272,3375,3392,3471 '/tmp/cron.json':1524,1526 '/tmp/issue-78':3417,3430 '/tmp/issue-99':3424,3447 '/tmp/oc.json':1090,1092,2024,2026,2045,2047,2066,2068,2080,2082,2092,2094,2104,2106,2115,2117,3529,3531,3546,3548,3718,3720 '/token.txt':352 '0':423,728,930,1027,1505 '1':63,441,457,801,1112,1331,1547,1678,1889,3521 '1.0.0':3195 '1.2.3':2887 '1/12':499 '10':699,1841,2100,2102,2709 '1000':1379,1506,1843 '10000ms':1466,2719 '12/12':511,2559 '127.0.0.1':1150,2464,2494 '12x':2552 '1400':342,721 '180mb':397 '18789':2465 '18793/__moltbot__/canvas/my-page.html':3798 '19':1928 '2':62,101,160,178,472,840,1128,1361,1594,2699,3533 '2/2':1731 '200':1679,1935 '2000':1481 '3':516,859,1152,1382,1536,1628,2457,2473,3550 '30':1947 '300':1445,2000 '4':577,909,1194,1448,2736,3556 '408':475,484,497,2543 '429':1475,1723,2673 '499':485 '5':597,948,1217,1491,1689 '500':888,2645,3146 '6':627,966,1251,1508 '600000':2705 '600s':698,1490 '7':651,1003,1276,1568,1577 '78':3438 '8':682,1301,1924 '8080':1138,1151,2495,2520 '86':3383 '87':3400 '99':3455 'account':358,829,1059,1289,2612 'acct':1282,1290,1295 'across':1850,2627,2845,3669 'action':539,3316,3325,3337,3348,3591,3793 'actions.ts':377,3589 'actual':461,843,1385 'ad':3492 'add':2070,2344,2749,2766,2791,3053,3203,3207,3414,3421,3534,3551,3907 'add-skil':2765,3052,3202,3206 'add/remove':2319 'address':2445 'adi':1232 'adjust':2418 'agent':9,215,227,405,551,656,670,685,703,1035,1240,1540,1571,2424,2429,2623,2688,2706,2754,2799,2820,2981,2984,3122,3167,3214,3221,3245,3256,3314,3323,3332,3346,3368,3464,3501,3593,3640,3666,3692,3728,3911 'agent/auth-profiles.json':204 'agents.defaults.compaction':1043,1585 'agents.defaults.maxconcurrent':2099 'agents.defaults.models':2087 'agents.defaults.subagents.maxconcurrent':2101 'agents.md':248,2281 'agents/main':203 'ai':3220 'alia':2089 'aliv':1120 'allow':603,3712 'allowacrossprovid':3664 'allowfrom':609,622,2064,2160,2177 'allowlist':615,2037,2040,2074,2176 'alreadi':3170,3725 'alway':2009 'anoth':659,3649,3757 'anthrop':205 'anthropic/claude-sonnet-4':2088 'anyon':2161 'anyth':36 'api':313,899,2170,2316,3284 'app':344 'app-state-sync-key':343 'appl':2993,2996 'apple-not':2992 'apple-remind':2995 'approv':200,2194,2196,3267 'arriv':445 'ask':3333 'asset':3095 'atm':3870 'audio':389 'auth':187,206,361,3309 'auto':193,505,2548,3266,3280,3461 'auto-approv':3265 'auto-backup':192 'auto-notifi':3460 'auto-recov':504 'auto-retri':2547 'automat':945,2360 'autonom':2796,3847 'autopilot':12,257,2051,2299,3750 'aux':49,1122 'b':3415,3422,3705 'background':2988,3227,3251,3264,3273,3303,3376,3393,3431,3448,3472 'backup':194,2010,2121,2124,2130 'bailey':340,761,765 'bak':195 'bak.1':196 'bak.2':197 'banana':2875,2955 'basenam':117 'bash':45,456,714,800,1048,1111,1330,1553,1598,1635,1766,1793,1820,1853,1945,2015,2033,2122,2207,2839,3178,3248,3258,3268,3298,3355,3371,3388,3411,3426,3443,3466,3467,3520,3611,3654,3770,3812,3849 'batch':1719,1729,1733 'bear':2999 'bear-not':2998 'behavior':250,2157,2289,2295 'benefit':3242 'best':2869,3027,3033 'binari':401 'bird':133,137,2936 'bird/cookies.json':359 'block':44,523,1103,2689 'blogwatch':2938 'bluc':3016 'bluo':3017 'boot':255,2309,2478 'boot-md':2477 'boot.md':254,2296,3722 'bot':6,116,123,127,353,357,448,460,788,851,863,893,915,932,952,967,1062,1070,1076,1083,2052,2164,2172,2232,2263,2294,2333,2358,2648,2663 'botnam':351 'bottoken':837,853,1067,1080,2665 'bound':545,3699 'brave':1473 'break':1714,2711 'broke':1545 'broken':69,1511,2148 'brows':2856 'browser':392,2467 'browser/openclaw/user-data':394 'browser/service':2466 'bug':2631 'build':3262,3281,3562 'buildinpubl':3043 'built':2783,3506,3517 'built-in':2782,3505,3516 'bundl':2922 'burn':2169 'busi':657 'c':51,1258,1404,1429,1437,1565,1878,1907,1915,1956,1981,1989 'c.get':1426,1904,1978 'call':677,2317,2693,2934,3806,3809,3817,3827,3834,3843 'call-id':3842 'camsnap':2979 'canon':2444 'canva':410,3062,3758,3772,3792,3799 'canvas/index.html':408 'canvashost':3777 'case':1773 'case-insensit':1772 'casual':2258 'cat':72,88,142,585,604,640,845,921,923,991,1040,1053,1283,1336,1367,1496,1514,1582,1615,1775,1794,1821,2208,3620,3660,3774,3821,3853 'categori':2925 'caus':1452 'ccbg':2987 'center':3755 'ch':1834,1845 'chang':2084,2260,2280,2293,2305,2406,2415,2918 'channel':8,71,76,186,304,370,880,1109,1792,2153,2199,2426,2628,2639,2770,2779,2786,3495,3496,3519,3535,3554,3565,3572,3637,3645,3670,3680,3701,3704,3748,3753,3861,3885 'channel-specif':3553 'channel.ts':376,3583 'channels.discord':3538 'channels.imessage.dmpolicy':2242 'channels.imessage.enabled':2240 'channels.signal.account':1287 'channels.signal.allowfrom':2076,2224 'channels.signal.dmpolicy':2222 'channels.signal.grouppolicy':2226 'channels.telegram':848,1056 'channels.telegram.accounts':2233 'channels.telegram.dmpolicy':2229 'channels.telegram.grouppolicy':2231 'channels.whatsapp':607,2059 'channels.whatsapp.allowfrom':2041,2215 'channels.whatsapp.dmpolicy':2039,2213 'channels.whatsapp.grouppolicy':643,2217 'channels.whatsapp.selfchatmode':2219 'chat':2288,2356 'chattyp':2449 'check':31,452,473,517,578,598,628,652,683,715,744,759,802,841,860,910,949,986,1004,1113,1129,1153,1195,1218,1302,1554,1579,1690,1708,1812,2203,2531,3318,3601,3624,3655,3771,3813 'checklist':263,2312 'chromium':395 'chunk':169,177,1654,1663,1665,1681,1684 'churn':2680 'claud':3223,3292,3306 'clawdhub':2761,2809,2848,2852,2859,2864,2871,2881,2892,2898,2905,2910,3048,3181,3182,3184 'cli':400,1117,1127,1178,1192,1270,1280,1293,1307,1316,2514,2571,2603,2610,3830 'clock':1173 'close':495,2541 'code':2192,2980,2983,3224,3235,3293 'code/pi':2986 'coder':960,1060,2497 'codex':3222,3260,3276,3379,3396,3434,3451,3475 'codex/claude':2985 'coding-ag':2982 'come':568 'command':23,317,2481,3255,3275,3305,3378,3395,3433,3450,3474 'command-logg':2480 'commands.log':316 'commit':3440,3457 'common':533,808,1449,2031 'communic':3503,3638 'compact':1006,1019,1025,1037,1555,1560,1566,1569,1580,1588,2397 'complet':515,2200,3481 'compon':2527 'concis':3173 'concurr':2097 'config':3,55,185,202,306,804,844,1045,1051,1692,2004,2659,3536,3607,3773 'config-schema.ts':3602 'configschema':371,3574 'configur':7,743,785,2152,2788,3726,3779,3829 'congest':655 'connect':311,494,895,1155,1188,2540,2574,2651,3762,3767,3781 'contact':277,584,2338,2427 'contain':1859 'content':1434,1849,1912,1986,2387,3030,3150,3788 'context':245,521,528,536,574,1008,1033,1548,1591,2279,2398,2620,2836,3157,3658,3687,3898 'control':2186,2468,3754 'convers':1765,2383 'cooki':134,138,362 'copi':40 'copy-past':39 'correct':834,1049,2638 'count':168,171,1026,1266,1556,1661 'cp':2016,2125 'creat':733,2775,2800,3063,3912 'creator':3047 'creatur':240,2268 'cred':98 'credenti':338,716,776,2792,3552 'credit':2171 'cron':141,320,1104,1328,1450,1471,1815,1836,2431,2725,2793,3845 'cross':520,527,535,1108,2619,3636,3657,3679,3686,3747 'cross-channel':1107,3635,3678,3746 'cross-context':519,526,534,2618,3656,3685 'curat':268,1614,2323 'current':2204,2919 'cursor':418 'custom':365,2390,2769,3564 'cwd':2381 'd':112,118 'd/token.txt':120 'daemon':1193,1308,1457,2572 'daili':283,1600,2350 'dash':2256 'data':1887,1893,3341 'databas':1631 'date':2132 'datetim':1645 'db':164,295,1180,1747 'decid':3126 'default':639,1147,2487,2491 'definit':323 'degrad':1735 'delet':775,1745 'deliveri':326,3883 'demand':2757,3094 'deni':529,538,2622,3689 'descript':3106,3116,3439,3456 'desktop':3023 'detail':1366,1867,3211 'detect':1175 'determin':3888 'dev':3018 'devic':280,383,2341,3763 'device-auth.json':382 'device.json':381 'diagnos':17 'dict':1438,1916,1990 'die':864 'diff':3385,3402 'differ':2742,3296 'direct':1281,2807 'direct/group':2450 'disabl':637,644,1089,1509,1732,2108,2198,3544 'disconnect':480,713 'disconnectreason':766 'discord':2928,3512 'display':1063 'dmpolici':608,613,1086,2060,3541 'doc':3091 'doesn':449,3168 'done':129,3488 'drop':312,477,514,626,2404 'due':1213,2584 'e.164':1236 'earliest':1575 'echo':46,54,64,67,70,86,97,107,121,125,132,136,140,154,162,1288,2145,2147 'ecosystem':2810 'edit':2005,2007,2011,2021,2032,2249,2805,3917 'eight':3013 'eightctl':3012 'elif':1354 'els':1345,1358 'em':2255 'email':3006 'embed':297,689,1483,1634,1691,1711,1727,2674,2701 'emoji':2270 'empti':264,2313 'enabl':83,148,149,1057,1065,1078,1341,1502,1522,2049,2239,3514,3522,3539,3820,3858 'end':1347,1359 'endpoint':1132 'entri':78,94,373,590,996,1780,1799,1826,2235,3580 'epoch':2447 'error':156,310,762,769,806,1163,1184,1351,1365,1373,1375,2534,2536,3690 'event':747 'everi':22,3878 'everym':3879 'everyon':2057 'exampl':3174 'exceed':664,2687,2708 'except':1446,1936,2002 'exec':199,3277,3380,3397,3477 'exec-approvals.json':198 'execut':318,406,3087 'exhaust':1722,2671 'exist':581,718,990,1603,1657,3920 'exit':871,881 'explan':3177 'explicit':2185 'explor':2860 'extend':2732,2817 'extens':363,2737,2768,3566,3614,3618,3625 'f':119,130,1442,1930,1997 'fail':1098,1209,1353,1362,1390,1720,1730,2528,2565,2580 'failur':314,1451 'fals':1523,2063,2113,3672 'fastest':3037 'featur':3710 'fetch':3356,3361 'field':835,858,2435,3887 'file':110,173,174,180,349,390,717,722,729,1597,1602,1619,1637,1651,1744,1858,2244,2245,2366,2679,2828,3153,3627,3800 'filenam':2438 'find':1761,1789,1855,3050,3628 'find-skil':3049 'finish':3465,3482 'fire':1472,2726 'first':34 'fix':19,563,737,774,903,1046,1252,2538,3407,3436,3453 'fix/issue-78':3416 'fix/issue-99':3423 'flood':2605 'folder':3072 'forc':2915 'forget':791,916,968,1541 'forgot':1011,1531 'forgotten':1573 'format':1222,1248,2363,3100 'fragment':1656 'frame':2966 'free':1476 'frequenc':2596 'frequent':481 'fresh':3897 'frontmatt':3082 'fts':1682,1685 'fts5':298,1668 'full':1670,3131,3279 'full-auto':3278 'full-text':1669 'fulli':712 'gate':2197 'gateway':47,188,905,907,942,1312,1323,1325,1463,1467,1750,1757,2029,2451,2461,2561,2576,2653,2716,2720,2728,3485,3558,3560 'gateway.err.log':309,2532 'gateway.log':301 'gemini':296,1633,1710,1718,1728,2672,2683,2957 'gen':2959,2963 'generat':2855 'get':980,1433,1911,1985,2182,2190,2833 'getupd':866,874,884,2641 'gifgrep':2967 'git':230,3360,3384,3401,3409,3412,3419 'git-track':229 'github':2939,3020,3199 'given':2615 'given-nam':2614 'go':3136,3891 'gog':2943 'googl':2942,2945 'google-workspace-mcp':2944 'goplac':2948 'got':435,735 'grep':50,463,482,524,661,688,748,763,810,868,955,1018,1123,1133,1157,1199,1223,1257,1564,1623,1716,1862,1873 'group':633,635,647,2216,2225,2230,2287 'grouppolici':611,1088,3543 'guardrail':2633,3653 'handl':3586 'handler':2476 'happen':1007,2307 'hard':695 'harmless':2607 'head':1938 'header':2378 'heal':2556 'health':30,3600 'heartbeat':266,2290,2315,2459 'heartbeat.md':260,2310 'hello':3838 'high':1265,2168 'hikaripool':1159,1168 'himalaya':3005 'hint':1235 'hit':1480,1590 'home':3008 'hook':2471,2475 'host':279,2340 'html':3787 'html/games/dashboards':3765 'http':2516 'hue':3011 'human':2441,3040 'id':369,1013,1017,1238,1381,1393,1827,2379,3570,3844 'ident':380 'identity.md':238,2265 'ignal':1126 'ignal-c':1125 'ignor':650 'imag':388,2854,2958,2962,3098 'imessag':2238,3511 'implicit':85 'import':1405,1879,1957 'imsg':2930 'inbound':2509,3584 'includ':3164 'index':175,211,1639,1702,1715,1734,1738,1741,1769,2420 'index.ts':372,3579 'info':2275 'init':305 'initi':3807 'input':3330 'insensit':1774 'instabl':1156 'instal':2762,2861,2865,2872,2877,2882,2891,2896,2920,3613 'instruct':256,2291,2298,3084,3135 'intern':1179,2474 'interv':3881 'invalid':815 'invok':3595 'isinst':1436,1914,1988 'isn':619 'isol':3896 'issu':442,790,822,974,1181,3406,3437,3454 'jarvi':2267 'job':146,322,331,335,1105,1329,1335,1340,1363,1370,1391,1392,1396,1486,1500,1512,1517,1520,2433,2794,3852,3856,3865,3882,3909,3921 'job-uuid':334,2432 'job_id.jsonl':1402 'jobs.json':321,2806,3918 'join':1425,1903,1977 'jq':74,90,144,587,606,642,847,993,1042,1055,1285,1338,1369,1498,1516,1584,1777,1796,1823,2013,2019,2038,2058,2075,2086,2098,2111,2210,3525,3537,3623,3662,3714,3776,3823,3855 'json':56,65,68,223,348,1407,1881,1959,2137,2369,3603 'json.loads':1414,1892,1966 'json.tool':59,1707,2142 'jsonl':219,337,1866,1876,1923,2362,2365 'keep':3144 'key':79,95,109,212,347,592,595,824,998,1001,1700,1805,1813,1833,2236,2422,2655,2660,3154 'keyword':1625,1687,1861,1864,1874 'kill':710,3343,3349 'kind':3868,3877 'know':2821,3171 'knowledg':2751 'known':821,2533 'l':104,726,1023,1863 'la':1605 'label':1831,1846 'lane':654,662,2685 'larg':3149 'last':1946 'lastchannel':2439 'lastrun':1377 'lastupdateid':414,926 'latest':940,2123,2857 'launch':3366 'layer':1537,1546,1593,1627,2738,2744 'leap':1174 'level':290,2414,2417 'licens':3926 'lifecycl':3597 'like':214 'limit':696,1198,1216,1479,1592,1688,1713,2587,2590,2676 'line':225,1409,1415,1883,1961,1967,2372,2523,3147 'line.split':1888 'link':751 'list':2128,2180,2888,2893,3317,3612,3780,3785 'listen':468,902,2462,2505 'live':3801 'llm':676,2692 'load':2328,2472,2755,2834,3092,3129,3139 'local':2345,2917,2950 'local-plac':2949 'localhost':3797 'log':284,300,319,333,407,754,1387,2352,2357,2606,3060,3326 'logger':2482 'login':3183 'logout':767 'long':270,675,1612,2325,2691 'long-term':269,1611,2324 'longer':707,1488 'look':797 'lost':894,1187,2573,2649 'low':2184,2195 'lowercas':2257 'ls':99,723,1604,2133,3615,3803 'lt':2134 'm':58,1297,1706,2141 'mac':3003 'mac/ios/android':3768 'main':184,216,273,2425,2430,3418,3425 'main/direct':2331 'manag':4,1313,2334 'mani':1653 'manifest':3619 'map':181 'markdown':2827,3083,3101 'marker.enabled':3671 'market':3042 'match':1686,1869 'mcp':2947 'md':2349,2479 'mean':549,645,891,2537 'media':2952 'media/browser':391 'media/inbound':386 'memori':163,251,272,282,294,1529,1533,1596,1601,1618,1630,1701,1737,2284,2327,2348,2485,3902 'memory.md':267,1610,2322 'memory/main.sqlite':292 'messag':427,433,444,522,537,565,623,634,648,679,920,936,1029,1101,1212,1419,1422,1432,1562,1576,1848,1870,1897,1900,1910,1948,1971,1974,1984,2163,2382,2403,2510,2568,2583,2595,2621,2634,2780,2927,3498,3585,3681,3688,3731,3837 'meta':1698,1703,3044 'metadata':2391 'mid':2411 'mid-sess':2410 'min':700,2700,2710 'miss':128,139,426,2525 'mit':3927 'mode':1038,1581,2155,2156,3490 'model':2085,2388,2393,2405,2407,3056 'model-snapshot':2392 'model-usag':3055 'modifi':1649 'modul':3310 'monitor':3311 'ms':2448 'mtime/1000':1646 'multi':3213 'multi-ag':3212 'multipl':3244 'must':1241,2635 'mv':1091,1525,2025,2046,2067,2081,2093,2105,2116,3530,3547,3719 'my-skil':2883,2907,2912,3076,3103,3188 'n':415 'n/a':82 'name':147,239,364,857,1061,1064,1074,1077,1250,1254,1261,1275,1360,1374,1503,1519,1521,1771,1784,2266,2442,2599,2616,2617,2774,3102,3191,3568,3571,3573,3630,3857 'nano':2874,2954 'nano-banana-pro':2873,2953 'need':566,1309 'never':152,732,1349 'new':678,3494 'next':1492 'nicknam':281,2342 'node':3769,3782,3784,3791,3795 'none':2202 'normal':502,2454 'note':2347,2994,3000 'notif':258,1110,2300,3723,3738 'notifi':3462 'notion':2941 'npm':3577 'npx':2764,3201 'nuclear':773,2149 'number':1244,1300,2071,2181 'o':52 'obj':1413,1421,1431,1891,1899,1909,1965,1973,1983 'obj.get':1417,1895,1926,1969 'object':2370 'obsidian':3004 'offset':913 'ok':66,124,135,1355,1357,2146 'old':919,935,1028,1561,2402 'one':222,355,809,1542,2368,3367,3644,3752,3872 'one-shot':3871 'onnx':2976 'open':2061,2159 'openai':2961,2972 'openai-image-gen':2960 'openai-whisp':2971 'openclaw':2,5,14,742,784,906,1324,1756,2028,2151,2733,2734,2924,3216,3484,3559,3783,3832,3839 'openclaw-config':1 'openclaw.cache':2395 'openclaw.json':183,2669,2785,2790 'openclaw.json.bak':191 'openclaw.plugin.json':368,2776,3569 'openhu':3009 'oper':15,2282 'optim':2851 'option':2830,3086,3090,3096 'orchestr':3215 'order':455 'origin':2636,3362 'origin.from':2443 'origin.label':2440 'origin/main':3386,3403 'origin/pr/86':3387 'origin/pr/87':3404 'outbound':3587 'output':3319 'overview':1332 'overwrit':2916 'owner':244,2274 'packag':3578 'package.json':3575 'pair':740,750,780,1087,2187,3542 'paired.json':384 'parallel':3234,3352,3405 'pass':1447,1937,2003 'past':41,1015,1395 'paste-job-uuid-her':1394 'paste-session-id':1014 'path':1643,1886,3633 'path.split':1920 'pattern':2008,2423,2535,3247,3749 'payload':325 'payload.channel':3862 'payload.to':3864 'penclaw':53 'pending.json':385 'per':224,330,356,2371,3369 'per-job':329 'period':261,2311,2320 'person':233,1763,2251,2507 'philip':3010 'phone':1243,3808 'pi':3225 'piec':2715 'pixel':2968 'place':2951 'platform':2781,3499 'plugin':87,189,366,2110,2771,3524,3606,3818 'plugins.entries':92,2787,3824 'plugins.entries.discord.enabled':3526 'plugins.entries.imessage.enabled':2112 'point':374,3581 'polici':80,817,2212,2221,2228,2241 'poll':417,861,912,2650 'postgr':2850,2868,3026 'postur':2206 'pr':3353,3358,3370,3382,3399 'practic':2870,3028,3034 'prefer':247,2276,3172 'prefix':3676 'present':3786,3794 'previous':3904 'primari':2814,3119,3745 'principl':3155 'print':1441,1929,1996,2001 'pro':2876,2956 'problem':21,795,2743 'process':1118,3315,3324,3336,3347 'product':2991 'profil':396,1253,1260,2598 'protocol':259,2285,2301,3724 'provid':542,1149,2489,2493,2499,2503 'prune':1010,1031,1563,2401 'ps':48,1121 'pti':3249,3269,3299,3372,3389,3427,3444,3468 'publish':3179,3185,3197 'push':3442,3459,3764 'python3':57,1403,1705,1877,1955,2140 'qr':752 'qr/pairing':746 'question':3335 'queue':680 'quick':29,1854 'quota':2684 'r':75,91,145,588,994,1286,1339,1499,1778,1797,1824 'rate':1197,1202,1215,1478,1712,2586,2589,2675 'raw':2351 're':739,779,1740,2826 're-index':1739 're-pair':738,778 'reach':510,2558 'read':1383,1940,3123 'readi':2470 'real':20 'rebrand':2272 'rebuild':1736,1753 'receiv':387,3642,3729 'recent':155,1818 'recentplan':3061 'recogn':832 'reconnect':1160 'recov':506 'recur':3880 'reduc':2594,2677 'ref':3359 'refactor':3307 'refer':3089,3152 'refs/pull':3363 'refs/remotes/origin/pr':3365 'registri':2847 'relev':2838 'reload':307 'remind':2997 'remot':3032,3036 'remotion-best-practic':3031 'remotion-fastest-tech-stack':3035 'replac':1806,1922 'replay':425,918 'repli':437,560 'reprocess':934 'req/month':1482 'request':882 'requir':3080 'reset':420,2150 'resourc':1721,2670,3162 'respond':451,2053,2165,3732 'respons':705,2707 'rest':3283 'restart':904,908,947,1310,1320,1326,1469,1749,1758,2014,2030,2139,2560,2575,2652,2696,2723,3557,3561 'restor':2119 'result':3890 'retri':486,498,509,2549,2593 'return':3287 'revers':1840 'review':3237,3354,3381,3398 'rf':782 'ri':1624 'risk':2158 'rm':781,1754 'role':1420,1423,1443,1898,1901,1933,1972,1975,1994,1998,2385 'rpc':1097,1131,1140,1207,1454,2563,2578 'rule':237,252,2283 'run':32,328,332,462,686,690,1267,1386,1484,1494,2702,3233,3313,3483,3900,3905 'runbook':16 'runner':2989 'runtim':302 'runtime.ts':378,3596 'safe':2006 'safeguard':1586 'safeti':253,2286 'sag':2969 'sale':879,962,1073,1075,2501 'scan':753 'schedul':324,1493,2795,3846,3859,3860,3866 'schema':3604 'screenshot':393 'script':3085,3088 'scripts/assets':2831 'search':299,1474,1617,1664,1672,1759,1767,1847,2840,2844,2849,2853 'second':889,2458,2646 'section':1461 'secur':10,2154,2205,2632,3709 'see':492,1145,1459,3205,3684,3919 'seem':37 'select':167,170,591,997,1371,1501,1518,1642,1660,1675,1695,1781,1800 'self':2555 'self-heal':2554 'selfchat':2218 'selfchatmod':610,2062 'send':540,1100,1211,1296,2567,2582,2626,3329,3588,3647,3668,3695,3736 'sender':601,618,2189 'sent':431 'separ':794 'sequenc':2453 'server':2517 'servic':2469 'sess':1012 'sess_id.jsonl':1021 'session':208,210,220,249,274,341,513,556,573,580,730,973,983,989,1016,1552,1559,1760,1768,1790,1816,1819,1852,1857,1943,1951,2332,2361,2376,2377,2412,2419,2484,2640,3059,3698 'session-log':3058 'session-memori':2483 'sessionid':2436,3288,3327,3339,3350 'sessions.json':209,985,2421 'sessiontarget':3895 'set':13,943,1262,1273,2096,2600,3659 'share':3161 'sherpa':2975 'sherpa-onnx-tt':2974 'shot':3873 'show':1868 'shutdown':308 'sid':1919,1932 'signal':399,547,555,576,1095,1096,1116,1135,1137,1139,1146,1177,1191,1201,1206,1234,1269,1279,1292,1306,1315,1453,1456,1460,1809,2073,2220,2303,2490,2511,2513,2562,2570,2577,2588,2602,2609,3509,3675,3741,3892 'signal-c':1115,1176,1190,1268,1278,1291,1305,1314,2512,2569,2601,2608 'silent':625 'size':1644 'skill':190,287,291,2750,2767,2808,2811,2842,2858,2863,2885,2897,2904,2909,2914,2921,2926,3046,3051,3054,3066,3068,3078,3105,3132,3134,3142,3190,3193,3204,3208,3209 'skill-creat':3045 'skill-openclaw-config' 'skill.md':3075,3079,3099 'skip':265,938 'slack':2929,3513 'sleep':3014 'slug':3187 'smaller':2714 'smart':3007 'snapshot':2394 'social/web':2935 'socket':201 'solv':2740 'someth':1621,3263 'songse':2978 'sonnet':2090 'sonosc':3015 'sort':1837 'soul.md':232,2250 'sourc':2778,3626 'source-adisinghstudent' 'spam':1256 'spawn':3218,3259,3291 'speak':2173 'specif':1622,1942,2355,2879,2903,3322,3555,3875 'split':3148 'sqlite':1632 'sqlite3':165,1640,1658,1673,1693 'src':375,3582 'sse':1161,1182 'ssh':278,2339 'stack':3039 'standard':3576 'start':466,954,958,1136,1148,2460,2488,2492,2498,2502,2515,2530,3598 'starter':3022 'startup':303,2297,2452,2455 'starvat':1171 'state':345 'state.lasterror':153,1376 'state.lastrunatms':1378 'state.laststatus':151,1348,1372 'state.nextrunatms':1504 'status':150,496,862,2542,3841 'stop':901,3599 'stream':768,1162,1183 'structur':1052 'stuck':672,928,2698,3345 'style':235,2253 'sub':404 'sub-ag':403 'subagents/runs.json':402 'submit':3338 'subprocess':1319 'substr':1676 'summar':3041 'summari':3489,3739 'supabas':2867,3025 'supabase-postgres-best-practic':2866,3024 'superdesign':3029 'switch':2034,2409 'sync':346 'sys':1406,1880,1958 'sys.stdin':1411,1885,1963 'system':1534 'tail':157,470,488,531,666,693,757,771,819,876,964,1142,1166,1204,1228,1399,1725,1952 'take':706,2456 'talk':2264 'target':327,541,1221,1226,1231,1299,3796,3884 'task':262,660,2321,2712,2797,3236,3257,3297,3479,3848 'tech':3038 'telegram':122,126,350,412,416,787,812,814,816,870,872,878,897,957,959,961,976,978,1000,1044,1050,1810,2227,2496,2500,2647,2662,3510,3894 'templat':1047,3097,3923 'temporarili':1513 'term':271,1613,2326 'termin':1164,1186 'test':26,593,999,1277,1298,1783 'text':1424,1427,1444,1655,1667,1671,1677,1902,1905,1934,1976,1979,1999,3487 'text.strip':1440,1918,1992 'thing':792,3002 'things-mac':3001 'think':2413,2416 'thread':1170 'tier':1477 'time':885,1495,1578,2642,3876 'timeout':315,476,687,691,867,873,1464,1485,2546,2703,2717 'timeoutm':2704 'timestamp':1872,1927,2380 'tmux':2990 'todat':1380,1507,1844 'todo':3286 'token':207,354,825,839,855,1071,1084,2656,2667 'tone':236,2252 'took':1487 'tool':2346,2803,3019,3590,3915 'toolresult':1995 'tools.md':276,2337 'tools.message.crosscontext':3663 'tools.message.crosscontext.allowacrossproviders':3715 'tools/signal-cli':398 'topic':2354 'topic-agent-skills' 'topic-ai-agents' 'topic-chat.md':286 'topic-openclaw' 'topic-skills-sh' 'topic-specif':2353 'track':231,3290 'transcript':221,1944 'transient':2731 'trello':2940 'tri':558,1412,1890,1964,2624,3693 'trigger':3113,3120,3143 'troubleshoot':428,786,1094,1327,1528 'true':1058,1066,1079,3250,3252,3270,3274,3300,3304,3373,3377,3390,3394,3428,3432,3445,3449,3469,3473,3527,3540,3665,3716 'ts':1925,1931,3631 'ttl':2396 'tts':2970,2977 'turn':2384 'twilio/telnyx/plivo':3811 'two':793 'type':241,1418,1896,1970,2269,2373,2374,3610,3867 'typeerror':1185 'types.ts':379,3608 'typescript':367,2772,2777,3609 'ui':411,3760 'unixepoch':1647 'unknown':1225,1230,2188 'unreach':2721 'unrecogn':813,2654 'updat':1829,1839,1842,2894,2899,2901,2906,2911 'update-offset-coder.json':413 'update-offset-sales.json':419 'updatedat':2446 'updateprofil':1271,2613 'upgrad':2682 'usag':2389,3057,3831 'use':1242,2664 'user':979,2278 'user.md':243,2273 'user/assistant/toolresult':2386 'usernam':827,2657 'usual':971,2553 'uuid':336,1237,1247,1397,2434,2437 'v1':1704 'valid':805,2136 'valu':1696 'value.dmpolicy':81 'value.enabled':84,96,2237 'value.lastchannel':1787,1801,1835 'value.origin.label':596,1002,1782,1788,1804,1832 'value.sessionid':1786,1803,1828 'value.updatedat':1830 'vector':293,1629,2843 'verbos':3176 'verifi':849 'version':2880,2886,3194 'via':2802,3674,3810,3914 'vibe':242 'video':2965 'video-fram':2964 'view':3617,3850 'voic':2933,3805,3816,3826 'voice-cal':2932,3815,3825 'voicecal':3833,3840 'wa':2302 'wac':2931 'wait':663,2591,2686,2694 'wake':3486 'warn':1255,2604 'way':2815 'wc':103,725,1022 'web':409,479,493,2539,2545,3759 'whatsapp':108,217,429,465,467,478,543,562,572,594,711,1802,1807,2035,2050,2211,2486,2504,2508,2544,3508,3730,3734,3893 'whatsapp/default':339 'whether':3127 'whisper':2973 'whole':43,1322 'window':1009,1549,2399,2724,3158 'wipe':736 'within':1550 'work':28,3240 'workdir':3253,3271,3301,3374,3391,3429,3446,3470 'worker':3228 'workflow':2752 'workspac':226,228,289,1595,1743,2243,2678,2946 'workspace-level':288 'worktre':3021,3410,3413,3420 'write':234,2359 'wrong':38,1220,2658 'x/twitter':360,2937 'xarg':105 'xxx':3328,3340,3351 'xxxxxxxxxx':2043,2078 'yaml':3081 'yes':3342 'yolo':3435,3452,3476 'your-bot-token-her':1068,1081 'yyyy-mm-dd.md':285","prices":[{"id":"f1eb3b87-e9bf-4f83-887e-b0016ec6d3fb","listingId":"a81213fe-ae86-4a34-959c-96ca429e4f3e","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"adisinghstudent","category":"ara.so","install_from":"skills.sh"},"createdAt":"2026-04-23T13:04:09.243Z"}],"sources":[{"listingId":"a81213fe-ae86-4a34-959c-96ca429e4f3e","source":"github","sourceId":"adisinghstudent/ara.so/openclaw-config","sourceUrl":"https://github.com/adisinghstudent/ara.so/tree/main/skills/openclaw-config","isPrimary":false,"firstSeenAt":"2026-04-23T13:04:09.243Z","lastSeenAt":"2026-04-24T07:03:25.651Z"}],"details":{"listingId":"a81213fe-ae86-4a34-959c-96ca429e4f3e","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"adisinghstudent","slug":"openclaw-config","github":{"repo":"adisinghstudent/ara.so","stars":10,"topics":["agent-skills","ai-agents","openclaw","skills-sh"],"license":null,"html_url":"https://github.com/adisinghstudent/ara.so","pushed_at":"2026-03-16T00:18:13Z","description":"OpenClaw operations skill for AI agents — 1.5K installs on skills.sh","skill_md_sha":"76aaea5569ba4bcd1c903c61dc2dc5cce6cf5a25","skill_md_path":"skills/openclaw-config/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/adisinghstudent/ara.so/tree/main/skills/openclaw-config"},"layout":"multi","source":"github","category":"ara.so","frontmatter":{"name":"openclaw-config","description":"Manage OpenClaw bot configuration - channels, agents, security, and autopilot settings"},"skills_sh_url":"https://skills.sh/adisinghstudent/ara.so/openclaw-config"},"updatedAt":"2026-04-24T07:03:25.651Z"}}