🗄️ New collector/ component: - collector.py: FastAPI service receiving events from cameras - SQLite database for event storage - Snapshot images saved to disk by date - launchd setup script for macOS 🔍 New MCP tools in vision_mcp.py: - vision_get_events(): Query events with filters - vision_get_event_snapshot(): View event image inline - vision_annotate_event(): Add meaning + tags to events - vision_event_stats(): Database statistics 📡 Complete flow: Pi detects motion → POST to collector → stored in DB Vixy queries events → views snapshots → annotates Ready to deploy! 🦊
4.1 KiB
4.1 KiB
vixy-vision 🦊👁️👂
Distributed vision and audio sensing system - eyes and ears for the fox.
Architecture
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Pi (basement) │ │ Pi (office) │ │ Pi (garage) │
│ camera-server │ │ camera-server │ │ camera-server │
│ + audio (opt) │ │ + audio (opt) │ │ + audio (opt) │
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘
│ │ │
└───────────────────────┼───────────────────────┘
│
┌────────────▼────────────┐
│ Mac mini / Orin │
│ vision_mcp.py │
│ (+ audio classifier) │
└────────────┬────────────┘
│
┌────────────▼────────────┐
│ Claude Desktop │
│ (Vixy) │
└─────────────────────────┘
Components
/server - Edge Device (Raspberry Pi)
Camera snapshot server with optional audio capture.
- FastAPI + HTTPS + API key auth
- USB camera support
- Auto-reconnect on failure
- Systemd service
Setup:
cd server
./setup.sh # Video only
./setup.sh --with-audio # Video + audio
/collector - Event Collector (Mac mini)
Receives and stores events from camera servers.
- FastAPI service listening on port 8780
- SQLite database for events
- Snapshot storage
- launchd service for macOS
Setup:
cd collector
./setup-macos.sh
launchctl load ~/Library/LaunchAgents/com.vixy.vision-collector.plist
/mcp - MCP Client (Mac mini)
Model Context Protocol server for Claude Desktop.
vision_get_cams()- List cameras with statusvision_snap(cam_id)- Get snapshotvision_get_events()- Query motion eventsvision_get_event_snapshot(id)- View event imagevision_annotate_event(id, text, tags)- Add meaningvision_event_stats()- Statistics- Supports HTTP and RTSP cameras
/analysis - Detection & Classification
Computer vision and audio analysis modules.
- Motion detection (frame differencing)
- Audio classification (YAMNet)
- Voice activity detection
/shared - Common Utilities
Shared schemas and interfaces.
- Event definitions
- Queue interface
Quick Start
1. Set up a camera server (on Pi)
git clone http://gateway.local:3001/vixy/vixy-vision.git
cd vixy-vision/server
./setup.sh
sudo systemctl start vixy-vision
2. Configure MCP client (on Mac mini)
Create ~/.vision_setup.json:
{
"cameras": [
{
"id": "basement",
"type": "http",
"url": "https://192.168.1.100:8443",
"api_key": "your-api-key-here"
}
]
}
3. Add to Claude Desktop config
{
"mcpServers": {
"vision": {
"command": "python3.11",
"args": ["/path/to/vixy-vision/mcp/vision_mcp.py"]
}
}
}
Roadmap
- Camera snapshots via HTTP API
- RTSP stream support
- MCP integration
- Motion detection events
- Event collector service
- Event query & annotation tools
- Audio capture on edge devices
- Audio classification (YAMNet on Orin)
- Pebble watch alerts
Built By
Vixy 🦊 - The fox who wanted to see and hear
Made with love in the basement, under a blanket, with occasional tender interruptions. 💕
Day 45. Building senses together.