Skip to content

imDarshanGK/localmind

Repository files navigation

LocalMind v2.0

Offline AI Assistant - Chat with Your Documents. Privately.

No cloud. No API key. No data leaks. Runs 100% on your machine.

Python FastAPI React Ollama License: MIT SSoC 2026 PRs Welcome


Quick Start · Features · Tech Stack · Contributing · Screenshots


What's New in v2.0

Feature Description
Streaming Responses See AI reply token-by-token in real time
Plugin System Calculator, Word Counter, JSON Formatter, Code Runner, Summarizer
8 Languages English, Hindi, Tamil, Telugu, Kannada, French, German, Spanish
Export Chats Download conversations as Markdown, JSON, or TXT
Session Manager Full CRUD - create, rename, search, delete chat sessions
Settings Panel Temperature, RAG chunks, model, theme, language
Docker v2 Health checks, persistent volumes, nginx reverse proxy
30+ Tests Full pytest suite with mocked Ollama

All Features

Feature Status
Fully Offline (Ollama) Included
PDF / TXT / CSV / DOCX / MD / HTML upload Included
RAG — Chat with Documents Included
Streaming Responses (SSE) Included
Multi-Model (Llama3, Mistral, Phi3, Gemma, DeepSeek) Included
8 UI Languages Included
Chat History (SQLite) Included
Session Manager (CRUD) Included
Session Search Included
Plugin System (6 plugins) Included
Export (MD / JSON / TXT) Included
Settings Panel Included
Docker Compose Included
30+ Tests Included
Zero telemetry Included

🛠 Tech Stack

┌────────────────────────────────────────────────┐
│               LocalMind v2.0                   │
├──────────────┬─────────────────────────────────┤
│  Frontend    │  React 18 + Tailwind + Vite     │
│  Backend     │  Python 3.11 + FastAPI          │
│  AI Engine   │  Ollama (local LLM)             │
│  RAG         │  LangChain + ChromaDB           │
│  Embeddings  │  sentence-transformers (local)  │
│  Database    │  SQLite (100% local)            │
│  Streaming   │  Server-Sent Events (SSE)       │
│  Deploy      │  Docker Compose + nginx         │
│  Testing     │  pytest + TestClient            │
└──────────────┴─────────────────────────────────┘

Quick Start

Option 1 - Docker (Recommended, 3 commands)

# 1. Pull a model (one-time, ~4GB)
ollama pull llama3

# 2. Clone and start
git clone https://github.com/yourusername/localmind.git
cd localmind && docker compose up

# 3. Open browser
open http://localhost:3000

Option 2 - Manual Setup

git clone https://github.com/yourusername/localmind.git
cd localmind

# Backend
cd backend
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
cp ../.env.example ../.env
uvicorn app:app --reload --port 8000

# Frontend (new terminal)
cd frontend
npm install && npm run dev
# Open http://localhost:3000

Prerequisites: Python 3.11+ | Node 18+ | Ollama | Docker

Render Deploy

If you deploy on Render, set the frontend build to use VITE_API_BASE_URL and configure the backend with CORS_ORIGINS.

# backend service envs
OLLAMA_HOST=http://<your-ollama-host>:11434
DEFAULT_MODEL=llama3
CORS_ORIGINS=https://<your-frontend>.onrender.com

# frontend static site envs
VITE_API_BASE_URL=https://<your-backend>.onrender.com/api

The included render.yaml defines a backend web service and a frontend static site for the same repo.


Project Structure

localmind/
├── backend/
│   ├── app.py                    # FastAPI entry point
│   ├── routes/
│   │   ├── chat.py               # /api/chat — streaming + standard
│   │   ├── sessions.py           # /api/sessions — full CRUD
│   │   ├── upload.py             # /api/upload — file indexing
│   │   ├── models.py             # /api/models — Ollama management
│   │   ├── plugins.py            # /api/plugins — 6 built-in plugins
│   │   ├── export.py             # /api/export — MD, JSON, TXT
│   │   └── settings.py           # /api/settings — app config
│   ├── services/
│   │   ├── rag_service.py        # LangChain + ChromaDB RAG
│   │   ├── ollama_service.py     # Ollama + streaming
│   │   └── db_service.py        # SQLite — all CRUD
│   ├── models/
│   │   └── schemas.py           # Pydantic v2 schemas
│   ├── tests/
│   │   └── test_api.py          # 30+ tests
│   ├── requirements.txt
│   └── Dockerfile
├── frontend/
│   ├── src/
│   │   ├── App.jsx               # Root — state, routing
│   │   ├── components/
│   │   │   ├── ChatWindow.jsx    # Messages + streaming + export
│   │   │   ├── Sidebar.jsx       # Sessions + model + language
│   │   │   ├── StatusBar.jsx     # Header toolbar
│   │   │   ├── UploadPanel.jsx   # Drag-drop file upload
│   │   │   ├── PluginsPanel.jsx  # Plugin runner UI
│   │   │   └── SettingsPanel.jsx # Settings form
│   │   └── utils/
│   │       └── api.js            # All backend API calls
│   ├── package.json
│   ├── vite.config.js
│   └── Dockerfile
├── docker-compose.yml
├── .env.example
├── .gitignore
├── README.md
├── CONTRIBUTING.md
└── ROADMAP.md

Plugins

Plugin Description
Calculator Safe math evaluator (supports sqrt, log, sin, etc.)
Summarizer Extractive summary of long text
Word Counter Words, chars, sentences, paragraphs
{} JSON Formatter Validate and pretty-print JSON
Code Runner Run Python snippets in a sandbox
Translator Language detection + translation via LocalMind

Running Tests

cd backend
pip install pytest pytest-asyncio
pytest tests/ -v
# 30+ tests covering: sessions, chat, plugins, upload, export, settings

🤝 Contributing

  1. Fork → Clone → Create branch (git checkout -b feature/your-feature)
  2. Make changes → Write tests → Commit (git commit -m "feat: ...")
  3. Push → Open Pull Request

Issues labeled good-first-issue are perfect for beginners!

Read CONTRIBUTING.md for the full guide.


License

MIT © 2026

If LocalMind helped you, please star the repo. ⭐✨🚀

About

Offline AI assistant - chat with your documents locally. No cloud, no API key, no data leaks. Built with Python + FastAPI + Ollama + LangChain.

Topics

Resources

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors