Blog

ChatGPT and Claude on Linux as desktop apps

Popular sites · · 6 min read

OpenAI and Anthropic now ship Linux desktop apps, each for a short list of distributions. On other distributions, or for a second signed-in copy, Pake CLI can put chatgpt.com or claude.ai in a window of its own, running on the system's WebKitGTK; the catch is that you build it yourself and a bot check may stop the page.

What OpenAI and Anthropic ship

OpenAI's Linux app page puts the ChatGPT desktop app in preview on Linux, installed from .deb and .rpm packages or, on Arch, a script, and says Computer Use is not in the Linux preview yet. Anthropic's install article lists Claude Desktop for Linux as a beta, and its Linux docs say it needs Ubuntu 22.04 or later or Debian 12 or later on x86_64 or arm64, that other Debian-based distributions may work but are not tested, and that Fedora and RHEL are not supported today. Computer use and dictation are not in the Linux beta.

Official Linux appPake window
ChatGPTPreview: Ubuntu 24.04 LTS and 26.04 LTS, Debian 13, Fedora 43 and 44, Arch Linux, x64 and ARM64chatgpt.com in WebKitGTK
ClaudeBeta: Ubuntu 22.04 LTS or later, Debian 12 or later, x64 and arm64claude.ai in WebKitGTK

On a listed distribution, install the vendor's app, which also brings Codex in ChatGPT's case and Claude Code and Cowork on Claude's paid plans. A Pake window only loads the website and has none of those tools. It is for distributions neither list covers, such as openSUSE, or for a second account under another name, as in Two accounts on one website. Anthropic's own docs send non-Debian users to its CLI, which is a different product from a chat window. Perplexity on the desktop walks through the same choice for Perplexity.

What you need before building

Linux packaging uses Pake CLI. You need Node.js 20.9 or later, Rust 1.85 or later and your distribution's WebKitGTK development packages. On Ubuntu the advanced usage guide lists them, among them libwebkit2gtk-4.1-dev, libgtk-3-dev, libayatana-appindicator3-dev and libssl-dev. An interactive build offers to install Rust if it is missing. The getting started guide walks through the rest.

Build with the CLI

npm install -g pake-cli
pake https://chatgpt.com --name ChatGPT
pake https://claude.ai --name Claude

The first build compiles dependencies and takes several minutes. Pake reads /etc/os-release and builds .deb and AppImage on Debian and Ubuntu, and .rpm and AppImage on Fedora, RHEL, Rocky, AlmaLinux and openSUSE. Pass --targets for one format:

pake https://chatgpt.com --name ChatGPT --targets deb
pake https://claude.ai --name Claude --targets appimage

rpm, Arch's zst and arm64 forms such as deb-arm64 are in the CLI options. On Linux the name becomes lowercase, with hyphens in place of spaces, so --name ChatGPT writes files named chatgpt.

Install the package

The files land in the current directory. Install the .deb as you would any local package, or follow the CLI FAQ for the others:

sudo apt install ./chatgpt.deb
sudo dnf install ./chatgpt.rpm
chmod +x ./claude.AppImage
./claude.AppImage

The FAQ also notes that AppImages built locally on Arch or Fedora can crash looking for WebKitNetworkProcess; on Arch, build with --targets zst and install with sudo pacman -U instead. If the AppImage opens but clicks or keys do nothing under a pure Wayland compositor, the FAQ says to launch it with PAKE_LINUX_WEBKIT_SAFE_MODE=0, and to use =1 instead if the window then stays blank.

Settings worth passing

The window starts at 1200 by 780; --width and --height change it. --always-on-top keeps the chat above your editor, and --activation-shortcut "CmdOrControl+Shift+G" sets a global key, empty unless you pass one. --show-system-tray adds a tray icon and --hide-on-close keeps the app running when you close the window, which is off by default on Linux. --enable-find adds Ctrl F page search, and every app has Ctrl =, Ctrl - and Ctrl 0 for zoom and Ctrl R for reload (shortcuts). A website in the menu bar or tray and Keep a web app always on top explain the two behaviors, written for the Mac and Windows app, with the same options on the CLI.

Test sign-in, uploads and voice

The page runs in WebKitGTK, not Chrome, so sign in, send a message, attach a file and try voice before relying on it. The CLI FAQ warns that some sites, ChatGPT among them, put a Cloudflare check in front of the page, and WebKitGTK often loops on it even with --user-agent. The check is detecting a non-standard browser engine, and Pake has no reliable fix for that, so use the official app or a browser if the window never gets past the check.

Google may refuse sign-in inside the window even with --new-window; see the sign-in guide. --microphone and --camera only apply on macOS, so voice depends on what the page can do in WebKitGTK. Drag-and-drop uploads need --enable-drag-drop, and leaving --incognito off keeps you signed in after quitting; quit and reopen once to confirm.

How it works underneath

On Linux, a Pake app is a Tauri shell that draws the page with the system's WebKitGTK, so the engine is whatever version your distribution ships rather than a bundled Chromium. That is why the package is small, why a heavy chat page uses several hundred megabytes of memory in the web process (the FAQ says that number is set by the engine and the page, not by Pake), and why behavior differs by distribution. A site's own updates arrive on the next page load. Dark mode depends on your WebKitGTK build honoring the window theme and the site supporting prefers-color-scheme, according to the docs for --dark-mode.

Rebuild with a newer CLI

The sites update themselves inside the window, but the Pake runtime around them does not. To pick up a newer one, update pake-cli and run the same command again with the same URL and --name, so the app keeps its identity.

When something goes wrong

  • The build fails at the AppImage step. The FAQ lists NO_STRIP=1, installing the full dependency list, or building a deb instead.
  • The first build seems stuck. It compiles Rust dependencies and takes several minutes.
  • The page loops on a verification screen. That is the Cloudflare case above; switch to the official app or a browser.
  • You are signed out after each launch. Check --incognito is not set.

FAQ

Does Pake have a Linux app like the Mac and Windows one?

No. The desktop app covers Mac and Windows. On Linux you build with the CLI.

Which package format should I pick?

Use deb on Debian and Ubuntu, rpm on Fedora and similar, zst on Arch, and AppImage when you want something portable.

Can I run two copies, one per account?

Build two apps with different --name values. Pake derives a separate identifier from the URL and the name, so the two install separately; check that the second one really starts signed out before you sign in.