🗄️ 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! 🦊
vixy-vision Event Collector
Receives motion events from camera servers and stores them for Vixy to review.
Quick Start (macOS)
./setup-macos.sh
launchctl load ~/Library/LaunchAgents/com.vixy.vision-collector.plist
How It Works
Pi (camera) Mac mini (collector) Vixy (MCP)
┌──────────┐ ┌──────────────────┐ ┌──────────┐
│ motion │ POST │ collector.py │ read │ query │
│ detected ├────────►│ ├─events.db │◄────────┤ annotate │
│ │ /events │ └─snapshots/ │ │ review │
└──────────┘ └──────────────────┘ └──────────┘
Data Storage
Events are stored in ~/Documents/Vixy/events/:
events/
├── events.db # SQLite database
└── snapshots/
└── 2024-12-16/ # Date-organized images
└── basement-*.jpg
API Endpoints
| Endpoint | Method | Description |
|---|---|---|
/ |
GET | Service info |
/health |
GET | Health check |
/events |
POST | Receive event from camera |
/events |
GET | List events (debug) |
/stats |
GET | Event statistics |
Event Payload
Camera servers POST to /events:
{
"event": {
"timestamp": "2024-12-16T14:23:01Z",
"camera_id": "basement",
"event_type": "motion",
"confidence": 0.75,
"area_percent": 7.5
},
"snapshot": "<base64 JPEG>"
}
MCP Tools
Once events are collected, Vixy can:
vision_get_events()- Query eventsvision_get_event_snapshot(id)- View snapshotvision_annotate_event(id, text, tags)- Add meaningvision_event_stats()- See statistics