Rachel
Rachel is a local-first personal AI assistant designed to connect language models with software tools and real-world hardware.
It combines a conversational AI interface with a modular backend, local language models, MCP-based tool integration, and a MicroPython-powered hardware layer. The goal is to build an assistant that can do more than generate text: it can interact with services, retrieve information, and control connected devices.
Overview
Rachel runs locally using Ollama and brings together several components:
- AI Backend: A Python and FastAPI service responsible for conversation management, the agent loop, API endpoints, and tool execution.
- Frontend: A Next.js application providing the user interface for conversations, chat history, and tool interactions.
- MCP Integration: Go-based MCP development provides a tool interface through the Model Context Protocol, allowing the assistant to interact with external capabilities.
- Hardware Firmware: MicroPython firmware running on a Raspberry Pi Pico 2 W, enabling communication with sensors, LEDs, relays, and other connected components.
- Local Language Models: Ollama runs the language model locally, handling reasoning, conversation, and tool selection.
Features
- Local AI inference through Ollama.
- Multi-turn conversations with persistent chat history.
- MCP-based tool integration.
- Interaction with connected hardware and home sensors.
- Temperature and humidity readings from a Raspberry Pi Pico.
- LED and relay control.
- Hardware resource monitoring.
- Weather information retrieval.
- A web-based interface with Persian and multilingual conversation support.
Technology Stack
| Component | Technologies |
|---|---|
| Backend | Python, FastAPI |
| Frontend | Next.js, React, TypeScript |
| Database | PostgreSQL |
| ORM & Migrations | SQLAlchemy, Alembic |
| MCP | Go, Model Context Protocol |
| Hardware Firmware | MicroPython, Microdot |
| Hardware | Raspberry Pi Pico 2 W |
| Local AI | Ollama, Qwen3 |
Project Structure
Rachel is organized into separate components, each responsible for a specific part of the system:
- Backend: API, agent logic, conversation storage, and tool execution.
- Frontend: Web interface and user interaction.
- MCP: Tool integration and communication through the Model Context Protocol.
- MicroPython: Firmware and hardware communication.
This separation keeps the application modular and allows its software and hardware components to evolve independently.
Resources
- GitHub: GitHub Repository
Each major component includes its own setup instructions and technical details in the source repository.