MCPcopy Index your code
hub / github.com/aaddrick/claude-desktop-debian

github.com/aaddrick/claude-desktop-debian @v3.0.1+claude1.18286.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v3.0.1+claude1.18286.0 ↗ · + Follow
418 symbols 1,390 edges 106 files 38 documented · 9%

Browse by type

Functions 319 Types & classes 99
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Claude Desktop for Linux

This project repackages Claude Desktop for Linux formats Anthropic doesn't ship themselves: .rpm (Fedora/RHEL), distribution-agnostic AppImages, a Nix flake for NixOS, and an AUR package for Arch.

On 2026-06-30 Anthropic shipped a first-party Claude Desktop for Linux beta, distributed as a .deb (amd64 and arm64) from their own APT repository. Since v3.0.0, this project repackages that official Linux .deb. It no longer repackages the Windows installer.

The official .deb covers one packaging target. What it leaves out is a long tail of distros, desktops, and session types — catalogued from this project's own issue history in the reported-environments survey. That long tail is what this project serves, plus a launcher and a --doctor for the Linux environment quirks. The Installation section lays out what's ours and what's upstream.

Note: This is an unofficial repackaging project. For official support, visit Anthropic's website. For issues with the packaging or the Linux launcher, please open an issue here.

Documentation: Full docs at docs/index.md. Release history in CHANGELOG.md. Contributing: CONTRIBUTING.md. Security reports: SECURITY.md.


Features

  • Official app, extra formats: repackages Anthropic's official Linux .deb into .rpm, AppImage, and AUR builds.
  • MCP support: full Model Context Protocol integration. Config lives at ~/.config/Claude/claude_desktop_config.json (see Configuration).
  • Launcher for Linux quirks: opt-in native Wayland (CLAUDE_USE_WAYLAND=1), GPU-crash auto-recovery, XRDP detection, IM-module override, and autostart-entry healing.
  • --doctor diagnostics: checks the display server, sandbox permissions, MCP config, stale locks, the KVM/Cowork stack, and official-version drift.
  • Cowork on Linux: runs when KVM (hardware virtualization) is available. The doctor reports readiness.
  • System integration: global hotkey (Ctrl+Alt+Space) on X11 and Wayland, system tray, and desktop-environment integration.

Screenshots

Claude Desktop running on Linux

Global hotkey popup

Installation

Anthropic serves the .deb. We serve everything else. Since v3.0.0 our packages are named claude-desktop-unofficial, so they install side-by-side with Anthropic's official claude-desktop — but both share ~/.config/Claude, so only one can run at a time. Here's the split:

Format Who serves it
.deb (Debian/Ubuntu, amd64 + arm64) Anthropic's official APT repo. Ours mirrors it as claude-desktop-unofficial (launcher + doctor added), so it can sit beside the official package.
.rpm (Fedora/RHEL) This project.
AppImage (any distro) This project.
AUR (Arch) This project (builds the AppImage).
Nix flake (NixOS) This project.

On top of packaging, every format we build carries:

  • Our launcher. Opt-in native Wayland via CLAUDE_USE_WAYLAND=1, GPU-crash auto-recovery, XRDP detection, IM-module override, and autostart-entry healing.
  • claude-desktop-unofficial --doctor. Diagnostics for the KVM/Cowork stack, official-version drift, name collisions, and config problems.
  • Packaging fixes. The RPM firmware compat symlink Cowork needs, and the Ubuntu 24.04+ AppArmor profile.

The app itself is the official app.asar, shipped byte-identical except for two small Linux-gap patches: a Quick Entry focus fix for KDE (pending upstream) and an org-plugins path fix Linux is missing upstream.

Using APT Repository (Debian/Ubuntu - Recommended)

Add the repository for automatic updates via apt:

# Add the GPG key
curl -fsSL https://pkg.claude-desktop-debian.dev/KEY.gpg | sudo gpg --dearmor -o /usr/share/keyrings/claude-desktop-unofficial.gpg

# Add the repository
echo "deb [signed-by=/usr/share/keyrings/claude-desktop-unofficial.gpg arch=amd64,arm64] https://pkg.claude-desktop-debian.dev stable main" | sudo tee /etc/apt/sources.list.d/claude-desktop-unofficial.list

# Update and install
sudo apt update
sudo apt install claude-desktop-unofficial

Future updates will be installed automatically with your regular system updates (sudo apt upgrade).

Using DNF Repository (Fedora/RHEL - Recommended)

Add the repository for automatic updates via dnf:

# Add the repository
sudo curl -fsSL https://pkg.claude-desktop-debian.dev/rpm/claude-desktop-unofficial.repo -o /etc/yum.repos.d/claude-desktop-unofficial.repo

# Install
sudo dnf install claude-desktop-unofficial

