Why
Manual testing of the bridge switcher (#1.3) needs two live bridges. Today's docker-compose.yml runs only one mosquitto + z2m-bridge + seeder stack, so end-to-end multi-bridge flows can't be exercised locally.
What
- Extend
docker-compose.yml with a second stack:
mosquitto-2 (port 1884)
z2m-bridge-2 (WebSocket port 8081, auth token shellbee-integration-token-2)
seeder-2 (control plane on port 8766)
- Make the seeder accept env vars to differentiate fixtures (e.g.
SEED_FIXTURE_SET=alt) so the second bridge has a visually distinct device list — different friendly names, different device types, different signal strengths.
- Document the dual setup in
CLAUDE.md ("Mock Z2M bridge for testing" section) including the URLs, tokens, and control plane ports.
Files
docker-compose.yml
docker/seeder/ — fixture selection via env var.
CLAUDE.md — dual-bridge testing docs.
Verification
docker-compose up brings both bridges online without port clashes.
- App can save and switch between
localhost:8080 and localhost:8081. Each shows distinct devices.
- Both control planes (
http://localhost:8765/ and http://localhost:8766/) are accessible and drive their respective bridges only.
Phase
Phase 1 of multi-bridge support. Independent — can land before #1.3 to enable testing.
Why
Manual testing of the bridge switcher (#1.3) needs two live bridges. Today's
docker-compose.ymlruns only one mosquitto + z2m-bridge + seeder stack, so end-to-end multi-bridge flows can't be exercised locally.What
docker-compose.ymlwith a second stack:mosquitto-2(port 1884)z2m-bridge-2(WebSocket port 8081, auth tokenshellbee-integration-token-2)seeder-2(control plane on port 8766)SEED_FIXTURE_SET=alt) so the second bridge has a visually distinct device list — different friendly names, different device types, different signal strengths.CLAUDE.md("Mock Z2M bridge for testing" section) including the URLs, tokens, and control plane ports.Files
docker-compose.ymldocker/seeder/— fixture selection via env var.CLAUDE.md— dual-bridge testing docs.Verification
docker-compose upbrings both bridges online without port clashes.localhost:8080andlocalhost:8081. Each shows distinct devices.http://localhost:8765/andhttp://localhost:8766/) are accessible and drive their respective bridges only.Phase
Phase 1 of multi-bridge support. Independent — can land before #1.3 to enable testing.