Setup log and operations reference. Machine: openclaw-macbookpro · Last updated: 2026-02-25
| # | Task | Status |
|---|---|---|
| 1 | Install OpenClaw | DONE |
| 2 | Configure model providers (OpenAI Codex) | DONE |
| 3 | Connect Slack (socket mode) | DONE |
| 4 | Create Lobster agent (default bot) | DONE |
| 5 | Create Video-Producer agent (PL0 pipeline) | DONE |
| 6 | Configure agent routing | DONE |
| 7 | Pre-flight verification & end-to-end test | PENDING |
| Host | openclaw-macbookpro |
| User | momentatech |
| OS | macOS 26.3 (Intel) |
| Tailscale IP | 100.115.140.26 |
| SSH | ssh momentatech@100.115.140.26 |
| Node | v22.22.0 (/usr/local/bin/node) |
| npm | 10.9.4 (/usr/local/bin/npm) |
| Homebrew | 5.0.15 (/usr/local/bin/brew, Intel path) |
1. First attempt — failed (permissions)
curl -fsSL https://openclaw.ai/install.sh | bash
npm install failed with EACCES: permission denied trying to rename /usr/local/lib/node_modules/openclaw. Old install owned the directory as root.
2. Fix permissions
sudo chown -R $(whoami) /usr/local/lib/node_modules/
3. Second attempt — success
curl -fsSL https://openclaw.ai/install.sh | bash
OpenClaw v2026.2.25 installed. Doctor ran automatically:
~/.openclaw/agents/main/sessions~/Library/LaunchAgents/ai.openclaw.gateway.plist| Version | 2026.2.25 |
| Config | ~/.openclaw/openclaw.json |
| Gateway token | 564fbd64b04c5305ed70d6063cb32701ba3331c94db96bf8 |
| Dashboard | http://127.0.0.1:18789 |
| Skills eligible | 7 |
| Skills missing reqs | 44 |
| Keys backup | ~/openclaw-backup/keys.json |
openclaw config set gateway.mode localopenclaw gateway restart1. Run configure wizard
openclaw configure → Model → OpenAI → OpenAI Codex (ChatGPT OAuth)
OAuth flow: wizard generated a URL, user opened in local browser, pasted redirect URL back.
2. Result
Default model set to openai-codex/gpt-5.3-codex.
| Default model | openai-codex/gpt-5.3-codex |
| Auth method | OAuth (ChatGPT Codex) |
| Auth profile | openai-codex:default |
Anthropic API key added via env.ANTHROPIC_API_KEY in openclaw.json. No auth profile needed — OpenClaw auto-detects the env var for Anthropic models.
Available models: anthropic/claude-opus-4-6, anthropic/claude-sonnet-4-6
1. Run configure wizard
openclaw configure → Channels → Slack (Socket Mode)
2. Enter tokens
xoxb-748892183093-... (from backup)xapp-1-A0AGCHZD03Z-... (from backup)3. Channel allowlist
C0AGU4295HQ,C0AGT89CSKD
Resolved: #lobster-test + #video-production
4. DM policy
Set to Pairing (recommended) — unknown DMs get a pairing code.
5. Gateway restart + pairing
openclaw gateway restart openclaw pairing approve slack 9Q99B7B7
Approved Slack sender U0AG3M14UTX.
| App ID | A0AGCHZD03Z |
| Mode | Socket Mode |
| Channel policy | Allowlist |
| #lobster-test | C0AGU4295HQ — allowed |
| #video-production | C0AGT89CSKD — allowed |
| DM policy | Pairing |
| Approved sender | U0AG3M14UTX |
| Streaming | Partial + native |
Default Slack bot. Handles all channels except #video-production.
| Agent ID | lobster |
| Model | openai-codex/gpt-5.3-codex |
| Default | Yes (catches unmatched Slack traffic) |
| Workspace | ~/.openclaw/workspace-lobster/ |
SOUL.md — Personality: helpful, direct, efficient. Routes video requests to #video-production.IDENTITY.md — name: lobster, emoji: 🦞AI video production pipeline for Punchlist Zero content. Handles #video-production only.
| Agent ID | video-producer |
| Model | anthropic/claude-opus-4-6 |
| Channel | #video-production (C0AGT89CSKD) |
| Workspace | ~/.openclaw/workspace-video/ |
SOUL.md — Quality-over-quantity, human-in-the-loop, zero errors. Hard rules: never auto-select footage, never skip approval.IDENTITY.md — name: video-producer, emoji: 🎬config/technical_notes.md — ALL technical constraints documented:
/usr/local/bin/*)MEDIA: prefix for Slack file uploadsCwhRBWXzGAHq8TQ4Fs17config/style_guide.md — PL0 style: faceless YouTube, gold #F5B800, 160-185 WPM, shot-by-shot approval workflowconfig/demo_context.md — Client context (Dustin King, Momenta Tech), 6-step pipelineworkspace-video/
├── SOUL.md
├── IDENTITY.md
├── config/
│ ├── technical_notes.md
│ ├── style_guide.md
│ └── demo_context.md
├── scripts/
├── connectors/
├── workflows/
├── runs/
├── logs/
├── topics/
├── analytics/
├── output/{videos,thumbnails,metadata}/
└── assets/{stock_video,stock_images,music,voiceover}/
Important: Agents go in agents.list[] as an array, NOT as top-level keys under agents. First attempt used agents.lobster / agents.video-producer which was rejected by the config validator.
Auth for Anthropic uses env.ANTHROPIC_API_KEY — no auth profile needed. Attempted auth.profiles.anthropic:default.mode: "api-key" but was rejected (valid values differ).
{
"bindings": [
{
"agentId": "video-producer",
"match": {
"channel": "slack",
"peer": { "kind": "channel", "id": "C0AGT89CSKD" }
}
},
{
"agentId": "lobster",
"match": { "channel": "slack" }
}
]
}
Order matters: specific peer match first, generic catch-all second.
openclaw status output after fix:
| Tool | Version | Full Path | Status |
|---|---|---|---|
| FFmpeg | 8.0.1 | /usr/local/bin/ffmpeg | OK |
| Python | 3.12.12 | /usr/local/bin/python3.12 | OK |
| ImageMagick | 7.1.2-15 | /usr/local/bin/magick | OK |
| yt-dlp | 2026.02.21 | /usr/local/bin/yt-dlp | OK (relinked) |
| sag (TTS) | 0.2.2 | /usr/local/bin/sag | OK |
Pillow | 12.1.1 | OK — text rendering verified |
requests | 2.32.5 | OK |
pydub | 0.25.1 | OK |
Arial Bold.ttf | Found |
Impact.ttf | Found |
All at: /System/Library/Fonts/Supplemental/
| Service | Env Variable | Status |
|---|---|---|
| ElevenLabs | ELEVENLABS_API_KEY | Configured |
| Pexels | PEXELS_API_KEY | Configured |
| Pixabay | PIXABAY_API_KEY | Configured |
| Anthropic | ANTHROPIC_API_KEY | Configured |
| Runway ML | RUNWAYML_API_KEY | Not set (key expired, needs rotation) |
| Skill | Status | Use |
|---|---|---|
| slack | Ready | Messages, reactions, pins in Slack |
| video-frames | Ready | Extract frames/clips from video via ffmpeg |
| coding-agent | Ready | Delegate coding tasks to sub-agents |
| sag (TTS) | Binary found, skill shows missing | ElevenLabs TTS — may need gateway restart |
| nano-banana-pro | Missing | Needs GEMINI_API_KEY |
Total: 8 ready / 51 total
/usr/local/bin/ not on PATH in subprocess. Always use full paths.MEDIA:/path/to/file in agent replies.brew link yt-dlp + fix fish completions dir permissions).