Install
openclaw skills install webchat-https-proxyHTTPS/WSS reverse proxy for OpenClaw WebChat Control UI. Serves the Control UI over HTTPS with TLS cert management, proxies WebSocket connections to the gate...
openclaw skills install webchat-https-proxyStandalone HTTPS/WSS reverse proxy for OpenClaw WebChat Control UI:
ws://127.0.0.1:18789)/transcribe proxy endpoint to local faster-whisper service (same-origin browser auth; optional Bearer fallback)bash scripts/deploy.sh
Or expose on LAN:
VOICE_HOST=10.0.0.42 VOICE_HTTPS_PORT=8443 bash scripts/deploy.sh
This script is idempotent.
bash scripts/status.sh
127.0.0.1 only. Not reachable from other devices unless VOICE_HOST is explicitly set.VOICE_HOST=<LAN-IP> enables trusted LAN access. Re-deploys preserve the existing configured bind host unless you explicitly override VOICE_HOST.VOICE_ALLOWED_ORIGIN). Validated at startup — wildcards (*) and malformed origins are rejected.chmod 600 on TLS key file./transcribe endpoint validates Bearer token against gateway auth token using constant-time comparison (hmac.compare_digest)./transcribe proxy requests (HTTP 413).os.path.realpath) and validates the resolved path stays within the Control UI directory.VOICE_TRANSCRIBE_URL, VOICE_GATEWAY_WS) are validated to point to localhost only. Non-localhost targets are rejected at startup.uninstall.sh to fully revert.| What | Path | Action |
|---|---|---|
| Gateway config | ~/.openclaw/openclaw.json | Adds HTTPS origin to gateway.controlUi.allowedOrigins |
| Systemd service | ~/.config/systemd/user/openclaw-voice-https.service | Creates + enables persistent HTTPS proxy |
| Runtime file | ~/.openclaw/workspace/voice-input/https-server.py | Copies proxy server |
| TLS certs | ~/.openclaw/workspace/voice-input/certs/ | Auto-generated self-signed cert on first run |
bash scripts/uninstall.sh
404 /chat?... → SPA fallback missing in HTTPS proxy.origin not allowed → ensure deploy used correct VOICE_HOST and added matching HTTPS origin to gateway.controlUi.allowedOrigins.token missing → open URL with ?token=... once.pairing required → approve pending device via openclaw devices approve <requestId> --token <gateway-token>.ces approve <requestId> --token <gateway-token>`.