Local-first AI chat with retrieval-augmented generation.
Your conversations, your documents, your models β all on your machine.
RAGdoll is a desktop chat application that connects to the AI providers you already use while keeping every conversation and document stored locally. It automatically embeds your chat history and uploaded files into a private vector database, then retrieves the most relevant context for every message β no cloud, no telemetry, no subscriptions beyond your own API keys.
- WeasyPrint PDF engine β replaces reportlab as the primary PDF renderer; full CSS layout, custom fonts, page numbers, and header/footer via
@pagerules. reportlab remains as a fallback. - Image embedding β the agent can now fetch images from the web and embed them directly into DOCX, PDF, and HTML documents.
- Smart text-wrap β images float left or right with text wrapping around them. Alignment is auto-detected from the image's aspect ratio (landscape β centre/full, portrait β float right) or controlled explicitly with
,,,. - DOCX floating images β uses native OOXML
wp:anchorelements so Word honours the wrap style correctly. - PPTX & XLSX support β
python-pptxandopenpyxladded for reading and writing PowerPoint and Excel files.
- Dedicated
image-searchskill β triggered only when the user explicitly asks for images or when the File R/W skill needs them for a document. - Four providers: DuckDuckGo (default, no key), Unsplash, Pexels, Pixabay β switchable in plugin settings.
- Dynamic settings fields β API key inputs appear only for the selected provider (
show_ifconditional fields now supported across all plugin settings drawers). - Pre-installed and auto-wired with the File R/W skill.
- Images returned by the agent are rendered as Discord-style thumbnails directly inside the chat bubble β loading skeleton, broken-URL fallback, and
cursor-zoom-inhint. - Click any image to open a full-screen lightbox with backdrop blur, smooth scale animation, and ESC / click-outside to dismiss.
- Two-phase download/install β clicking "Check for updates" no longer downloads immediately. A Download button appears first; progress, download speed (MB/s), bytes transferred, and ETA are shown inline while downloading. After download completes an Install & restart button appears.
- Same rich progress UI in both the top banner and the About settings tab.
/compactslash command β summarises and compresses long conversations to reclaim context window space.- Context-overflow protection β the sidecar now detects token budget exhaustion and auto-compacts before hitting provider limits.
- Universal File Access skill β lets the agent read, search, and index files anywhere on disk.
- Context-menu permission dialogs for File R/W write/delete operations.
- Onboarding polish β correct repo links, white logo on the welcome screen, and a hidden
Ctrl+Shift+F1shortcut to replay onboarding. - 13 RAG performance optimisations β ONNX-accelerated embedder, IVF-PQ index, prompt caching, LRU retrieval cache, semantic dedup, async HTTP pool, SSE compression, staged warm-up, and more.
| π€ Multi-provider | OpenAI, Anthropic, Groq, Google Gemini, Ollama, HuggingFace, OpenRouter |
| π§ Persistent memory | Every message and document is embedded locally with ONNX-accelerated all-MiniLM-L6-v2 |
| π Document ingestion | PDF, DOCX, TXT, CSV, JSON, PPTX, XLSX β drag-drop or attach inline |
| π Document creation | Generate DOCX, PDF, HTML from chat β with images, text-wrap, and styled layouts |
| πΌοΈ Image search | Find freely-licensed images (DDG / Unsplash / Pexels / Pixabay) and embed them in documents |
| π Semantic search | Full memory browser with search, filtering, and per-chunk management |
| π§© Plugins | Install community skills from the RAGdoll Plugins repo |
| π€ Model profiles | Named profiles per provider/model with separate API keys |
| π₯οΈ System tray | Hide to tray, launch on startup, new chat from tray menu |
| π Smart updates | Background check; two-phase download/install with speed & ETA |
| π¨ Theming | Dark / light / system, custom accent colour, font size & density |
| β¨οΈ Keyboard-first | Ctrl+N new chat Β· Ctrl+P switch profile Β· Ctrl+, settings Β· and more |
RAGdoll's skill system is fully plugin-based. All community plugins live in the dedicated plugins repository:
github.com/itz-mune/RAGdoll-plugins
| Skill | Description |
|---|---|
| File R/W | Read, write, diff, and create rich documents (DOCX / PDF / HTML) with image embedding |
| Universal File Access | Index and search files anywhere on your filesystem |
| Image Search | Fetch freely-licensed images from the web; auto-wired with File R/W |
| Web Search | Live web search via DuckDuckGo / SearXNG |
| YouTube Transcripts | Pull transcripts from any YouTube video |
- Open Settings β Plugins.
- Browse the marketplace or paste a plugin URL.
- Click Install β the skill is available immediately in the next chat.
Each plugin is a folder with a manifest.json (name, description, config fields) and a skill.py (a LangChain tool class). See the plugin authoring guide in the plugins repo for a full walkthrough.
Download the latest installer for your platform from the Releases page:
| Platform | File |
|---|---|
| Windows | RAGdoll_0.2.0_x64-setup.exe or _x64_en-US.msi |
| macOS (Apple Silicon) | RAGdoll_0.2.0_aarch64.dmg |
| macOS (Intel) | RAGdoll_0.2.0_x86_64.dmg |
| Linux | RAGdoll_0.2.0_amd64.AppImage or _amd64.deb |
Latest release: v0.2.0
macOS: If Gatekeeper blocks the app, right-click β Open on first launch.
Windows: RAGdoll requires WebView2. Windows 11 and Windows 10 (post-2021) already include it β the installer will download it automatically on older systems.
Linux: RAGdoll requires
libwebkit2gtk-4.1. Install it with:sudo apt install libwebkit2gtk-4.1-0 # Ubuntu / Debian / Mint sudo dnf install webkit2gtk4.1 # Fedora / RHELAlternatively, use the
.AppImagewhich bundles most dependencies.
| Tool | Version |
|---|---|
| Rust | stable |
| Node.js | 20+ |
| pnpm | 9+ |
| uv | latest |
Windows (PDF support): WeasyPrint requires GTK3 runtime libraries. Install via the GTK3 for Windows runtime installer or via MSYS2:
pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-pango mingw-w64-x86_64-cairo
# 1. Clone
git clone https://github.com/itz-mune/RAGdoll.git
cd RAGdoll
# 2. Install frontend dependencies
pnpm install
# 3. Install Python sidecar dependencies
cd sidecar && uv sync && cd ..
# 4. Run in development mode
pnpm tauri devThe first run downloads and converts the embedding model to ONNX (~1 min, one-time).
pnpm tauri build| Layer | Technology |
|---|---|
| Shell | Tauri v2 (Rust) |
| Frontend | React 19 Β· TypeScript Β· Vite Β· Tailwind CSS v4 |
| Sidecar | Python Β· FastAPI Β· uvicorn |
| AI | LangChain Β· LangGraph |
| Memory | LanceDB Β· ONNX Runtime Β· all-MiniLM-L6-v2 |
| State | Zustand Β· Tauri plugin-store |
| WeasyPrint (primary) Β· reportlab (fallback) | |
| Documents | python-docx Β· python-pptx Β· openpyxl Β· Pillow |
| Packaging | PyInstaller Β· GitHub Actions (Win / macOS / Linux) |
Pull requests are welcome. For major changes please open an issue first.
# Type-check frontend
pnpm tsc --noEmit
# Lint Rust
cd src-tauri && cargo clippySee RELEASING.md for the release workflow.
