SSD Nodes Learn Hosting plans →
How to do am Matt ConnorBy Matt Connor · Updated 2026-08-29

Claude for Linux: Desktop App or CLI, Which One?

See wetin Claude support for Linux today: beta apt desktop app, Claude Code CLI, editor plugins, and the paid plans wey cover each one.

Claude dey run natively for Linux today for which parts

Claude for Linux dey run for four separate surfaces, and as of August 2026 all four dey work for normal Ubuntu or Debian machine. Desktop app dey install from Anthropic apt repository and e still dey beta. Claude Code CLI (command line interface) na compiled binary, and e run for more distributions than desktop app. Web app for claude.ai only need browser, while API na HTTPS endpoint wey you call from your own code.

Two features wey macOS and Windows get no dey available for Linux desktop beta: Computer Use, where Claude dey control apps for your screen, and voice dictation. Anthropic document both features as ones wey never ready for Linux. CLI get its own voice dictation, so na desktop app get this limitation, no be Claude itself.

Availability fit change, so make you treat this page as description of the different surfaces and check the current state before you plan based on am. Last section list the pages wey you need check.

Ubuntu or Debian for Claude desktop app install

Documented requirement na Ubuntu 22.04 or later, or Debian 12 or later, for x86_64 (wey dpkg dey call amd64) or arm64. Other Debian-based distributions fit work, but dem never test am. Fedora and RHEL never get package yet, so for those ones use CLI or browser.

Install am from apt repository instead of downloaded .deb file. Linux app no get updater of its own, so na only through your package manager new versions go reach you. Registering the repository na wetin make apt upgrade see dem.

sudo apt install curl gnupg
sudo curl -fsSLo /usr/share/keyrings/claude-desktop-archive-keyring.asc \
  https://downloads.claude.ai/claude-desktop/key.asc
gpg --show-keys /usr/share/keyrings/claude-desktop-archive-keyring.asc

gpg --show-keys suppose print fingerprint 31DDDE24DDFAB679F42D7BD2BAA929FF1A7ECACE. Compare am before you register the repository, because signing key wey you never check na key wey you dey trust blindly. If gpg report say the file no hold valid OpenPGP data, the download fail, and apt update go fail later with NO_PUBKEY BAA929FF1A7ECACE.

Registering the repository na one deb line wey you write to /etc/apt/sources.list.d/claude-desktop.list. Copy that line from Anthropic's Linux install page, code.claude.com/docs/en/desktop-linux, exactly as dem print am there. Repository address na the part of this procedure wey fit change pass, and line wey you type from memory na wetin go make you dey look at E: Unable to locate package claude-desktop afterwards. Read the line before you paste am: arch=amd64,arm64 na why apt for any other architecture no go find anything, and signed-by= point to the keyring file wey you just check. This one restrict that key to only this repository instead of trusting am for everything else apt dey read.

sudo apt update && sudo apt install claude-desktop

Start am from your application launcher, or run claude-desktop for terminal. Sign in with your claude.ai account, or through your organisation's SSO (single sign-on) if your company set am up. Desktop app no accept Claude Console API key: key based authentication na CLI feature.

E: Unable to locate package claude-desktop mean say apt never read the repository. cat /etc/apt/sources.list.d/claude-desktop.list suppose show the deb line wey you write, and dpkg --print-architecture suppose print amd64 or arm64, because dem no publish packages for other architectures. Updates go then arrive with the rest of your system, from sudo apt update && sudo apt upgrade.

Wetin only dey exist inside browser

claude.ai dey work for any current browser on any distribution. Na why e fit work for Fedora, RHEL, Arch, openSUSE, and any other system wey no get package. Browser also get Claude Code on the web. For there, the session dey run for Anthropic's cloud instead of your machine. E always use your subscription credentials.

The important limit na to understand wetin browser fit do. Cloud session no fit read files for your own server or run command for there. Anything wey need access to your machine require software for that machine. That means CLI or desktop app.

