
# OllaHub
**A desktop chat for your local Ollama models — it scans your hardware, recommends and downloads a model, and
can enrich answers with web search, MCP tools and scheduled tasks, all driven by a Rust (Tauri) backend.**



[Features](#features) · [Install](#install) · [How it works](#how-it-works) · [Limitations](#known-limitations) · [Build](#build-and-run-locally) · [CI/CD](#cicd)
> [!NOTE]
> **Project status:** early (`0.1.0`, 47 commits from 2025-10-27 to 2025-11-27). The setup flow, chat, session
> history, model management, web search, MCP, scheduled tasks and auto-update are implemented. The repository has
> no license file and no automated test script (`package.json` only defines `dev`, `build`, `start`, `lint`,
> `generate-changelog` and `bump-version`). A few settings are placeholders — see
> [Known limitations](#known-limitations).
> [!IMPORTANT]
> **OllaHub is a client for [Ollama](https://ollama.com), not a model runtime.** It talks to the Ollama API
> (default `http://localhost:11434`, configurable in Settings), tries to start it when it is installed but
> stopped, and can download the Ollama installer when it is missing. Chats are stored locally in a SQLite
> database (`ollahub.db` in the app data directory); web search is the part that reaches the internet.
## Features
| Area | What it does |
|---|---|
| **First-run setup** | Hardware scan (CPU, RAM, GPUs), GPU selector and a model recommendation for your specs, then straight into the chat |
| **Chat** | Streaming responses from the Rust backend (`chat_stream`), Markdown with syntax-highlighted code blocks, reasoning/thinking steps, source carousel, message actions, resizable sidebar |
| **Sessions** | Local history in SQLite with FTS5 full-text search, paginated loading, automatic title + emoji for new chats (model-generated, with a fallback to the first words), export of sessions or all data, delete/clear |
| **Models** | List and delete local models, pull with progress (percent, speed), install a `.gguf` file, hardware-aware recommendation |
| **Web search** | Headless Chrome scraping across Google, Bing, Yahoo, DuckDuckGo and Startpage (configurable engine order), categories and custom sites, excluded domains, concurrency/timeout/result limits, semantic query expansion (pt-BR / en / es), engine circuit breaker and failure cache, progressive fallback |
| **Relevance and context** | Local embeddings (`all-MiniLM-L6-v2` via ONNX Runtime) rank and prune scraped content, with a BM25-like fallback when the embedding model is unavailable; chunking, condensation and key-facts extraction are configurable |
| **Deep research** | Multi-step mode: planning → searching → aggregating → validating → formulating |
| **MCP** | Configure servers in a JSON editor (`mcp_config.json`), start/stop/restart them as child processes, list and call their tools from the chat |
| **Scheduled tasks** | Cron-based tasks (`tokio-cron-scheduler`) with three actions — search and summarize, plain notification, custom prompt — persisted in `tasks.json` |
| **System monitor** | CPU/RAM stats and GPU VRAM, usage and temperature dashboards (GPU detection per OS: `wmic`/`nvidia-smi` on Windows, with Linux and macOS paths) |
| **Updates** | Tauri updater with signed releases; the automatic check is on by default |
| **Desktop shell** | Custom title bar, light/dark theme, desktop notifications |
## Install
Installers are produced by the [release workflow](#cicd) for Windows (`msi`), macOS (`dmg`, Apple Silicon and
Intel) and Linux (`AppImage`); see the repository's
[Releases](https://git.evandro.dev.br/evandro/OllaHub/releases). You can also
[build it locally](#build-and-run-locally).
> [!WARNING]
> **Two things the app does on its own.**
> 1. Opening the chat page pulls the small helper model **`qwen2.5:0.5b`** if it is not installed yet (a
> "Baixando modelo de IA" progress appears) — expect an extra download on first use.
> 2. **Closing the window only hides it.** The close request is intercepted (`prevent_close`) so scheduled tasks
> keep running, but the code has no tray icon to bring the window back — the system-tray step is still listed
> as pending in [`IMPLEMENTATION_GUIDE.md`](IMPLEMENTATION_GUIDE.md).
## How it works
```mermaid
flowchart LR
UI["Next.js 16 UI