Gloss
A local-first, privacy-preserving alternative to Google's NotebookLM with RAG-powered chat using local LLM inference via Ollama.
Overview
Gloss is a local-first desktop application that provides the core experience of Google's NotebookLM without sending your data to the cloud. Add documents to notebooks, build knowledge bases with automatic chunking and vector indexing, and have grounded conversations powered by RAG retrieval and local LLM inference through Ollama.
Key Features
- Per-Notebook Knowledge Bases: Each notebook maintains its own SQLite database with document chunks and HNSW vector index for isolated, focused retrieval.
- Hybrid RAG Search: Combines vector similarity search (HNSW via usearch) with keyword matching for high-quality document retrieval.
- Streaming Chat: Real-time streaming responses from local LLMs with citation links back to source documents.
- Automatic Summaries: Document summaries generated on import to provide quick overviews without reading full content.
- Local-First Privacy: All data stays on your machine. Embeddings computed locally via fastembed, LLM inference via Ollama. Zero cloud dependencies.
- Smart Queue Scheduling: Background processing queue (tauri-queue) handles embedding generation and LLM tasks without blocking the UI.
- Document Management: Import PDFs, text files, and markdown with automatic chunking and metadata extraction.
Technical Architecture
Gloss uses Tauri 2 for its desktop shell with a React frontend. Each notebook is a self-contained SQLite database containing document content, chunk embeddings (HNSW index via usearch), and chat history. The Rust backend handles document processing, embedding generation (fastembed), vector search, and LLM communication (Ollama HTTP API).
Core components:
- Document Processor: Chunks documents with overlap, generates embeddings via fastembed.
- Vector Store: Per-notebook HNSW index (usearch) with hybrid keyword+semantic search.
- Chat Engine: RAG retrieval pipeline feeding context to Ollama for grounded generation.
- Background Queue: tauri-queue manages async embedding and LLM jobs.
Technology Stack
- Desktop Shell: Tauri 2.0, Rust 2021
- Frontend: React 19, TypeScript 5, Vite 7, Tailwind CSS 4, Zustand 5
- Backend: rusqlite (per-notebook), usearch (HNSW vectors), fastembed (embeddings), Ollama (LLM inference)
- Queue: tauri-queue for background job scheduling
Current Status
Phase 1 complete with notebook creation, document import, chunking, embedding, vector search, and streaming chat all functional. Phases 2-4 roadmapped covering audio sources, collaborative features, and advanced retrieval strategies.
Have questions about Gloss?
Try asking the AI assistant! Here are some ideas:
Related Projects
VisionForge
A Tauri 2 desktop app bridging local LLMs with Stable Diffusion through a multi-agent prompt engineering pipeline.
Palisade
A native Linux desktop GUI for managing nftables firewall rules directly—no abstraction layers, no feature loss.
Rust Libraries
A collection of 8 Rust crates for building AI-powered desktop applications—from agent graphs to GPU job queues.