feat(docker): add Windows WSL2 Docker Desktop support - #14
Open
Gabriel-Ciriaco wants to merge 1 commit into
Open
feat(docker): add Windows WSL2 Docker Desktop support#14Gabriel-Ciriaco wants to merge 1 commit into
Gabriel-Ciriaco wants to merge 1 commit into
Conversation
…1 firmware gRPC routing ### Summary Adds Windows Docker Desktop (WSL2) support to VectorIntelligence while maintaining compatibility with native Linux, native Windows, and Linux Docker deployments. Resolves mDNS multicast bridging under WSL2, fixes gRPC voice stream routing for Vector OS 2.0.1 firmware, adds configurable Whisper model support, and enforces local loopback binding across services. ### Changes #### 1. Native Windows mDNS Reflector (`shared/mdns-reflector.go`) - Docker Desktop on Windows (WSL2) operates behind a virtual network bridge that drops incoming UDP mDNS multicast queries (`224.0.0.251:5353`). - Added a cross-compiled Go binary (`windows-mdns.exe`) built during Docker image creation. - On container startup, `docker-entrypoint.sh` exports `windows-mdns.exe` to `./vector-data/`. Running this binary on the Windows host advertises `escapepod.local -> LAN IP` directly to Vector. - Container-level mDNS is suppressed via `DISABLE_SUPERVISOR_MDNS=true` to prevent container-internal `172.x` IPs from conflicting with host LAN resolution. #### 2. Vector OS 2.0.1 Firmware Compatibility (Port 8084) - Vector OS 2.0.1 firmware streams gRPC voice requests over port **8084** instead of port 443. - Patched `chipper/pkg/initwirepod/startserver.go` in `Dockerfile` to enable both port **443** (OS 1.8) and port **8084** (OS 2.0.1) simultaneously with custom TLS certificates. #### 3. TLS Certificate Paths and Default Config - Fixed relative certificate path resolution (`../certs/cert.key`) in `docker-entrypoint.sh` by symlinking `/root/vector-pod/wire-pod/certs` and `/root/vector-pod/wire-pod/chipper/certs` to `/user-data/certs`. - Updated `shared/config/wirepod-apiConfig.json` defaults (`whisper.cpp`, `epconfig: false`, `pastinitialsetup: true`) for first-run container initialization. #### 4. Configurable Whisper Model - Added `ARG WHISPER_MODEL="base.en"` in `Dockerfile` and `docker-compose.yml`. - Allows switching model size (e.g., `tiny.en`, `base.en`, `small.en`, `medium.en`) using `WHISPER_MODEL=small.en docker compose build --no-cache`. #### 5. Security and Network Scoping - Bound `vector-ai` uvicorn service to `127.0.0.1` loopback in `supervisor.py` to prevent direct external access to port 8090. - Added optional firewall rule cleanup script under `shared/scripts/remove-windows-mdns-rule.ps1`. ### Documentation - Updated `README.md` with Windows Docker Desktop setup steps, WSL2 `networkingMode=mirrored` requirements, `session-certs` transfer notes from native Wire-Pod, optional firewall cleanup steps, Linux `network_mode: "host"` mDNS usage, and `WHISPER_MODEL` customization. ### Testing - Tested on Windows 11 Pro with Docker Desktop (WSL2 Mirrored Mode) on WireOS 3.0.1.32d. - Verified voice recognition, Whisper transcription, Gemma 4 LLM responses, and robot audio/animation playback. - Verified fresh `--no-cache` Docker builds and container restarts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds Windows Docker Desktop (WSL2) support to VectorIntelligence while maintaining compatibility with native Linux, native Windows, and Linux Docker deployments.
Resolves mDNS multicast bridging under WSL2, fixes gRPC voice stream routing for Vector OS 2.0.1 firmware, adds configurable Whisper model support, and enforces local loopback binding across services.
Changes
1. Native Windows mDNS Reflector (
shared/mdns-reflector.go)224.0.0.251:5353).windows-mdns.exe) built during Docker image creation.docker-entrypoint.shexportswindows-mdns.exeto./vector-data/. Running this binary on the Windows host advertisesescapepod.local -> LAN IPdirectly to Vector.DISABLE_SUPERVISOR_MDNS=trueto prevent container-internal172.xIPs from conflicting with host LAN resolution.2. Vector OS 2.0.1 Firmware Compatibility (Port 8084)
chipper/pkg/initwirepod/startserver.goinDockerfileto enable both port 443 (OS 1.8) and port 8084 (OS 2.0.1) simultaneously with custom TLS certificates.3. TLS Certificate Paths and Default Config
../certs/cert.key) indocker-entrypoint.shby symlinking/root/vector-pod/wire-pod/certsand/root/vector-pod/wire-pod/chipper/certsto/user-data/certs.shared/config/wirepod-apiConfig.jsondefaults (whisper.cpp,epconfig: false,pastinitialsetup: true) for first-run container initialization.4. Configurable Whisper Model
ARG WHISPER_MODEL="base.en"inDockerfileanddocker-compose.yml.tiny.en,base.en,small.en,medium.en) usingWHISPER_MODEL=small.en docker compose build --no-cache.5. Security and Network Scoping
vector-aiuvicorn service to127.0.0.1loopback insupervisor.pyto prevent direct external access to port 8090.shared/scripts/remove-windows-mdns-rule.ps1.Documentation
README.mdwith Windows Docker Desktop setup steps, WSL2networkingMode=mirroredrequirements,session-certstransfer notes from native Wire-Pod, optional firewall cleanup steps, Linuxnetwork_mode: "host"mDNS usage, andWHISPER_MODELcustomization.Testing
--no-cacheDocker builds and container restarts.