Wetín CLI dey give you wey web app no dey give you

Start claude for one directory and e go work on dat directory. Na dis be the difference, and everything else follow from there.

  • E dey read and edit files for your working directory, and e dey show you each edit before e apply am.
  • E dey run shell commands wey you approve, so e fit build project, run test suite, read log, or inspect service for the box itself.
  • E dey run without interactive session: claude -p "read the nginx error log and summarise it" dey print one answer and exit, na dis one you go use from cron job or pipeline. Na you dey decide wetin dat answer go look like, because output style dey edit system prompt behind every reply and e fit keep scripted run short while interactive session explain itself.
  • E dey connect MCP (model context protocol) servers with claude mcp add, and dis one give model tools wey pass filesystem.
  • E dey run for anywhere wey graphical desktop no dey at all, and na so every VPS (virtual private server) wey you go ever rent be.

Na dat last point make server guide dey care about CLI. Rented server get SSH (secure shell) and nothing else, so terminal na the only surface wey fit dey there with you. To run am like dat get its own rules, wey how to run Claude Code for VPS inside tmux cover fully, and how to use Claude for everyday sysadmin work cover the jobs wey worth giving am.

Editor integrations dey between the two. VS Code extension need VS Code 1.94.0 or later and e give you graphical panel inside editor, with diffs and plan review. E bundle private copy of CLI for dat panel and e no put claude for your PATH, so if you type claude for integrated terminal, you still need standalone install. Editors wey build on VS Code dey install the same extension from Open VSX registry, and JetBrains plugin dey too.

You need Node.js to run Claude Code for Linux?

No be with the recommended install. The native installer downloads a compiled binary, and that binary no dey run on Node.js.

curl -fsSL https://claude.ai/install.sh | bash
claude --version

claude --version suppose print a version number like 2.1.211 (Claude Code). If something no look correct, run claude doctor. E go print read-only diagnostics about the install and your settings files without starting a session.

Node.js only matter for the npm route. From package version 2.1.198, the npm package need Node.js 22 or later. For older Node.js, npm go print an EBADENGINE warning instead of failing. This one happen because the package pulls in the same native binary as a per-platform dependency and links am into place.

npm install -g @anthropic-ai/claude-code

No run that with sudo. The documentation warn against sudo npm install -g because e leaves root-owned files for your global npm prefix. Because of that, the next unprivileged install or update go fail because of permissions. When the npm global directory no writable, background auto-update stop working, and claude doctor list the fixes.

Anthropic still publishes signed package repositories for Debian, Fedora, RHEL and Alpine. So sudo apt install claude-code work almost like the desktop package, with its own signing key for https://downloads.claude.ai/keys/claude-code.asc.

You suppose install am for each user or system-wide?

The native installer na per-user install. E dey put launcher for ~/.local/bin/claude as symlink wey point to ~/.local/share/claude/versions/, e no need root, and e dey update itself for background. Each user for the machine get separate copy with separate version.

Package manager install na system-wide. One binary dey serve every user, e need root, and e no dey auto-update through Claude Code. You upgrade am with sudo apt update && sudo apt upgrade claude-code, na the same command wey you already dey run for everything else for the machine.

Choose per-user install for machine wey you dey log into as yourself, and this cover most VPS work. Choose package install for shared server or machine image, where you want one version for everybody and you want updates to follow your own schedule. For native install, two settings for ~/.claude/settings.json decide how updates go behave:

{
  "autoUpdatesChannel": "stable",
  "env": {
    "DISABLE_AUTOUPDATER": "1"
  }
}

The stable channel dey follow release wey about one week old and e dey skip releases wey get major regressions. DISABLE_AUTOUPDATER only stop the background check, so claude update still dey work and you still control when new version go land. This matter for server where long job dey run unattended and you prefer make the binary no change underneath am.

Log in through SSH, and make the session stay alive

