4.0 KiB
Heimgeist
Heimgeist is a local desktop chat client for Ollama. It combines a Tauri + React renderer with a FastAPI backend, stores chat history in SQLite, supports optional SearXNG-backed web search, and can enrich prompts with context from local library indexes.
Features
- Local desktop chat UI with Tauri
- Ollama-backed chat with streaming and non-streaming replies
- Persistent chat sessions and automatic title generation
- Edit-and-regenerate flow for earlier user messages
- Optional web search enrichment with source chips
- Local library management for RAG-style prompt enrichment
- Theme selection and UI scale controls
Local Libraries
The DBs tab is no longer a placeholder. You can:
- create and rename libraries
- register files
- let Heimgeist rebuild retrieval automatically when files change
- open or remove registered files from the UI
When files are added or removed, Heimgeist automatically rebuilds the local RAG pipeline for that database: corpus, enrichment, embeddings, and indexes. In the chat composer, you can select which database the current chat should use. For each chat turn, Heimgeist queries the selected database, turns the top results into a local context block, appends that block to the user prompt, and sends the enriched prompt to Ollama.
Local Data
Heimgeist stores chat history and local library indexes on the local machine. During development, the backend keeps using backend/app.db and backend/libraries so existing local data remains available.
Packaged Tauri builds should launch the backend with app-managed data paths so chats and local libraries live under the operating system's normal application data location, such as Application Support on macOS, LocalAppData on Windows, or the XDG data directory on Linux. These paths are managed by the app and are not exposed as normal user settings.
Stack
- Frontend: Tauri, React, Vite
- Backend: FastAPI, SQLAlchemy, SQLite
- Search enrichment: SearXNG + page fetching/reranking
- Local RAG pipeline: corpus build, enrichment, embedding, and retrieval helpers under
backend/rag/
Development
Requirements:
- Node.js 18+
- Python 3.13
- Ollama running locally
- Optional: SearXNG on
http://127.0.0.1:8888
Quick start:
./run.sh
This creates or refreshes backend/.venv, installs Python dependencies, installs npm dependencies, and starts the dev stack.
On Linux x86_64, run.sh now selects a PyTorch flavor before installing openai-whisper:
- Steam Deck / SteamOS and other non-NVIDIA Linux hosts default to CPU-only PyTorch, which avoids downloading NVIDIA CUDA runtime wheels that Whisper does not need there.
- NVIDIA Linux hosts keep the default PyTorch install path.
- Override with
HEIMGEIST_TORCH_FLAVOR=default,HEIMGEIST_TORCH_FLAVOR=cpu, orHEIMGEIST_TORCH_FLAVOR=rocm6.4. - Use
HEIMGEIST_TORCH_INDEX_URL=...if you need a custom PyTorch wheel index.
Manual startup:
python3.13 -m venv backend/.venv
backend/.venv/bin/python -m pip install --upgrade pip
# Steam Deck / SteamOS / CPU-only Linux:
# backend/.venv/bin/python -m pip install --index-url https://download.pytorch.org/whl/cpu torch
backend/.venv/bin/python -m pip install -r backend/requirements.txt
npm install
npm run dev
File Tree
.
├── backend/
│ ├── main.py
│ ├── local_rag.py
│ ├── rag/
│ ├── websearch.py
│ ├── ollama_client.py
│ ├── models.py
│ ├── database.py
│ ├── paths.py
│ ├── schemas.py
│ └── requirements.txt
├── src-tauri/
│ ├── src/main.rs
│ ├── tauri.conf.json
│ └── capabilities/
├── src/
│ ├── App.jsx
│ ├── LibraryManager.jsx
│ ├── GeneralSettings.jsx
│ ├── InterfaceSettings.jsx
│ ├── WebsearchSettings.jsx
│ ├── markdown.js
│ ├── colorSchemes.js
│ └── styles.css
├── package.json
├── run.sh
└── vite.config.js