BitCamp 2026 - AI Study Buddy & Room Monitor
This project is a comprehensive solution featuring an M5GO smart device integration, an AI Voice and Vision Backend, and a Svelte frontend dashboard. It connects physical hardware to advanced AI models (Terp AI, ElevenLabs, YOLOv8) to provide a real-time study buddy experience and a study room occupancy monitor.
Project Architecture
1. Website Frontend (/website & Root)
A SvelteKit application providing the user interface for our system.
- Powered by
sv(Svelte CLI) and Bun. - Configured for production deployment via Docker.
Developing:
cd website
bun install
bun run dev --open
2. AI Backend Services (/backend)
A FastAPI backend providing two core capabilities:
- Real-time Voice WebSockets (
/ws/voice): Connects the M5GO device to STT (faster-whisper), an LLM (Terp AI), and TTS (ElevenLabs). It streams audio bytes natively over WebSockets. - Vision Occupancy API (
/api/vision/room-status): Uses YOLOv8 object detection to identify people and chairs in a room image, determining if a study room is fully occupied and pairing the closest person to an available chair.
Developing:
cd backend
pip install -r requirements.txt
uvicorn server:app --host 0.0.0.0 --port 8000
(Requires ffmpeg, libgl1-mesa-glx, and libglib2.0-0 installed on your system)
3. M5GO Device (/m5go)
MicroPython scripts for the M5Stack M5GO device.
- Uses
uwebsocketsto connect to the backend. - High-quality audio I2S configuration for the internal microphone and speaker.
- Push-to-talk integration: Hold Button A to talk to the AI, release to get an audio response back.
Docker Setup
The entire stack can be run via Docker Compose, which builds both the Svelte website and the Python AI Backend.
docker-compose up --build
- Web Frontend: Runs on port
3000 - AI Backend: Runs on port
8000
Configuration
Make sure you set up your .env variables before running the Docker containers or local servers.
Create a .env in the /backend folder:
ELEVENLABS_API_KEY=your_elevenlabs_api_key_here
ELEVENLABS_VOICE_ID=JBFqnCBsd6RMkjVDRZzb
TERP_AI_BEARER_TOKEN=your_jwt_token_here
TERP_AI_CONVERSATION_ID=5e752e56-06c6-ec73-1f13-456029ce1299
Update the /m5go/main.py file to include your Wi-Fi credentials and the correct local IP for the WebSocket (WS_URL).