Claude-Powered Home Robot
A physical robot built from scratch — voice, eyes, smart home control, and semantic memory
Hero project — fully functional, running in my house
How it works
Built a fully autonomous physical robot from scratch at home. Named Sancho (after Sancho Panza from Don Quixote) — a grounded, practical companion to the AI. Powered by the Claude SDK with voice interaction, animated eyes, smart home control, and persistent semantic memory. Not a demo. It lives in my house and actually runs.
What it does
- Animated eyes — expressive display that reacts to conversation state
- Voice I/O — faster-whisper for local speech-to-text, Piper TTS for offline voice synthesis (no cloud, no latency)
- Real-time chat dashboard — WebSocket-based React + Vite interface for monitoring and interacting with the robot remotely
- Smart home control — natively integrated with Home Assistant to control lights, devices, and automations
- WhatsApp — send and receive messages through the robot
- Web search — live information retrieval when needed
- Music playback — on-device audio control
- Semantic memory — ChromaDB + PostgreSQL hosted on homelab for persistent context across sessions
- Tool auto-discovery — any Python file dropped in the tools directory is automatically registered and available to Claude
Tech stack
- Hardware: Raspberry Pi 5, camera module, sensors, animated display, Osoyoo Flexirover chassis, reverse-engineered Roomba battery
- AI: Claude Sonnet (Anthropic SDK), local models via homelab for lightweight inference
- Backend: FastAPI — handles all hardware interfacing, tool dispatch, and WebSocket streaming
- Frontend: React + Vite — real-time chat and robot status dashboard
- Memory: ChromaDB for semantic vector search, PostgreSQL for structured session data
- Local AI: faster-whisper (STT), Piper (TTS) — fully offline voice pipeline
Why I built it
The challenge of connecting software intelligence to physical action — with real constraints. Not a cloud demo. Every feature has to deal with hardware failure, latency, battery life, and the messiness of real environments. Sancho is where I push against the limits of what the Claude SDK can do when the stakes are physical.