Architecture - claude-desktop-extra
SkillMediaExplains the purpose, features, and architecture of claude-desktop-extra - which repackages Anthropic's official Claude Desktop Linux .deb for Arch/Fedora/RHEL/Nix/AppImage and layers Linux-only extras (Computer Use, themes, multi-profile, Quick Entry) on top via surgical JS patches. Use when onboarding, writing docs/READMEs, explaining what the project does, or reasoning about how the official build and our patches fit together.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Architecture - claude-desktop-extra skill
What this skill tells your AI
The instructions your AI receives, as published by patrickjaja/claude-desktop-extra in .claude/skills/architecture/SKILL.md and read by ahel’s review.
Repackages Anthropic's official Claude Desktop Linux .deb for the distros Anthropic does not ship (Arch via our own pacman repo, Fedora/RHEL, NixOS, AppImage) and for our own Debian/Ubuntu .deb, while layering a small set of Linux-only value-adds that the official build does not provide. See /linux for compat specifics.
What we start from: the official Linux .deb
Anthropic publishes an official Claude Desktop build for Linux as a .deb in an apt repo (https://downloads.claude.ai/claude-desktop/apt). It bundles its own Electron (42.5.1) and ships a native Cowork VM backend (cowork-linux-helper + virtiofsd + smol-bin + QEMU/OVMF; requires /dev/kvm). The official build natively supports Chat, Code, Cowork, Computer Use is in beta upstream, and reads managed config from /etc/claude-desktop/managed-settings.json. We do not patch the Windows MSIX any more - that pipeline is gone.
What this repo does: ingest -> patch -> repackage
Ingest: download the official .deb (apt repo, or --deb PATH/--version X) -> verify GPG + SHA256 -> dpkg-deb -x -> locate usr/lib/claude-desktop/resources/app.asar -> asar extract.
Patch: run scripts/apply_patches.py (the orchestrator) over the extracted bundle. 48 surgical JS patches (patches/{linux,community,core}/*.nim, compiled native binaries, regex on minified JS) apply Linux-only fixes and our value-adds. The official build re-minifies between releases, so patterns use [\w$]+ wildcards anchored on stable strings (feature names, log messages, process.platform==="darwin"), count EXPECTED_PATCHES, and quit(1) on any miss. .upstream-version records the last validated version.
Repackage: asar pack (preserving app.asar.unpacked, which carries the official build's pre-built native modules - we no longer rebuild node-pty) into a tarball, then build the pacman package/our-own-deb/rpm/AppImage/Nix from it.
Several patches that used to enable Cowork on Linux (the "cowork-wiring" cluster) were removed once the official build started shipping Cowork natively; what remains of that area is a small number of regression guards that assert the upstreamed native-Linux behavior is still present and fail loud if Anthropic ever drops it.
Value-adds we layer on top (the reason this repo exists)
- Computer Use - desktop automation (screenshot/click/type/scroll); session-aware backends (
fix_computer_use_linux+ bundledkwin-portal-bridge). Our exclusive feature - not in the official Linux beta. See/linuxfor the input/screenshot cascades. - Custom themes - dual light/dark built-in palettes (
add_feature_custom_themes). - Multi-profile instances - run several Desktops side by side via
CLAUDE_PROFILE(fix_profile_*). - Quick Entry - global hotkey popup, multi-monitor + Wayland-safe (
fix_quick_entry_*).
Features the app exposes that the official build already provides (we just preserve them through the repackage):
- Chat - main conversational UI.
- Claude Code - auto-detects system
claudeCLI; Code tab + integrated terminal. - Cowork - delegate a goal to a sandboxed Claude Code agent that reads/edits/creates files and returns a deliverable. Runs on the official native Cowork VM backend bundled in the
.deb(no separate daemon needed). Requires/dev/kvm. - Browser Tools - Chrome automation via the Claude-in-Chrome extension/MCP.
- 3P / Enterprise gateway - configure external inference (Bedrock/Vertex/Azure/gateway); managed config from
/etc/claude-desktop/managed-settings.json; ion-dist 3P-config SPA. - Imagine - in-Cowork image generation.
baseline/ tracks version-sensitive internals (re-validate each release): CLAUDE_FEATURE_FLAGS.md (flag catalog, GrowthBook IDs, 3-layer override), CLAUDE_BUILT_IN_MCP.md (internal MCP servers), ION.md (3P-config SPA stats/hashes), PLATFORM_GATE_BASELINE.md (every darwin/win32 gate classified PATCHED/NATIVE/STUB/PORTABLE).
claude-cowork-service - DEPRECATED
Historically this project shipped a sibling Go daemon (claude-cowork-service, binary cowork-svc-linux) that filled the role the macOS/Windows VM layer plays for Cowork: it reverse-engineered the length-prefixed-JSON-over-Unix-socket RPC protocol and ran the claude CLI either directly on the host (native mode) or in a QEMU/KVM guest. It is now deprecated/archived. The official Linux .deb bundles its own native Cowork VM backend, so the daemon is no longer needed or installed. Existing references in baseline/ and CHANGELOG.md are historical record.
USPs
Project vs the official build: brings Claude Desktop to the distros Anthropic does not package (Arch, Fedora/RHEL, Nix, AppImage); adds Computer Use (not in the official Linux beta), custom themes, multi-profile, and Quick Entry; open source.
How it fits
Anthropic official Claude Desktop Linux .deb (Electron 42.5.1 + native Cowork VM backend)
│ download → verify GPG+SHA256 → dpkg-deb -x → asar extract
▼
claude-desktop-extra (48 JS patches: Linux fixes + Computer Use + themes + profiles + Quick Entry)
│ asar pack → tarball
▼
our pacman repo / our .deb / .rpm / .AppImage / Nix
Signals
- GitHub stars
- 622
- Forks
- 39
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
architecture-patrickjaja- Source
- github.com/patrickjaja/claude-desktop-extra