An open API service indexing awesome lists of open source software.

https://github.com/ponack/linux-claude-desktop

A lightweight, native Claude AI desktop client for Linux built with Tauri v2 and Svelte 5
https://github.com/ponack/linux-claude-desktop

ai anthropic chatbot claude claude-ai desktop-app linux llm native-app rust svelte tauri

Last synced: about 1 month ago
JSON representation

A lightweight, native Claude AI desktop client for Linux built with Tauri v2 and Svelte 5

Awesome Lists containing this project

README

          


Linux Claude Desktop

Linux Claude Desktop


A lightweight, native Claude AI desktop client for Ubuntu/Linux built with Tauri v2 and Svelte 5.


Latest Release
Downloads
Build Status
Platform
Tauri
Svelte
License

---


Linux Claude Desktop — chat


Streaming chat with syntax highlighting, markdown rendering, and artifacts

---

## Screenshots


Chat view


Streaming chat with markdown rendering, syntax highlighting, and conversation sidebar


Settings — General


Settings — provider, model, system prompt, MCP servers, and more


Settings — Appearance


Appearance — themes, custom CSS, and display options


Settings — Accessibility


Accessibility — font size, high contrast, reduce motion, TTS and STT


Model comparison


Side-by-side model comparison with response grading


Computer Use


Computer Use — Claude controls your desktop with live screenshot feedback


Desktop Extensions


Desktop Extensions — one-click install for popular MCP servers


Command palette


Command palette (Ctrl+P) — jump to any conversation, view, or action

---

## In Action


Theme switching


Theme switching — Appearance settings with live preview


Command palette


Command palette (Ctrl+P) — fuzzy search across all commands and conversations


Model comparison


Side-by-side model comparison

---

## Why?

Anthropic's official Claude Desktop app is available for macOS and Windows, but not Linux. Linux Claude Desktop fills that gap with a native, lightweight alternative that uses the Anthropic API directly.

- **~10MB** binary (vs ~150-500MB for Electron-based alternatives)
- **Native WebKitGTK** rendering (no bundled Chromium)
- **Low memory footprint** (~30-40MB idle vs ~200-300MB for Electron apps)
- **Multi-provider** — Anthropic, OpenAI, Ollama (local models), custom endpoints
- **Your API key, your data** — everything stays local on your machine

## How Does It Compare?

| | LCD | Claude Desktop (Official) | claude-desktop-debian | Chatbox AI | Jan |
|---|---|---|---|---|---|
| **Technology** | Tauri v2 + Rust | Electron | Electron (repackaged) | Electron | Electron |
| **Binary size** | ~10 MB | ~200 MB | ~200 MB | ~100 MB | ~500 MB |
| **RAM (idle)** | ~30-40 MB | ~200+ MB | ~200+ MB | ~150+ MB | ~300+ MB |
| **Linux native** | Yes | No | Unofficial port | Yes | Yes |
| **Multi-provider** | Anthropic, OpenAI, Ollama, Custom | Claude only | Claude only | Multi | Multi |
| **MCP support** | Yes | Yes | Yes | No | Yes |
| **Artifacts** | Yes (6 renderers) | Yes | Yes | No | No |
| **Computer use** | Yes (xdotool + scrot) | macOS only | No | No | No |
| **Desktop Extensions** | Yes (12 MCP servers) | Yes | No | No | No |
| **Embedded terminal** | Yes (PTY shell) | No | No | No | No |
| **Code execution** | Yes (Python/JS/Bash/Ruby) | No | No | No | No |
| **Git panel** | Yes (status/diff/commit) | No | No | No | No |
| **Open source** | MIT | No | Scripts only | GPLv3 | Apache 2.0 |
| **Offline mode** | Yes (queue + retry) | No | No | No | Yes (local models) |
| **Custom themes** | Yes (CSS + presets) | No | No | No | No |
| **Voice TTS/STT** | Yes (spd-say + whisper) | macOS only | No | No | No |
| **Accessibility** | Full (WCAG, high contrast) | Partial | Partial | No | No |
| **Desktop integration** | Global hotkey, tray, DBus, URI handler | Tray | Tray | Tray | Tray |

**LCD is purpose-built for Linux** — not an Electron wrapper or a repackaged Windows app. It uses your system's WebKitGTK for rendering, keeping the binary small and memory usage low.

## Features