Two Linux-specific problems dey show the first time you run the CLI for rented server. The login flow need browser, but the server no get one. If SSH connection drop, e go carry the work wey dey run along with am.

tmux dey solve the second one. tmux session belong to the tmux server for the remote machine, no be to your connection. So if link drop, the process still dey run.

tmux new -s claude
claude

Detach with Ctrl-b then d, and come back later with tmux attach -t claude.

Login na the first problem. Run claude and e go print authorisation URL. Open that URL for browser on your own computer. After you sign in, browser go show login code instead of redirecting back, because browser for your laptop no fit reach the callback server wey Claude Code start for the remote machine's loopback address. Paste that code into terminal for the Paste code here if prompted prompt, and terminal go report Login successful.

For session wey need start when nobody dey watch am, claude setup-token go open the same browser authorisation and print one year OAuth token for terminal. E no save the token anywhere, so copy am and set am for where you need am.

export CLAUDE_CODE_OAUTH_TOKEN=your-token

That token need paid plan and e fit only make model requests. Treat am like password wey go last one year. Where to keep am, and how to stop agent from reading am back out, na the subject of keeping secrets away from AI agents.

Small servers get one more problem. Installation need roughly 512 MB free memory, and the documented hardware requirement to run am na 4 GB of RAM or more. So for 1 GB instance, kernel out-of-memory killer go end the installation:

Setting up Claude Code...
Installation was killed before it could finish (exit code 137). This usually means the system ran out of memory.

Add swap, then run installer again. Swap na disk space wey kernel dey use as overflow memory. E much slower than RAM, but e enough to finish installation.

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

swapon go enable the file for this boot only. Add one line for /swapfile to /etc/fstab if you want make e come back after reboot. Wetin else you need lock down before you allow agent run commands for live server na the subject of running Claude Code safely on a VPS.

Wey your Claude credentials dey for Linux

For Linux, /login dey write the credential for ~/.claude/.credentials.json with file mode 0600. macOS dey put the same credential inside encrypted Keychain, so habit wey you form for Mac no carry over: for Linux, the token na plain file for your home directory, and every process wey dey run as your user fit read am. If you set CLAUDE_CONFIG_DIR, e go move the file under that directory instead.

Two things follow from this. Backup of /home contain active login, so if you copy that backup go shared machine, anybody else wey fit read am don get access to your account. And machine image wey you build from box where you don log in go carry that login enter every instance wey you clone from am. Run /logout before you take any snapshot.

Credential precedence dey catch people wey get subscription and API key at the same time. When ANTHROPIC_API_KEY dey set for your shell, Claude Code go use am after you approve am, so your subscription go remain unused while the key dey charge per token. /status go show which credential dey active, and unset ANTHROPIC_API_KEY go return you to the subscription login.

Logins dey expire. Within three days before expiry, the startup line go read Your login expires in 3 days, and that warning no dey block request. After expiry, every request go fail with Login expired · Please run /login. Know this before you leave unattended session running throughout weekend, because that kind session go stop to make progress and e no fit recover by itself.

Claude subscription wan cover everything?

One paid plan cover every place with the same login. Pro, Max, Team or Enterprise account go sign you in to claude.ai for browser, the desktop app, the CLI and the VS Code extension. Na the same subscription each time. Na also one usage allowance across all of dem, so long CLI run for your server go reduce wetin remain for the desktop app. When any of the surfaces start refuse work, which limit window you don hit and wetin you fit do about am na the thing wey you need check. The free claude.ai plan no include Claude Code access, so the CLI and the Claude Code parts of the desktop app need paid plan or Claude Console account.

The API na different product with different billing. Console account dey bill per token based on wetin you actually send. This one suit service wey you dey build, instead of typing commands for terminal. Setting ANTHROPIC_API_KEY move the CLI go this billing path. Na choice wey you make, no be fallback.

