Files
vixy-vision/collector/README.md
Vixy ae2bd94006 Add event collector and MCP query tools
🗄️ 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! 🦊
2025-12-16 16:28:07 -06:00

1.9 KiB

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 events
  • vision_get_event_snapshot(id) - View snapshot
  • vision_annotate_event(id, text, tags) - Add meaning
  • vision_event_stats() - See statistics