Future updates will be installed automatically with your regular system updates (sudo dnf upgrade).

Using AUR (Arch Linux)

The claude-desktop-appimage package is available on the AUR and is automatically updated with each release.

# Using yay
yay -S claude-desktop-appimage

# Or using paru
paru -S claude-desktop-appimage

The AUR package installs the AppImage build of Claude Desktop.

Using Nix Flake (NixOS)

Install directly from the flake:

# Basic install
nix profile install github:aaddrick/claude-desktop-debian

# With MCP server support (FHS environment)
nix profile install github:aaddrick/claude-desktop-debian#claude-desktop-fhs

Or add to your NixOS configuration:

# flake.nix
{
  inputs.claude-desktop.url = "github:aaddrick/claude-desktop-debian";

  outputs = { nixpkgs, claude-desktop, ... }: {
    nixosConfigurations.myhost = nixpkgs.lib.nixosSystem {
      modules = [
        ({ pkgs, ... }: {
          nixpkgs.overlays = [ claude-desktop.overlays.default ];
          environment.systemPackages = [ pkgs.claude-desktop ];
        })
      ];
    };
  };
}

Using Pre-built Releases

Download the latest .deb, .rpm, or .AppImage from the Releases page.

Building from Source

See docs/building.md for detailed build instructions.

Configuration

Model Context Protocol settings are stored in:

~/.config/Claude/claude_desktop_config.json

Quit Claude Desktop before you hand-edit this file, then reopen it. The app rewrites its own config while running, so edits you make with the app open get overwritten the next time it writes. Quit first, edit, then relaunch. Servers loaded at startup survive restarts fine — this only bites manual edits made against a running app.

For additional configuration options including environment variables and Wayland support, see docs/configuration.md.

Troubleshooting

Run claude-desktop-unofficial --doctor for built-in diagnostics. It checks the usual suspects: display server, sandbox permissions, MCP config, stale locks, and more. It also reports Cowork readiness. Cowork on Linux runs on a KVM-backed VM, so the doctor reports which of its dependencies (KVM, QEMU, OVMF firmware, vhost-vsock, virtiofsd) are installed or missing.

For additional troubleshooting, uninstallation instructions, and log locations, see docs/troubleshooting.md.

Acknowledgments

This project was inspired by k3d3's claude-desktop-linux-flake and their Reddit post about running Claude Desktop natively on Linux.

Special thanks to: - k3d3 - Original NixOS implementation - Native bindings insights - emsi - Title bar fix - Alternative implementation approach - leobuskin for the Playwright-based URL resolution approach

The full contributor credits list — everyone whose PR, fix, or analysis shaped this project, in chronological order — lives in ACKNOWLEDGMENTS.md.

Sponsorship

If this project is useful to you, consider sponsoring on GitHub.

License

The build scripts in this repository are dual-licensed under: - MIT License (see LICENSE-MIT) - Apache License 2.0 (see LICENSE-APACHE)

The Claude Desktop application itself is subject to Anthropic's Consumer Terms.

Privacy

This repository uses an automated triage bot that sends issue contents to Anthropic's API for classification and investigation when you file a bug report or feature request. The bot reads the issue body, title, and any referenced related issues; it does not follow URLs, execute code blocks, or read content outside the triggering issue.

Do not include credentials, tokens, personal data, or anything you wouldn't put on a public issue tracker. If you post sensitive content and then edit it out, the bot's original read is preserved as a run artifact for audit — GitHub's UI hides the edit, but the bot's view of what you wrote is recoverable by maintainers.

Full design and data inventory: docs/issue-triage/README.md.

Contributing

Contributions are welcome! By submitting a contribution, you agree to license it under the same dual-license terms as this project.

Extension points exported contracts — how you extend this code

Core symbols most depended-on inside this repo

Shape

Function 192
Method 127
Interface 69
Class 30

Languages

TypeScript97%
Python3%

Modules by API surface

scripts/cowork-fallback/cowork-vm-service.js130 symbols
tools/test-harness/src/lib/electron.ts32 symbols
tools/test-harness/src/lib/quickentry.ts29 symbols
tools/test-harness/src/lib/input-niri.ts18 symbols
tools/test-harness/src/lib/input.ts17 symbols
tools/test-harness/src/lib/inspector.ts15 symbols
tools/test-harness/src/lib/claudeai.ts14 symbols
tools/test-harness/src/lib/eipc.ts12 symbols
tools/test-harness/src/lib/ax.ts11 symbols
tools/test-harness/src/lib/electron-mocks.ts9 symbols
tools/test-harness/src/lib/wm.ts7 symbols
tools/test-harness/src/lib/isolation.ts7 symbols

For agents

$ claude mcp add claude-desktop-debian \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page