[add] README.md [add] backend/libraries/punk/library.json [add] backend/libraries/punk/stage/19f1e5d2ceaab5fd1f1dc58ff07422388f156610d16dfdea2bdb35a5b9e70813--GeorgeJordac-TheVoiceOfHumanJustice.pdf [add] backend/libraries/punk/stage/85fce554ff7685f7bccb136aff5768e54b9ba8361672fe45dbce599598c4be4b--4_Strings_-_Take_Me_Away_Into_The_Night_Vocal_Radio_Mix_.mp3 [add] backend/libraries/punk/stage/e816ca61aebd84159747d248fedd6d5ff318c471c36bcc31b1ac6bf9aebcd3c1--The_Evolution_of_Cooperation_Robert_Axelrod_liber3.pdf [add] backend/local_rag.py [add] backend/rag/__init__.py [add] backend/rag/corpus_builder.py [add] backend/rag/corpus_enricher.py [add] backend/rag/index_builder.py [add] backend/rag/unified_rag.py [add] dist/assets/index-Cc0DLWqA.css [add] dist/assets/index-DKAz6gtp.js [add] dist/index.html [add] src/LibraryManager.jsx [add] wheelcheck2117/pydantic-2.11.7-py3-none-any.whl [add] wheelcheck274/pydantic-2.7.4-py3-none-any.whl [change] backend/main.py [change] backend/requirements.txt [change] backend/schemas.py [change] electron/main.cjs [change] electron/preload.cjs [change] package.json [change] run.sh [change] src/App.jsx [change] src/InterfaceSettings.jsx [change] src/colorSchemes.js [change] src/main.jsx [change] src/styles.css
2.4 KiB
2.4 KiB
Heimgeist
Heimgeist is a local desktop chat client for Ollama. It combines an Electron + 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 Electron
- 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 and folders
- build, enrich, and index library content
- mark one library as active for chat context
- open or remove registered files from the UI
When a chat library is active, Heimgeist queries it before sending a message and appends the returned context block to the prompt.
Stack
- Frontend: Electron, 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://localhost:8888
Quick start:
./run.sh
This creates or refreshes backend/.venv, installs Python dependencies, installs npm dependencies, and starts the dev stack.
Manual startup:
python3.13 -m venv backend/.venv
backend/.venv/bin/python -m pip install -r backend/requirements.txt
npm install
npm run dev
Project Layout
.
├── backend/
│ ├── main.py
│ ├── local_rag.py
│ ├── rag/
│ ├── websearch.py
│ ├── ollama_client.py
│ ├── models.py
│ ├── database.py
│ ├── schemas.py
│ └── requirements.txt
├── electron/
│ ├── main.cjs
│ └── preload.cjs
├── src/
│ ├── App.jsx
│ ├── LibraryManager.jsx
│ ├── GeneralSettings.jsx
│ ├── InterfaceSettings.jsx
│ ├── WebsearchSettings.jsx
│ ├── markdown.js
│ ├── colorSchemes.js
│ └── styles.css
├── package.json
├── run.sh
└── vite.config.js