- Streaming chat responses in real-time
- Conversation management (create, rename, delete, fork)
- Persistent conversation history (SQLite)
- Multi-provider: Anthropic (Claude), OpenAI-compatible APIs, Ollama (local models), custom endpoints
- Model selection per provider; side-by-side model comparison with response grading
- Cost estimation per conversation with per-model pricing
- Markdown rendering with syntax-highlighted code blocks (copy button, artifact preview)
- AI-generated conversation titles
- Search/filter conversations
- Custom system prompts; prompt library with variable placeholders
- Custom slash commands (run shell scripts from chat)
- Image upload with Claude Vision API; drag-and-drop and clipboard paste
- Screenshot-to-Claude (capture screen region and attach to message)
- Edit messages and regenerate responses
- Light and dark theme; custom CSS with presets (Nord, Solarized, Monokai, Dracula)
- System tray integration (minimize to tray)
- LaTeX/math rendering (KaTeX)
- Keyboard shortcuts (Ctrl+N, Ctrl+K, Ctrl+,, Ctrl+L, Ctrl+P, and more)
- Global hotkey (Super+Shift+C) and quick-ask overlay (Super+Shift+Q)
- Stop generation mid-stream
- Local API key storage
- Artifacts panel (6 renderers: HTML, SVG, React, Mermaid, Markdown, Code) with live editing, versioning, and export
- MCP (Model Context Protocol) tool use
- Project folders with persistent context and per-project settings
- Knowledge base (manual, URL import, file watcher)
- Conversation memory (persistent facts injected into system prompt)
- Export conversations (Markdown/JSON)
- Offline mode (queue messages, auto-retry on reconnect)
- Agent mode (multi-step autonomous task execution)
- Scheduled/recurring prompts
- Auto-update notifications with in-app download and install
- Accessibility: keyboard navigation, high contrast theme, adjustable font size, reduce motion
- Text-to-speech output (`spd-say`/`espeak-ng`) and speech-to-text input (`arecord` + `whisper.cpp`)
- Embedded terminal (`Ctrl+Shift+T`) — real PTY shell (bash/zsh) with "Send to Claude" selection
- Inline code execution — run Python/JS/Bash/Ruby snippets from chat code blocks with output panel
- Git panel (`Ctrl+Shift+G`) — staged/unstaged files, diff viewer, commit/push/pull, "Ask Claude" to send diff to chat
- Plugin system — JS/TS plugins add slash commands, persistent storage, toast notifications, event hooks (`message:before-send`, `response:complete`, etc.), and custom artifact renderers; see [docs/PLUGINS.md](docs/PLUGINS.md)

## Quick Start

