Dashboard
openclaw-macbookpro · ssh momentatech@100.115.140.26 · Last verified: 2026-02-26
Gateway & Machine
| Version | 2026.2.25 |
| OS | macOS 26.3 (Intel) · Node 22.22.0 |
| SSH | ssh momentatech@100.115.140.26 |
| Dashboard | http://127.0.0.1:18789 |
| Config | ~/.openclaw/openclaw.json |
| Security | 0 critical · 2 warnings (expected) |
Agents
| Agent | Model | Channel | Heartbeat |
|---|---|---|---|
| lobster | openai-codex/gpt-5.3-codex |
Default (catch-all) | 30m |
| video-producer | anthropic/claude-opus-4-6 |
#video-production | Disabled |
Routing: video-producer binds to C0AGT89CSKD first, lobster catches all remaining.
Slack Channels
| #lobster-test | C0AGU4295HQ | Active | → lobster |
| #video-production | C0AGT89CSKD | Archived | → video-producer |
#video-production needs to be unarchived before video-producer can be tested.
API Keys
| Service | Owner | Status | Used By |
|---|---|---|---|
| Pexels | ours | 200 OK | video-producer (stock footage) |
| ElevenLabs | ours | 200 OK | video-producer (Roger TTS) |
| Pixabay | ours | 200 OK | video-producer (backup stock) |
| Anthropic | ours | Active | video-producer (Opus 4.6) |
| OpenAI | ours | Active (OAuth) | lobster (GPT-5.3-Codex) |
| Gemini | ours | Active | Embeddings + nano-banana-pro |
| Runway ML | Travis | 401 Expired | BROKEN — needs rotation |
| YouTube | ours | OAuth active | youtube-upload skill (Testing_Gluthoric) |
Key backup: ~/openclaw-backup/keys.json on Mac
Skills (17 total: 10 built-in + 5 custom + 2 ClawHub)
| Skill | Status | Notes |
|---|---|---|
| sag | Ready | ElevenLabs TTS (Roger voice, --stability/--similarity/--style flags) |
| slack | Ready | Messages, reactions, pins (not file uploads) |
| nano-banana-pro | Ready | Gemini 3 Pro image gen for thumbnails |
| video-frames | Ready | Extract frames/clips via ffmpeg |
| coding-agent | Ready | Delegate coding to sub-agents |
| skill-creator | Ready | Create/update agent skills |
| imsg | Ready | iMessage/SMS CLI |
| tmux | Ready | Remote-control tmux sessions |
| healthcheck | Ready | Host security hardening |
| weather | Ready | Weather via wttr.in |
Custom-Built Skills (Video Pipeline)
| Skill | Scripts | Status |
|---|---|---|
| pexels-stock | search_video, search_photo, download, preview | BUILT |
| pillow-video-cards | section_card, intro_slide, outro_slide, thumbnail, text_overlay | TESTED |
| ffmpeg-assembler | normalize, concat_clips, mix_audio, overlay_image, assemble | TESTED |
| pixabay-stock | search_video, search_photo, download | TESTED |
| youtube-upload | upload, set_thumbnail, check_quota | TESTED |
ClawHub-Installed Skills
| Skill | Type | Notes |
|---|---|---|
| video-generation | Reference docs | API guides for Runway Gen-4.5, Luma, Kling, Pika, Replicate, Stable Video Diffusion |
| video-subtitles | Script | Whisper transcription + SRT generation + burn-in via generate_srt.py |
Installed Toolchain
| Tool | Version | Path |
|---|---|---|
| FFmpeg | 8.0.1 | /usr/local/bin/ffmpeg |
| Python | 3.12.12 | /usr/local/bin/python3.12 |
| ImageMagick | 7.1.2-15 | /usr/local/bin/magick |
| yt-dlp | 2026.02.21 | /usr/local/bin/yt-dlp |
| sag (TTS) | 0.2.2 | /usr/local/bin/sag |
| Pillow | 12.1.1 | pip3.12 |
| requests | 2.32.5 | pip3.12 |
| pydub | 0.25.1 | pip3.12 |
Fonts: Arial Bold + Impact at /System/Library/Fonts/Supplemental/
Remaining Tasks
| Task | Status |
|---|---|
| Build youtube-upload skill | Done |
| YouTube OAuth flow (get refresh token) | Done (Testing_Gluthoric) |
| Unarchive #video-production in Slack | User action needed |
| Verify Slack routing end-to-end | Pending |
| Configure model fallbacks (Opus → Sonnet) | Pending |
| Runway ML key rotation | Blocked (Travis) |
| Pexels API | 503 (their outage, Pixabay covers it) |
Setup Log
Step-by-step record of OpenClaw installation and configuration on the Momenta Mac.
Task Tracker
| # | Task | Status |
|---|---|---|
| 1 | Install OpenClaw | DONE |
| 2 | Configure model providers | DONE |
| 3 | Connect Slack (socket mode) | DONE |
| 4 | Create Lobster agent | DONE |
| 5 | Create Video-Producer agent | DONE |
| 6 | Configure agent routing | DONE |
| 7 | Pre-flight verification | DONE |
Task 1: Install OpenClaw
Machine Details
| Host | openclaw-macbookpro |
| User | momentatech |
| OS | macOS 26.3 (Intel) |
| Tailscale IP | 100.115.140.26 |
| Node | v22.22.0 (/usr/local/bin/node) |
| Homebrew | 5.0.15 (/usr/local/bin/brew) |
Install Steps
1. First attempt — failed (permissions)
curl -fsSL https://openclaw.ai/install.sh | bash
EACCES: permission denied — old install owned directory as root.
2. Fix permissions
sudo chown -R $(whoami) /usr/local/lib/node_modules/
3. Success
curl -fsSL https://openclaw.ai/install.sh | bash
v2026.2.25 installed. Gateway token auth configured, LaunchAgent installed.
Post-Install
| Config | ~/.openclaw/openclaw.json |
| Gateway token | 564fbd64b04c5305ed70d6063cb32701ba3331c94db96bf8 |
| Dashboard | http://127.0.0.1:18789 |
| Skills | 7 / 51 eligible |
| Keys backup | ~/openclaw-backup/keys.json |
Task 2: Model Providers
OpenAI Codex (default)
openclaw configure → Model → OpenAI → OpenAI Codex (ChatGPT OAuth)
| Default model | openai-codex/gpt-5.3-codex |
| Auth | OAuth / profile openai-codex:default |
Anthropic (added later)
Via env.ANTHROPIC_API_KEY in openclaw.json. Auto-detected.
Available: anthropic/claude-opus-4-6, anthropic/claude-sonnet-4-6
Task 3: Connect Slack
openclaw configure → Channels → Slack (Socket Mode)
- Bot token:
xoxb-748892183093-... - App token:
xapp-1-A0AGCHZD03Z-... - Channel allowlist:
C0AGU4295HQ,C0AGT89CSKD - DM policy: Pairing — approved sender
U0AG3M14UTX
| App ID | A0AGCHZD03Z |
| Mode | Socket Mode |
| #lobster-test | C0AGU4295HQ |
| #video-production | C0AGT89CSKD |
Task 4: Lobster Agent
Default Slack bot. Handles all channels except #video-production.
| Agent ID | lobster |
| Model | openai-codex/gpt-5.3-codex |
| Workspace | ~/.openclaw/workspace-lobster/ |
SOUL.md + IDENTITY.md (lobster)
Task 5: Video-Producer Agent
AI video production for Punchlist Zero.
| Agent ID | video-producer |
| Model | anthropic/claude-opus-4-6 |
| Channel | #video-production (C0AGT89CSKD) |
| Workspace | ~/.openclaw/workspace-video/ |
SOUL.md + IDENTITY.md + config/{technical_notes, style_guide, demo_context}.md
Task 6: Agent Routing
Gotcha: Agents go in agents.list[] array, NOT top-level keys. First attempt was rejected.
{
"bindings": [
{
"agentId": "video-producer",
"match": { "channel": "slack", "peer": { "kind": "channel", "id": "C0AGT89CSKD" } }
},
{
"agentId": "lobster",
"match": { "channel": "slack" }
}
]
}
Order matters: specific peer match first, catch-all second.
Task 7: Pre-flight
Verified 2026-02-26 05:40 UTC
| Check | Result |
|---|---|
| OpenClaw | v2026.2.25 |
| Gateway | Active (LaunchAgent) |
| Config | Clean (openclaw doctor) |
| Slack | Socket mode, 179ms |
| Agents | lobster + video-producer |
| Bindings | video-producer → C0AGT89CSKD, lobster → catch-all |
| API keys | ElevenLabs, Pexels, Pixabay, Anthropic, Gemini |
| Video tools | ffmpeg, Python 3.12, Pillow, ImageMagick, yt-dlp, sag |
| Skills | slack, sag, video-frames, coding-agent, nano-banana-pro |
| #lobster-test | Active |
| #video-production | Archived |
| Memory search | Gemini embeddings |
| Runway ML | Expired |
Video Agent
Production pipeline for Punchlist Zero — faceless YouTube, energy industry.
Overview
| Agent ID | video-producer |
| Model | Claude Opus 4.6 |
| Channel | #video-production (C0AGT89CSKD) |
| Voice | ElevenLabs "Roger" (CwhRBWXzGAHq8TQ4Fs17) |
| Brand | Gold #F5B800 + black/white |
| Output | 1920x1080, H.264 MP4, 30fps, AAC |
| Pacing | 160-185 WPM narration |
Production Pipeline
7-step human-in-the-loop. Every step needs Dustin's approval.
Green = built skill
Steps 1-2: Script & Storyboard
Agent itself (Opus 4.6). Topic → 3 angles → script → shot-by-shot storyboard in Slack thread.
Step 3: Footage
pexels-stock + pixabay-stock skills. Search, preview, download. 1080p+ filter baked in.
Step 4: Voiceover
sag skill. ElevenLabs TTS, Roger voice. Preview via MEDIA: prefix.
Step 5: Assembly
pillow-video-cards + ffmpeg-assembler. Section cards via Pillow, then assemble.py --manifest → final MP4.
Step 6: Thumbnail
pillow-video-cards — thumbnail.py. 1280x720 PNG, bg-color or bg-image.
Step 7: Upload
youtube-upload skill. Resumable upload via YouTube Data API v3.
| Scripts | upload.py, set_thumbnail.py, check_quota.py |
| Deps | google-api-python-client, google-auth, google-auth-oauthlib |
| Env vars | YOUTUBE_CLIENT_ID, YOUTUBE_CLIENT_SECRET, YOUTUBE_REFRESH_TOKEN |
| Quota | Upload=1600, thumbnail=50, list=1 (daily: 10,000) |
| Category | 28 (Science & Technology) |
| Chunk size | 10MB resumable |
Custom Skills
pexels-stock BUILT
scripts/ search_video.py, search_photo.py, download.py, preview.py
Requires PEXELS_API_KEY + requests. API was 503 at test (transient).
pillow-video-cards TESTED
scripts/ section_card.py, intro_slide.py, outro_slide.py, thumbnail.py, text_overlay.py
All 5 tested. Brand: Gold #F5B800, Arial Bold, Impact.
ffmpeg-assembler TESTED
scripts/ assemble.py, normalize.py, concat_clips.py, mix_audio.py, overlay_image.py
normalize.py tested. Full assembly pending real media.
pixabay-stock TESTED
scripts/ search_video.py, search_photo.py, download.py
500 results for "solar energy". stdlib urllib only.
youtube-upload TESTED
scripts/ upload.py, set_thumbnail.py, check_quota.py references/ youtube_api.md
Resumable upload (10MB chunks). OAuth active — Testing_Gluthoric (UCv0sMGwhWthhXT715pepuxg).
video-generation INSTALLED
ClawHub reference skill. API guides for Runway Gen-4.5, Luma, Kling, Pika, Replicate, Stable Video Diffusion. Agent reads docs and writes API calls.
video-subtitles INSTALLED
scripts/ generate_srt.py
Whisper transcription + SRT generation. Supports --burn for hardcoded subtitles, --translate for language translation.
Why Custom Skills Matter
| Without | With | |
|---|---|---|
| Tokens/search | 400-800 | ~30 |
| Tokens/download | 200-400 | ~20 |
| 10-shot video | ~16,000+ wasted | ~500 |
| Errors | High | Near zero |
| 1080p filter | Might forget | Baked in |
import requests, json, os
API_KEY = os.environ.get("PEXELS_API_KEY")
# ... 20+ lines of boilerplate every timepython3 {baseDir}/scripts/search_video.py \
--query "oil rig sunset" --min-height 1080 --count 5Test Results
| Skill | Script | Result |
|---|---|---|
| pillow-video-cards | section_card.py | 1920x1080 PNG |
| intro_slide.py | 1920x1080 PNG | |
| outro_slide.py | 1920x1080 PNG | |
| thumbnail.py | 1280x720 PNG | |
| text_overlay.py | 1920x1080 transparent PNG | |
| ffmpeg-assembler | normalize.py | PNG → 1080p MP4 |
| pixabay-stock | search_video.py | 500 results |
| pexels-stock | search_video.py | API 503 (transient) |
Technical Constraints
- No ffmpeg drawtext — no freetype. ALL text via Pillow.
- Full binary paths —
/usr/local/bin/{ffmpeg,python3.12,sag} - File uploads —
MEDIA:/path/to/filein agent replies - Normalize clips — 1920x1080@30fps before assembly
- Roger voice only —
CwhRBWXzGAHq8TQ4Fs17 - Runway ML broken — expired. Pexels + Pixabay only.
Workspace Map
~/.openclaw/workspace-video/
├── SOUL.md, IDENTITY.md
├── config/{technical_notes,style_guide,demo_context}.md
├── pexels-stock/ # Stock footage
├── pillow-video-cards/ # Text graphics
├── ffmpeg-assembler/ # Video assembly
├── pixabay-stock/ # Backup stock
├── youtube-upload/ # YouTube API (tested)
├── assets/{stock_video,stock_images,music,voiceover}/
└── output/{videos,thumbnails,metadata}/
Changelog
Timeline of setup, configuration, and fixes.
| Date | Change |
|---|---|
| 2026-02-25 | Full wipe and fresh OpenClaw install (v2026.2.25) |
| 2026-02-25 | Configured lobster + video-producer agents with Slack routing |
| 2026-02-25 | API keys migrated from backup (Pexels, Pixabay, ElevenLabs, Anthropic) |
| 2026-02-25 | Custom skills: pexels-stock, pillow-video-cards, ffmpeg-assembler, pixabay-stock |
| 2026-02-26 | Added GEMINI_API_KEY — fixed memory search + unlocked nano-banana-pro |
| 2026-02-26 | Skills 10/51 ready. Full sanity check passed. |
| 2026-02-26 | Docs redesigned: sidebar nav, dashboard landing, separate pages |
| 2026-02-26 | youtube-upload skill built + tested (Testing_Gluthoric channel) |
| 2026-02-26 | GCP project openclaw-yt-2026 created, YouTube OAuth completed (testing@gluthoric.com) |
| 2026-02-26 | ClawHub: installed video-generation (Runway/Luma/Kling/Pika guides) + video-subtitles (Whisper SRT) |
| 2026-02-26 | Pipeline audit: ElevenLabs PASS (3 Roger variants), Pixabay PASS, YouTube PASS, Pexels 503 (their outage) |