Star 历史趋势
数据来源: GitHub API · 生成自 Stargazers.cn
README.md
App Icon

Rikkahub

Rikkahub is a native Windows LLM client with multi-provider switching for conversations 🤖💬

— also runs on Linux (native binary or Docker).

Reconstructed on top of Android edition of Rikkahub by RE.

简体中文 | 繁體中文 | English

🚀 Download

Grab the latest installer from the Releases page and double-click Rikkahub_X.X.X_x64-setup.exe. The wizard:

  • Asks where to install the program (default: %LOCALAPPDATA%\Rikkahub\, no admin rights required)
  • Asks where to keep your data — conversations, settings, uploaded files (default: <install dir>\pc-data\; freely movable later from the in-app settings)
  • Ships a WebView2 bootstrapper so the app works on any Win10 1809+ / Win11 machine, even without WebView2 pre-installed

Uninstall via Windows "Apps & features". pc-data/ is yours — back it up if you care.

No telemetry, no admin, no cloud account required. Everything is local.

Prefer no installer? Each release also ships a portable .zip — unzip and run, nothing else needed.

On Linux? Each release ships a portable .tar.gz (binary + frontend, unzip and run). Prefer a native distro package, or building from source / running Docker? See Community packages, Linux binary and Docker below.

📦 Community packages

Beyond the official tar.gz, the community maintains native packages for several Linux distributions. These are maintained by their respective authors, not this project, and may lag behind the latest release — for packaging issues please report upstream to the maintainer.

DistributionHow to installMaintainer
Debian / Ubuntu / Mint.deb from the Releases page or Cloud drivesudo apt install ./rikkahub-pc_*_amd64.deb@Noah0932
Arch / Manjaro.pkg.tar.zst from the Releases page or Cloud drivesudo pacman -U rikkahub-pc-*-x86_64.pkg.tar.zst@Noah0932
NixOS / Nixnur.repos.af-nur.rikkahub-desktop (Built from source, recommended to use the binary cache af-nur.cachix.org)
nur.repos.af-nur.rikkahub-desktop-bin (Synchronized with binary builds from Releases)
@AstralFlare-owo

Many thanks to both for covering these distributions.

✨ Features

  • 🎨 Multiple theme palettes (Claude / RikkaHub / Mono / Custom) + 🌙 dark mode
  • 🐧 Runs on Linux too — self-contained native binary or multi-arch Docker image (amd64 / arm64)
  • 🔄 Multi-provider support: OpenAI / Anthropic / Google Gemini + any OpenAI-compatible endpoint
  • 🦙 Local model support via Ollama / LM Studio / llama.cpp server — just point an OpenAI-compatible provider at http://localhost:11434/v1
  • 🖼️ Multimodal input: image, PDF, DOCX, PPTX, EPUB, plain text
  • 🛠️ MCP (Model Context Protocol) Streamable HTTP support
  • 📝 Markdown rendering with code highlighting, LaTeX formulas, tables, Mermaid diagrams
  • 🪾 Message branching, regeneration, per-branch model switching
  • 🔍 17 web-search engines: Tavily, Exa, Brave, Perplexity, Bocha, 智谱, 秘塔, Firecrawl, Grok, Ollama, Jina, SearXNG, custom JS, …
  • 🧠 Per-assistant or global memory tool, plus recent-chat awareness and a time-gap reminder
  • 🧩 Prompt template variables (model name, current time, locale, device info, …)
  • 🤖 Multiple customizable assistants with their own system prompts, prompt injections, world books, quick messages
  • 🛠️ Granular per-model configuration: manually add models, set custom request headers / custom request bodies / provider overwrite (per-model baseUrl + API Key)
  • 🎨 Image generation: gpt-image-2, DALL·E 3, Imagen, Qwen-Image, FLUX, …
  • 🎙️ TTS and ASR via system speech (Windows SAPI / Linux espeak-ng), OpenAI, Gemini, Qwen, Groq, MiniMax, MiMo
  • 📥 One-click import from Android .zip backups: conversation history, settings, attachments, Skills, MCP, prompt injections, world books, quick messages
  • 📤 WebDAV and S3-compatible cloud backup, plus JSON import/export
  • 📊 Request log and usage statistics with a daily activity heatmap

💎 Sponsors

The following organizations sponsor Rikkahub's ongoing development. Our thanks to them.

钠API 钠API
One-stop access to 100+ top global models — ChatGPT, Claude, Gemini and more — with competitive pricing and superior stability.

🏗️ Build from source

Building the installer locally requires the following — for developers only:

  • Bun 1.1+
  • Rust toolchain (stable, MSVC target — picked automatically by rustup on Windows)
  • Visual Studio Build Tools 2022 with the "Desktop development with C++" workload (provides MSVC linker + Windows SDK)
# 1. Compile the embedded backend (Bun --compile → single Windows exe)
cd pc-server
bun run compile

