{"skill":{"slug":"videochat-withme","displayName":"Video Chat With Me","summary":"Real-time AI video chat that routes through your OpenClaw agent. Uses Groq Whisper (cloud STT),\nedge-tts (cloud TTS via Microsoft), and OpenClaw chatCompletions API for conversation. Your agent\nsees your camera, hears your voice, and responds with its own personality and memory.\nRequires: GROQ_API_KEY for speech recognition. Reads ~/.openclaw/openclaw.json for gateway port and auth token.\nData flows: audio → Groq cloud (STT), TTS text → Microsoft cloud (edge-tts), camera frames (base64) + text\n→ OpenClaw gateway → your configured LLM provider (may be cloud — frames leave the machine if using a cloud LLM).\nInstalls a persistent launchd service (optional). Trigger phrases: \"video chat\", \"voice call\",\n\"call me\", \"视频一下\", \"语音\", \"打电话给我\", \"我要和你视频\", \"videochat-withme\".","description":"---\nname: videochat-withme\ndescription: |\n  Real-time AI video chat that routes through your OpenClaw agent. Uses Groq Whisper (cloud STT),\n  edge-tts (cloud TTS via Microsoft), and OpenClaw chatCompletions API for conversation. Your agent\n  sees your camera, hears your voice, and responds with its own personality and memory.\n  Requires: GROQ_API_KEY for speech recognition. Reads ~/.openclaw/openclaw.json for gateway port and auth token.\n  Data flows: audio → Groq cloud (STT), TTS text → Microsoft cloud (edge-tts), camera frames (base64) + text\n  → OpenClaw gateway → your configured LLM provider (may be cloud — frames leave the machine if using a cloud LLM).\n  Installs a persistent launchd service (optional). Trigger phrases: \"video chat\", \"voice call\",\n  \"call me\", \"视频一下\", \"语音\", \"打电话给我\", \"我要和你视频\", \"videochat-withme\".\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"🎥\",\n        \"requires\":\n          {\n            \"bins\": [\"python3\", \"ffmpeg\"],\n            \"env\": [\"GROQ_API_KEY\"],\n            \"config\": [\"gateway.http\"],\n          },\n      },\n  }\n---\n\n# videochat-withme\n\nReal-time video call with your OpenClaw agent — full personality, memory, and vision.\n\n## First-Time Setup\n\nNew users run once after installing the skill:\n\n```bash\nbash skills/videochat-withme/scripts/setup.sh\n```\n\nThis handles everything: dependencies, Groq API key, SSL certs, launchd service.\n\n## Prerequisites\n\n- macOS (launchd required)\n- Python 3.10+, ffmpeg\n- OpenClaw gateway running with chatCompletions enabled\n\n### Groq API Key (required for voice recognition)\n\n1. Get a free key at: https://console.groq.com/keys\n2. Save it:\n   ```bash\n   mkdir -p ~/.openclaw/secrets\n   echo \"your-key-here\" > ~/.openclaw/secrets/groq_api_key.txt\n   ```\n   Or set env var: `export GROQ_API_KEY=\"your-key-here\"`\n\n### Enable chatCompletions\n\nAdd to `~/.openclaw/openclaw.json`:\n```json\n{\n  \"gateway\": {\n    \"http\": {\n      \"endpoints\": {\n        \"chatCompletions\": { \"enabled\": true }\n      }\n    }\n  }\n}\n```\nThen restart OpenClaw.\n\n## How to Use (Agent Instructions)\n\nWhen the user requests a video/voice call:\n\n**Step 1: Check if service is running:**\n```bash\ncurl -sk https://localhost:8766/api/config 2>/dev/null || curl -s http://localhost:8766/api/config 2>/dev/null\n```\n\n**Step 2: If no response, setup needed:**\n1. Check Groq key: `cat ~/.openclaw/secrets/groq_api_key.txt 2>/dev/null`\n   - If missing, ask user to get one at https://console.groq.com/keys\n   - Save it: `echo \"key\" > ~/.openclaw/secrets/groq_api_key.txt`\n2. Ask user: \"What name should I display for you in the video call?\"\n3. Run setup:\n   ```bash\n   bash skills/videochat-withme/scripts/setup.sh --auto --agent-name \"YourName\" --user-name \"TheirName\"\n   ```\n\n**Step 3: Initiate the call based on context:**\n\nDetermine how the user is connecting and pick the best method:\n\n1. **User is at the computer** (message from webchat/desktop):\n   ```bash\n   bash skills/videochat-withme/scripts/call.sh\n   ```\n   This pops up a macOS incoming call notification → user clicks Accept → browser opens.\n\n2. **User is on mobile/remote** (message from Telegram/phone):\n   Pick the right URL automatically:\n   ```bash\n   # Prefer Tailscale IP (works from any network)\n   TS_IP=$(tailscale ip -4 2>/dev/null)\n   # Fallback to local IP (same WiFi only)\n   LOCAL_IP=$(python3 -c \"import socket; s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM); s.connect(('8.8.8.8',80)); print(s.getsockname()[0]); s.close()\" 2>/dev/null)\n   ```\n   - If Tailscale is available → send `https://<tailscale-ip>:8766` (works everywhere)\n   - Otherwise → send `https://<local-ip>:8766` (same WiFi only)\n   - Note: first visit requires tapping \"Advanced → Continue\" (self-signed cert)\n\n## Architecture\n\n```\n🎤 Voice → Groq Whisper (STT)\n📷 Camera → base64 frame\n    ↓\nOpenClaw /v1/chat/completions → Your Agent\n    ↓\nedge-tts (TTS) → 🔊 Audio playback\n```\n\n## Scripts\n\n**Agent runs these automatically:**\n\n| Script | When |\n|--------|------|\n| `setup.sh --auto` | First use (service not running) |\n| `call.sh` | Every call request |\n\n**User can run manually if needed:**\n\n| Script | Purpose |\n|--------|---------|\n| `setup.sh` | Interactive setup (without --auto) |\n| `start.sh` | Start service |\n| `stop.sh` | Stop service |\n\n## Configuration\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `GROQ_API_KEY` | (secrets file) | Groq API key for Whisper STT |\n| `PORT` | `8766` | Server port |\n| `AGENT_NAME` | `AI Assistant` | Display name for the agent |\n| `USER_NAME` | `User` | Display name for the user |\n| `SSL_CERT` | (auto-detect) | Path to SSL certificate |\n| `SSL_KEY` | (auto-detect) | Path to SSL private key |\n","tags":{"latest":"1.1.0"},"stats":{"comments":0,"downloads":1801,"installsAllTime":2,"installsCurrent":2,"stars":0,"versions":5},"createdAt":1770873404481,"updatedAt":1779076935064},"latestVersion":{"version":"1.1.0","createdAt":1770877528997,"changelog":"Fix: prevent TTS audio from replaying on every click/keypress","license":null},"metadata":{"setup":[{"key":"GROQ_API_KEY","required":true},{"key":"gateway.http","required":true}],"os":null,"systems":null},"owner":{"handle":"sxu75374","userId":"s1762schg8f2r5tn1g3638wb5h884h61","displayName":"sxu75374","image":"https://avatars.githubusercontent.com/u/72003735?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1779971721984}}