Appearance
Missing Features
OpenClaw's documentation index covers 300+ pages of features. Sam uses a small fraction of them. This page inventories the high-value features that are available but not configured.
Model Failover
What it is: Configure backup model providers that activate automatically if the primary fails.
Sam's current state: Single provider (myclaw/claude-opus-4.6). If api.myclaw.ai is unreachable, Sam stops entirely.
How to add:
json
"agents": {
"defaults": {
"model": {
"primary": "myclaw/claude-opus-4.6",
"fallbacks": ["anthropic/claude-sonnet-4-5", "openai/gpt-5.2"]
}
}
}Priority: 🔴 High — single point of failure for all operations.
Sandboxing
What it is: Run agent sessions in isolated Docker containers. Each session gets a fresh environment; tool calls can't affect the host system.
Sam's current state: sandbox.mode is off. All tool execution happens directly on the Ubuntu host.
How to add:
json
"agents": {
"defaults": {
"sandbox": { "mode": "non-main", "scope": "agent" }
}
}Priority: 🟡 Medium — especially important for the cron-isolated sessions (already runs in sessionTarget: "isolated").
Webhooks / Hooks
What it is: HTTP endpoints on the gateway that external services can POST to. Enables event-driven automation instead of polling.
Sam's current state: Not configured. Sam polls GitHub (cron, every 30min), polls Gmail (heartbeat, every 30min).
What it would enable:
- GitHub pushes → Sam gets notified instantly (no 30min cron)
- Gmail arrives → Sam processes immediately
- Custom FuturHealth system events → Sam reacts
How to add:
json
"hooks": {
"enabled": true,
"token": "shared-secret",
"path": "/hooks",
"mappings": [
{ "match": { "path": "github" }, "action": "agent", "agentId": "funnel" },
{ "match": { "path": "gmail" }, "action": "agent", "agentId": "main" }
]
}Priority: 🟡 Medium — would eliminate the broken cron job.
Gmail PubSub
What it is: Google Cloud PubSub subscription that pushes Gmail notifications to OpenClaw in real-time.
Sam's current state: Google OAuth tokens exist for both john@fh.co and johnlevan1@gmail.com. The hooks infrastructure needed for Gmail PubSub is not configured.
What it would enable: Important emails processed instantly instead of at the next 30-minute heartbeat window.
Priority: 🟡 Medium — infrastructure exists, just not wired up.
Multi-Agent Configuration
What it is: Multiple named agents with separate workspaces, each bound to specific channels or conversation types.
Sam's current state: One agent (main), all traffic goes to it.
This is essentially the entire decomposition plan — see Proposed Agents.
json
"agents": {
"list": [
{ "id": "main", "default": true, "workspace": "~/.openclaw/workspace" },
{ "id": "data", "workspace": "~/.openclaw/workspace-data" },
{ "id": "creative", "workspace": "~/.openclaw/workspace-creative" }
]
},
"bindings": [
{ "agentId": "main", "match": { "channel": "slack", "userId": "U06BQPTAE1H" } },
{ "agentId": "data", "match": { "channel": "slack", "channelId": "C0AJ67B5VP1" } }
]Priority: 🔴 This IS the main deliverable.
Heartbeat Config in openclaw.json
What it is: Setting agents.defaults.heartbeat.every in the config enforces the heartbeat schedule at the runtime level, not just through agent file instructions.
Sam's current state: No heartbeat config in openclaw.json. The schedule is only enforced by Sam following instructions in HEARTBEAT.md — which it has repeatedly failed to do.
How to add:
json
"agents": {
"defaults": {
"heartbeat": {
"every": "30m",
"target": "last"
}
}
}Note: Sam's heartbeat schedule is 3×/day, not every 30min. The current architecture has Sam checking HEARTBEAT.md to decide whether to act — but the heartbeat fire rate itself is controlled by every. Setting every: "30m" with HEARTBEAT.md gating is the right pattern.
Loop Detection
What it is: Configurable guardrails that detect and break repetitive tool-call loops.
Sam's current state: Not configured. Led to the March 17 loop incident where Sam sent ~100 identical messages.
Priority: 🟡 Medium — implement before further automation work.
Session Management Config
What it is: Explicit control over session scoping, thread bindings, idle resets, and compaction.
Sam's current state: Uses all defaults. No explicit session config.
Useful settings for multi-agent setup:
json
"session": {
"dmScope": "per-channel-peer",
"reset": { "mode": "daily", "atHour": 4, "idleMinutes": 120 },
"threadBindings": { "enabled": true, "idleHours": 24 }
}Browser Tool
What it is: Managed Playwright browser that agents can control for web automation.
Sam's current state: Not configured.
Use cases for FuturHealth:
- Competitive intelligence (scraping competitor landing pages)
- NorthBeam dashboard automation (since attribution API is 403)
- Automated visual regression of funnel pages after deploys
LLM Task Delegation
What it is: Delegate subtasks to a cheaper/faster model. Use powerful Claude for reasoning; use a fast/cheap model for structured extraction.
Sam's current state: Not configured. All tasks use claude-opus-4.6.
Use case: 3×/day funnel reporting doesn't need claude-opus — a faster model would work fine and reduce cost/latency.
Brave Search / Perplexity
What it is: Web search integration for real-time information retrieval.
Sam's current state: Not configured. Sam can't search the web.
Use case: Competitive intelligence, industry news relevant to GLP-1 market, Reddit scanning for customer sentiment (currently done manually).
Secret Management
What it is: OpenClaw's secrets.providers and SecretRef objects allow credentials to come from environment variables, files, or external vaults rather than being embedded in config or workspace files.
Sam's current state: All credentials in plain-text .env.credentials file.
How it works:
json
"models": {
"providers": {
"myclaw": {
"apiKey": { "source": "env", "provider": "default", "id": "MYCLAW_API_KEY" }
}
}
}Priority: 🟡 Medium — especially important before adding more team members with access.
TTS / Voice
What it is: Text-to-speech integration (e.g., ElevenLabs) for voice output.
Sam's current state: AGENTS.md mentions sag (ElevenLabs TTS) for "stories, movie summaries, and storytime moments" — but it's not configured.
Use case: Mostly novelty at this point, but could be useful for quick audio summaries.
See also: Known Issues | Security Concerns | Configuration