# 2. Copy the freshly compiled sidecar to where Tauri expects it
cp ../dist/rikkahub-pc.exe ../web-ui/src-tauri/binaries/rikkahub-server-x86_64-pc-windows-msvc.exe

# 3. Build the SPA, Tauri shell, and NSIS installer in one go
cd ../web-ui
bun install
./src-tauri/tauri-msvc.cmd build --bundles nsis

The shipped installer lands at dist/Rikkahub_X.X.X_x64-setup.exe. The wrapper tauri-msvc.cmd activates the MSVC environment and uses an ASCII-only CARGO_TARGET_DIR to work around two Windows quirks (Git Bash's link.exe conflict and the project path containing non-ASCII characters).

Dev workflow

# Backend on http://localhost:8080
cd pc-server
bun run server.ts

# Vite dev server on http://localhost:5173 (proxies /api to :8080)
cd ../web-ui
bun run dev

For frontend-only iteration just open http://localhost:5173 in any browser — the custom titlebar auto-hides outside the Tauri shell so the SPA stays usable.

Smoke test

cd pc-server
bun run smoke:request-chain

Spins up mock provider / MCP / WebDAV / S3 servers and exercises the full request chain.

Linux binary

Build a self-contained Linux x64 binary (requires only Bun):

# 1. Build the SPA
cd web-ui && bun install && bun run build

# 2. Compile the server binary
cd ../pc-server && bun run compile:linux
# → dist/rikkahub-pc

Run it:

./dist/rikkahub-pc
# Open http://localhost:8080 in your browser
# Data is stored in ./pc-data/

Required system packages — install before using the relevant features:

PackageFeature
espeak-ngSystem TTS (text-to-speech tool, voice playback)
xclip (X11) or wl-clipboard (Wayland)Clipboard read/write tool
unzip, zipBackup restore / skill import from ZIP

On Debian/Ubuntu: sudo apt install espeak-ng xclip unzip zip
On Fedora/RHEL: sudo dnf install espeak-ng xclip unzip zip

Missing tools are detected at startup and listed as warnings — the server still starts and all other features remain available.

Docker

A multi-arch image can be built from the included Dockerfile:

docker build -t rikkahub-pc .

Run with persistent data:

docker run -d \
  --name rikkahub \
  -p 8080:8080 \
  -v ./pc-data:/app/pc-data \
  -e RIKKAHUB_PASSWORD=your-password \
  rikkahub-pc

Then open http://localhost:8080 in your browser. The image uses distroless/base-debian12 and bundles unzip/zip; clipboard and TTS are not available inside a headless container.

Set RIKKAHUB_PASSWORD (or pass --password <password>) whenever the server is reachable beyond your own machine — the container binds 0.0.0.0, so without a password anyone on the same network can read your conversations and API keys. With a password set, the web UI shows an unlock prompt and every API request requires the issued access token. The desktop app binds 127.0.0.1 and does not need this.

Security note for LAN / public deployments: the AI's scrape_web tool fetches whatever URL the model asks for from inside the container — a prompt-injected web page can steer it into probing internal services or cloud metadata endpoints (SSRF). If that matters in your network, isolate the container's network or restrict its egress.

Reverse proxy (nginx)

Two things matter when putting RikkaHub behind a reverse proxy (e.g. for HTTPS):

  • Host passthrough — the server rejects state-changing requests whose Origin header doesn't match the request Host (CSRF protection). A default proxy_pass rewrites Host to the upstream address, so every POST/DELETE fails with 403 — "the page loads but nothing saves". Forward the original host with proxy_set_header Host $host.
  • Streaming — SSE responses carry X-Accel-Buffering: no, which makes nginx disable response buffering for them automatically; proxy_buffering off is only a fallback for proxies that ignore the header.
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 443 ssl;
    server_name rikka.example.com;
    # ssl_certificate ...; ssl_certificate_key ...;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;              # keep the Origin/Host CSRF check working
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;   # WebSocket (voice input)
        proxy_set_header Connection $connection_upgrade;
        proxy_buffering off;                      # fallback; SSE already sends X-Accel-Buffering: no
        proxy_read_timeout 1h;                    # long-lived SSE / generation streams
        client_max_body_size 0;                   # backup restore uploads can be hundreds of MB
    }
}

Set RIKKAHUB_PASSWORD whenever the proxy makes the server reachable beyond localhost.

🧰 Tech stack

🙏 Credits

This project is a Windows port built on top of the product design, brand, and concepts of RikkaHub by @re-ovo.

⭐ Star History

If Rikkahub is useful to you, please give it a star ⭐

Star History Chart

📄 License

License

FriendLink

LinuxDo

关于 About

RikkaHub is an PC application that supports for multiple LLM providers.

语言 Languages

TypeScript96.7%
CSS1.5%
NSIS0.9%
Rust0.8%
Dockerfile0.1%
Batchfile0.0%
Shell0.0%

提交活跃度 Commit Activity

代码提交热力图
过去 52 周的开发活跃度
754
Total Commits
峰值: 196次/周
Less
More

核心贡献者 Contributors