Core services
Joystick
Command runner API for executing device actions
Studio
Media management and event harvesting service
Switcher
Automatic slot switching and stream management
Baker
Scheduled actions and cron job management
Support services
Whisper
SMS gateway for device communication
Panel
Panel UI service for device control
Pocketbase
Database and authentication backend
MediaMTX
Real-time streaming server
Infrastructure
Traefik
Reverse proxy and routing layer
Service communication
All services communicate within theapp-network Docker network. Key integration points:
- Pocketbase - Central database accessed by all services
- MediaMTX - Streaming server accessed via host network
- Joystick - Command execution used by Baker, Switcher, and Studio
- Traefik - HTTP routing for all web services
Common configuration
All services share common Docker Compose configurations:Health monitoring
Most services expose a/api/health endpoint that returns:
Environment variables
Common environment variables across services:PORT- Service port numberPOCKETBASE_URL- PocketBase connection URLSTREAM_API_URL- MediaMTX API URLJOYSTICK_API_URL- Joystick service URLJOYSTICK_API_KEY- API key for inter-service communication
Service dependencies
Services have dependency chains to ensure proper startup order:- Traefik - No dependencies
- MediaMTX - No dependencies
- Pocketbase - No dependencies (but required by others)
- Joystick - Depends on Pocketbase, MediaMTX
- Panel, Baker, Switcher, Whisper, Studio - Depend on Pocketbase, MediaMTX