Smolibot is a minimalist local AI chatbot powered by lightweight language models.
It can read documents, analyze images with OCR, and interact in multiple modes — all without needing an internet connection.
Your data stays entirely local.
say Hi! to Smolibot and enjoy
- 🧠 Tiny LLMs: Uses small language models like TinyLLaMA or SmolLm2 for fast, low-resource conversations.
- 📄 Document Context: Upload a PDF and chat with its content.
- 🖼️ Image Context (Description + OCR): Describe images with Moondream and Extract text from images using local OCR (EasyOCR).
- 🎭 Chat Modes: Choose from modes like Friendly, Expert, Playful, or Sarcastic for different conversation styles.
- 💾 Session History: Recent chats persist across tabs (but reset with each session).
- 🔐 Local & Private: Runs fully offline in Docker, no cloud or external APIs.
Prerequisites
- Docker & Docker Compose
- Python 3.9+
- Modern browser (for frontend)
git clone https://github.com/jeanmilpied/smolibot.git
cd smolibot
docker-compose up --build
Once running, open your browser to http://localhost:3000
- Type your question in the input box.
- Choose a mode and model from the header.
- View and switch between recent conversations on the sidebar.
- Click the upload icon.
- Only PDF files are supported.
- Smolibot will use document content as context in future prompts.
- Switch to image mode.
- Upload image file.
- Click "Add image in the chat" to run Image Description and OCR using EasyOCR.
- Frontend: React + TailwindCSS
- Backend: FastAPI
- Image description VLM: Moondream
- OCR: EasyOCR (local)
- LLM: TinyLLaMA, SmolLm2 via Ollama
- Containerized: Docker & Docker Compose
Contributions are welcome! Feel free to submit a PR or open an issue.