1. [Install](#install-pre-built) the app for your distro
2. Launch **Linux Claude Desktop** from your application menu
3. Open **Settings** and choose your provider (Anthropic, OpenAI, or Ollama)
4. Enter your API key (or set Ollama URL for local models)
5. Start chatting

## Install (Pre-built)

Download the latest packages from [Releases](https://github.com/ponack/linux-claude-desktop/releases).

### Ubuntu / Debian

```bash
sudo dpkg -i Linux.Claude.Desktop_*.deb
```

### Fedora / RHEL / openSUSE

```bash
sudo rpm -i Linux.Claude.Desktop-*.rpm
```

### Arch Linux (from source)

```bash
# Install dependencies
sudo pacman -S webkit2gtk-4.1 gtk3 libayatana-appindicator openssl

# Clone and build
git clone https://github.com/ponack/linux-claude-desktop.git
cd linux-claude-desktop
npm install
npm run tauri build

# Install the generated .deb or run the binary directly
./src-tauri/target/release/linux-claude-desktop
```

> **Want an AUR package or Flatpak?** Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md).

### Verify Installation

After installing, launch from your application menu or run:

```bash
linux-claude-desktop
```

## Building from Source

### Prerequisites

- **Node.js** >= 22 (Vite 8 requires `^20.19.0 || >=22.12.0`; recommend 22 LTS)
- **Rust** (install via [rustup](https://rustup.rs/))
- **System libraries** (see distro-specific commands above, or for Ubuntu/Debian):

```bash
sudo apt install -y libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev libssl-dev
```

### Build

```bash
npm install
npm run tauri build
```

This generates `.deb` and `.rpm` packages in `src-tauri/target/release/bundle/`.

## Project Structure

```
linux-claude-desktop/
├── src/ # Svelte 5 frontend
│ ├── App.svelte # Layout: sidebar + main area
│ ├── lib/
│ │ ├── Sidebar.svelte # Conversation list
│ │ ├── Chat.svelte # Message list + input + streaming
│ │ ├── MessageBubble.svelte # Markdown rendering per message
│ │ ├── ArtifactPreview.svelte # Sandboxed HTML/SVG preview
│ │ └── Settings.svelte # Provider, model, themes, plugins config
│ └── styles/global.css # Light/dark theme CSS variables
├── src-tauri/ # Rust backend (Tauri v2)
│ └── src/
│ ├── lib.rs # App state + command registration
│ ├── api.rs # Multi-provider API streaming (SSE)
│ ├── providers.rs # Provider types + Ollama model discovery
│ ├── mcp.rs # Model Context Protocol client
│ └── db.rs # SQLite: conversations, messages, settings
└── assets/ # Logo and branding
```

## Roadmap

### Phase 1 — Polish ✅
- [x] Copy button on code blocks
- [x] Syntax highlighting for code
- [x] AI-generated conversation titles
- [x] Search conversations
- [x] Custom system prompts
- [x] Keyboard shortcuts

### Phase 2 — Feature Parity ✅
- [x] File and image upload (vision API)
- [x] Edit and regenerate messages
- [x] Light/dark theme toggle
- [x] System tray integration
- [x] LaTeX/math rendering

### Phase 3 — Power Features ✅
- [x] Artifacts (sandboxed HTML/SVG preview)
- [x] MCP (Model Context Protocol) support
- [x] Project folders with persistent context
- [x] Export conversations (Markdown/JSON)
- [x] Auto-update mechanism

### Phase 4 — Beyond Official ✅
- [x] Local model support (Ollama)
- [x] Multi-provider support (OpenAI, any OpenAI-compatible API)
- [x] Custom commands / plugin system (slash commands run shell scripts)
- [x] Custom CSS themes with presets (Nord, Solarized, Monokai, Dracula)
- [x] Prompt library/templates

### Phase 4.5 — Polish Pass ✅
- [x] Accessibility (aria-labels, aria-live regions, focus management)
- [x] Active model indicator in chat header
- [x] Settings validation (API keys, URLs)
- [x] Error handling improvements (retry failed sends, surface command errors)
- [x] Preserve partial content on streaming errors
- [x] Professional auto-update system (configurable intervals, download progress, pkexec install, restart)
- [x] About section (version, OS distro, architecture, repo link)

### Phase 5 — Desktop Integration ✅
- [x] Global hotkey to summon app (Super+Shift+C)
- [x] Screenshot-to-Claude (capture region, send via vision API)
- [x] Drag-and-drop file attachments
- [x] Clipboard-aware paste (images)
- [x] Desktop notifications for completed responses
- [x] URI protocol handler (claude://ask?q=...)
- [x] Quick-ask floating overlay window (Super+Shift+Q)
- [x] DBus interface for scripting/automation

### Phase 6 — Workflows & Productivity ✅
- [x] Conversation branching (fork at any message)
- [x] Prompt library/templates with variable placeholders
- [x] Command palette (Ctrl+P)
- [x] Agent mode (multi-step autonomous task execution)
- [x] Scheduled/recurring prompts
- [x] Workspace profiles (per-project API keys, models, prompts)
- [x] Conversation analytics and token usage tracking
- [x] Multi-window support

### Phase 7 — Scale & Reliability ✅
- [x] Conversation pagination / virtual scroll
- [x] Database backup and restore
- [x] Performance profiling and optimization
- [x] Offline mode (queue messages when disconnected)

### Phase 8 — Co-Work (Artifacts) ✅
- [x] Persistent artifacts panel (side panel alongside chat)
- [x] Artifact types (Code, Markdown, Mermaid diagrams, HTML/SVG, React components)
- [x] Live editing with syntax highlighting (CodeMirror 6)
- [x] Iterate with Claude (send artifact state back for modification)
- [x] Multiple artifacts per conversation (tab-based management)
- [x] Artifact versioning (diff between versions, revert)
- [x] Artifact persistence (save to DB, restore on reopen)
- [x] Export artifacts (save to file, clipboard, open in external editor)
- [x] Code splitting (CodeMirror, KaTeX, highlight.js, Mermaid in separate lazy chunks)

### Phase 8.5 — Housekeeping ✅
- [x] Reduce highlight.js bundle (import only common languages — 65% main bundle reduction)
- [x] Lazy-load Mermaid renderer only when mermaid artifacts are opened (already done in Phase 8)
- [x] Add artifact search/filter in the panel
- [x] Keyboard shortcuts for artifact panel (Ctrl+E edit, Ctrl+S save, Ctrl+F search, Alt+1/2/3 tabs)
- [x] Artifact templates (HTML, React, Python, Mermaid, Markdown, SVG)

### Phase 9 — Knowledge & Context ✅
- [x] Context window visualization (progress bar with model-aware token limits)
- [x] Conversation memory (persistent key-value facts injected into system prompt)
- [x] Web page import (fetch URL, strip HTML, store as knowledge)
- [x] Local knowledge base (manual, URL, or file import; project-scoped; enable/disable)
- [x] File watcher (auto-update knowledge entries when watched files change)

### Phase 10 — Multi-Model & Comparison ✅

- [x] Side-by-side model comparison (same prompt to multiple models)
- [x] Model routing rules (auto-select model based on task type)
- [x] Response grading/ranking (rate responses to track model quality)
- [x] Custom model endpoints (add arbitrary OpenAI-compatible providers)
- [x] Cost estimation per conversation (based on model pricing)

### Phase 11 — Voice & Accessibility ✅

- [x] Screen reader support (ARIA landmarks, live regions, `aria-modal`, skip-link)
- [x] Keyboard-only navigation (`:focus-visible` ring, full focus audit)
- [x] High contrast theme (`[data-theme="high-contrast"]`) + auto `prefers-contrast`
- [x] Adjustable font size (11–20px slider, persisted)
- [x] Reduce motion toggle + auto `prefers-reduced-motion`
- [x] Text-to-speech output (`spd-say` / `espeak-ng`, rate control, per-message button)
- [x] Speech-to-text input (`arecord` + `whisper.cpp`, mic button in toolbar)

### Phase 12 — Computer Use & Desktop Extensions ✅

- [x] Computer Use — Claude controls the Linux desktop (click, type, scroll, drag) via xdotool + scrot
- [x] Agentic loop with live screenshot feedback and streaming action log (up to 30 iterations)
- [x] Computer Use model selector (Opus/Sonnet/Haiku) with availability check
- [x] Desktop Extensions catalog — 12 curated MCP servers with one-click install (no JSON editing)
- [x] Extensions install dialog — guided API key / path collection per server
- [x] Installed/Remove badges, Node.js availability check, toast feedback
- [x] `Ctrl+Shift+U` (Computer Use) and `Ctrl+Shift+E` (Extensions) shortcuts

### Phase 13 — Terminal & Developer Tools ✅

- [x] Embedded terminal panel (`Ctrl+Shift+T`) — full PTY shell (bash/zsh) powered by portable-pty and xterm.js, with "Send to Claude" selection
- [x] Code execution sandbox — run Python/JS/Bash/Ruby snippets inline from chat code blocks, with stdout/stderr/timeout output panel
- [x] Git integration (`Ctrl+Shift+G`) — staged/unstaged file list, per-file diff viewer, stage/unstage, commit, push/pull, recent repo picker, "Ask Claude" to send diff to chat

### Phase 14 — Plugin System ✅

- [x] JavaScript ES module plugins loaded from `~/.local/share/linux-claude-desktop/plugins//` — see [docs/PLUGINS.md](docs/PLUGINS.md)
- [x] Settings → Plugins UI: enable/disable, per-plugin console + error display, "Open Plugins Folder" + "Reload" buttons
- [x] Permission-gated `lcd` API: `registerCommand`, `storage` (per-plugin namespaced KV), `notify` (toast), `invoke` (read-only Tauri whitelist), `log`, event bus
- [x] Core event hooks: `message:before-send` (mutable — can rewrite or cancel), `response:chunk`, `response:complete`, `conversation:create`/`delete`, `artifact:create`/`update`
- [x] Custom artifact renderers via `lcd.registerArtifactType` (match by typeName, language, or title extension)
- [ ] Plugin marketplace / registry (future)

## Tech Stack

| Layer | Technology |
|-------|-----------|
| Framework | [Tauri v2](https://v2.tauri.app/) |
| Frontend | [Svelte 5](https://svelte.dev/) |
| Backend | Rust |
| Database | SQLite (via rusqlite) |
| API | [Anthropic](https://docs.anthropic.com/en/api/messages), [OpenAI](https://platform.openai.com/docs/api-reference), [Ollama](https://ollama.com/) |
| Build | Vite |

## Contributing

Contributions are welcome! Feel free to open issues or submit pull requests.

## License

MIT

## Disclaimer

This is an unofficial, community-built client. It is not affiliated with or endorsed by Anthropic. "Claude" is a trademark of Anthropic.