Prices and plan limits dey change too often to repeat dem here. Two pages dey track the current numbers: how much Claude Code really cost and which Claude plan you need. If you dey compare per-token billing with monthly plan, API compared with subscription explain where the break-even point dey.

Installation error wey you go actually see

bash: claude: command not found immediately after installation succeed. Binary dey for ~/.local/bin/claude, but that directory no dey your shell search path. Confirm am with echo $PATH | tr ':' '\n' | grep -Fx "$HOME/.local/bin"; e no go print anything when entry no dey. Fix am for bash with echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc, then run source ~/.bashrc. Installing the VS Code extension by itself no dey create that file, because extension dey keep its CLI copy inside extension directory.

Error loading shared library libstdc++.so.6. Installer pick musl build for glibc system. This one dey happen when musl cross-compilation packages dey present and detection read dem wrongly. Run ldd --version 2>&1 | head -1: output wey name GNU libc or GLIBC mean say na glibc you dey use and you receive wrong binary, so remove the installation and run installer again. For Alpine and other musl systems, the fix na the opposite, apk add libgcc libstdc++ ripgrep.

Two copies of claude for one machine. which -a claude go list every match inside your PATH. Native installation na symlink from ~/.local/bin/claude enter ~/.local/share/claude/versions/, legacy local npm installation dey under ~/.claude/local/, and npm -g ls @anthropic-ai/claude-code go show global npm installation. Remove the ones wey you no want, because old copy wey dey earlier for your PATH na wetin make fixed bug still look like say e no fix.

Wey to check the current state

Every version number and date for this guide na snapshot of August 2026. Na the structure go remain true: four surfaces, one login across the paid ones, and one decision about whether the CLI belong to your user or the whole machine.

FAQ

Claude desktop app dey available for Linux?

Yes. As of August 2026, e dey beta, and e support Ubuntu 22.04 or later plus Debian 12 or later for amd64 or arm64. Install am with sudo apt install claude-desktop after you add Anthropic apt repository and im signing key, so new versions go arrive with your normal system upgrades. The Linux build get the same tabs wey macOS app get, including Claude Code tab. Computer Use and voice dictation never dey for Linux build yet, and Fedora plus RHEL no get package, so for those distributions use CLI or claude.ai for browser.

I need Node.js to run Claude Code for Linux?

No be for the recommended install. curl -fsSL https://claude.ai/install.sh | bash go download compiled binary wey no use Node.js at runtime. Node.js only matter if you install npm package, wey ask for Node.js 22 or later as of version 2.1.198. For older Node.js, npm go print EBADENGINE warning and the install still go finish, because the same native binary go come in as per-platform dependency. No ever install am with sudo npm install -g, because e go leave root-owned files for your npm prefix and break later updates.

How I go log in to Claude Code over SSH?

Run claude and e go print authorisation URL. Open that URL for browser on your own computer, no be for the server. After you sign in, browser go show login code instead of redirecting, because e no fit reach callback listener wey Claude Code start for remote machine loopback address. Paste that code for Paste code here if prompted prompt. For sessions wey go start when nobody dey there, run claude setup-token and set the token wey e print as CLAUDE_CODE_OAUTH_TOKEN anywhere wey you need am.

Where Claude Code dey store my login for Linux?

For ~/.claude/.credentials.json with file mode 0600, or under CLAUDE_CONFIG_DIR when you set that variable. No keychain dey involved for Linux, unlike macOS, so any process wey dey run as your user fit read the file. So /home backup or machine image go carry working login: run /logout before you take snapshot or copy system. If ANTHROPIC_API_KEY dey set for your environment too, e get priority over the stored subscription login once you approve am, and /status go show which one dey active.

My Claude Pro subscription cover CLI as well as web app?

Yes. Pro, Max, Team or Enterprise plan go sign you in to claude.ai, desktop app, CLI and VS Code extension with one account. Free claude.ai plan no include Claude Code, so terminal CLI need paid plan or Claude Console account. API billing dey separate per token from Console account, and that one na different product from subscription.