Skip to content

feat(demo): mission-control promo video pipeline#195

Open
Mikecranesync wants to merge 3 commits into
mainfrom
feat/mission-control-demo-pipeline
Open

feat(demo): mission-control promo video pipeline#195
Mikecranesync wants to merge 3 commits into
mainfrom
feat/mission-control-demo-pipeline

Conversation

@Mikecranesync

Copy link
Copy Markdown
Owner

Summary

  • Adds a complete 8-tab Playwright → macOS TTS → ffmpeg pipeline for recording promo videos from the live Hub at app.factorylm.com
  • Fixes the Hub login: the "Sign in with password" accordion must be clicked before the password input renders — login.mjs now handles this two-step flow
  • All generated media (.mp4, .webm, .mp3, auth.json) are gitignored

Usage

# One-time login (saves demo/auth.json)
HUB_EMAIL=x HUB_PASSWORD=y node demo/login.mjs

# Record all 8 videos
TTS_PROVIDER=macos bash demo/run_all.sh

# Redo a single tab
node demo/record_tab.mjs 02_dashboard
TTS_PROVIDER=macos python demo/voice.py --tab 02_dashboard
bash demo/sync_tab.sh 02_dashboard

Files

File Purpose
demo/login.mjs One-time Hub login → auth.json
demo/record_tab.mjs Playwright recorder per tab
demo/voice.py macOS/ElevenLabs/OpenAI TTS with --tab arg
demo/sync_tab.sh ffmpeg A/V merge per tab
demo/run_all.sh Orchestrates all 8 tabs
demo/tabs/0N_*/script.md 8 promo scripts with timecodes
apps/mission-control/.gitignore Excludes auth, raw, audio, mp4
apps/mission-control/package.json Playwright dep

Test plan

  • node demo/login.mjsdemo/auth.json exists, contains cookies
  • node demo/record_tab.mjs 01_chat_relaydemo/tabs/01_chat_relay/raw/*.webm recorded
  • TTS_PROVIDER=macos python demo/voice.py --tab 01_chat_relayaudio/full_narration.mp3
  • bash demo/sync_tab.sh 01_chat_relaychat_relay.mp4 exists, plays with voice
  • bash demo/run_all.sh → 8 MP4s in demo/tabs/*/

🤖 Generated with Claude Code

https://claude.ai/code/session_017dDHiiBj9pGgENWREJ4QHh

CharlieNode and others added 3 commits June 7, 2026 22:04
…ev skill

- install-node.sh: accept cluster node name (arg/env/hostname), bake
  JARVIS_MACHINE_NAME into the launchd plist + systemd unit so each node
  self-identifies (CHARLIE/ALPHA/BRAVO/...). Bump systemd RestartSec 3->5.
- jarvis_dev.py: send Authorization: Bearer $JARVIS_TOKEN on /shell calls
  to remote nodes (was unauthenticated -> 401 against token-gated nodes).

Verified: CHARLIE node live under launchd, tailnet-only bind, token auth
enforced (401 unauth / 200 authed), KeepAlive respawn confirmed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
8-tab Playwright recorder → macOS TTS → ffmpeg merge pipeline for
generating standalone MP4 promos from the live Hub at app.factorylm.com.

- demo/login.mjs: one-time Hub login; fixed two-step password accordion
  (click "Sign in with password" before password input renders)
- demo/record_tab.mjs: per-tab UI recorder driven by script.md timecodes
- demo/voice.py: TTS narration generator with --tab arg for per-tab audio
- demo/sync_tab.sh: ffmpeg A/V merge per tab
- demo/run_all.sh: orchestrates all 8 tabs end-to-end
- demo/tabs/01_chat_relay … 08_hub/script.md: 8 promo scripts
- apps/mission-control/.gitignore: exclude auth.json, raw/, audio/, *.mp4
- apps/mission-control/package.json: playwright ^1.61.1 dep

Usage: doppler run … -- node demo/login.mjs
       TTS_PROVIDER=macos bash demo/run_all.sh

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017dDHiiBj9pGgENWREJ4QHh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant