Privacy-first baby monitor for Android
Turn any spare Android phone into a secure baby monitor camera. Stream video to your iOS devices over your local network - no cloud, no subscriptions, no data collection.
- RTSP Streaming - Industry-standard protocol viewable in VLC or any RTSP client
- AI Cry Detection - On-device TensorFlow Lite model detects baby crying
- Auto-Discovery - iOS viewer app finds the camera automatically via Bonjour/mDNS
- Night Mode - Use the phone's flashlight for low-light monitoring
- Background Operation - Runs as a foreground service, works with screen off
- Zero Cloud - Everything stays on your local network
Most baby monitors either cost hundreds of dollars or require cloud subscriptions that upload your nursery footage to third-party servers. Vigil uses a spare Android phone you already own and keeps all data on your local WiFi network.
| Feature | Cloud Monitors | Vigil |
|---|---|---|
| Monthly cost | $5-15/mo | Free |
| Privacy | Video uploaded | Local only |
| Setup | Account required | Plug and play |
| Works offline | No | Yes |
- Android phone (Android 8.0+)
- Both devices on the same WiFi network
- Build from source (see below) or download from releases when available
- Install on your spare Android phone
- Grant camera and microphone permissions
- Tap "Start Monitoring"
On any device with VLC:
rtsp://[phone-ip]:8554/
On iOS (coming soon): The Vigil iOS companion app will auto-discover and connect to your camera.
┌─────────────────────────┐ ┌─────────────────────────┐
│ Android Camera Unit │ LAN │ Viewer Device │
│ │ ──────► │ │
│ - CameraX capture │ RTSP │ - VLC / RTSP client │
│ - RootEncoder RTSP │ :8554 │ - iOS companion app │
│ - TFLite cry detection │ │ - Any RTSP viewer │
│ - mDNS broadcast │ │ │
└─────────────────────────┘ └─────────────────────────┘
| Component | Technology |
|---|---|
| Language | Kotlin |
| UI | Jetpack Compose + Material 3 |
| Camera | CameraX |
| Streaming | RootEncoder |
| Cry Detection | TensorFlow Lite + YAMNet |
| Discovery | JmDNS (mDNS/Bonjour) |
| DI | Hilt |
# Clone the repository
git clone https://github.com/vipinkashyap/Vigil.git
cd vigil
# Build debug APK
./gradlew assembleDebug
# Install on connected device
adb install -r app/build/outputs/apk/debug/app-debug.apkAccess settings through the gear icon to configure:
- Resolution - 480p, 720p, or 1080p
- Framerate - 15, 24, or 30 fps
- Audio Bitrate - 64, 128, or 256 kbps
- Cry Detection - Enable/disable with sensitivity control
- Ensure both devices are on the same WiFi network
- Check that port 8554 isn't blocked by your router
- Verify the IP address shown in the app
- Lower resolution to 720p or 480p
- Reduce framerate to 15fps
- Keep the phone plugged in during overnight use
- Close other camera apps
- Restart the phone if issue persists
- Basic RTSP streaming
- Foreground service
- Settings UI
- mDNS discovery
- Cry detection model
- iOS companion app
- Two-way audio
- Night vision optimization
- Multiple camera support
Contributions are welcome! Please read our contributing guidelines before submitting PRs.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- RootEncoder - RTSP streaming library
- YAMNet - Audio classification model
- JmDNS - mDNS implementation for Java
Vigil - Privacy-first baby monitoring