# 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:** ```bash 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:** ```bash 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 status - `vision_snap(cam_id)` - Get snapshot - `vision_get_events()` - Query motion events - `vision_get_event_snapshot(id)` - View event image - `vision_annotate_event(id, text, tags)` - Add meaning - `vision_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) ```bash 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`: ```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 ```json { "mcpServers": { "vision": { "command": "python3.11", "args": ["/path/to/vixy-vision/mcp/vision_mcp.py"] } } } ``` ## Roadmap - [x] Camera snapshots via HTTP API - [x] RTSP stream support - [x] MCP integration - [x] Motion detection events - [x] Event collector service - [x] 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.*