Skip to content

Install

The desktop app (macOS 13 or later on Apple silicon or Intel, Linux x86_64, Windows 10 or 11 x86_64), from arugula.io or the newest app release: arugula-desktop-macos-arm64.zip (Apple silicon), arugula-desktop-macos-x86_64.zip (Intel), arugula-desktop-linux-x86_64.AppImage or .deb (the Linux app runs on Ubuntu 22.04, Debian 12, Fedora 36 or newer: glibc 2.35 and up), arugula-desktop-windows-x86_64-setup.exe. The first time it opens it installs arugulad and arugula (in ~/.local/bin, or %LOCALAPPDATA%\Programs\arugula on Windows) and starts the daemon as a service, then Getting started sets up your phone, the cloud and Claude Code, a click each. Once the machine is in Arugula cloud, the app signs in through your browser on the same computer (approve it as a new device once) and shows every machine in your account and your teams. The macOS app isn’t notarized yet: the first time, open it, then choose Open Anyway in System Settings › Privacy & Security. Or, in Terminal, install.sh (below) installs the Mac app too, with no Open Anyway step (curl leaves no quarantine flag), in /Applications if you can write there and ~/Applications if not, and opens it.

The Windows installer isn’t signed yet: when SmartScreen stops it, choose More info, then Run anyway.

Servers and machines without a screen:

curl -fsSL https://arugula.io/install.sh | sh

This puts arugulad and arugula in ~/.local/bin and starts the daemon as a service (systemd user unit on Linux, launchd agent on macOS). On a Mac with someone at its screen it installs the desktop app too, from the newest app release; the app uses the daemon install.sh set up. sh -s -- --no-app leaves the app out; over ssh it’s left out unless you add --app. Run it again to upgrade. ARUGULA_VERSION=vX.Y.Z picks a version. ARUGULA_APP_VERSION=app-vX.Y.Z picks the app’s.

On Windows, in PowerShell:

irm https://arugula.io/install.ps1 | iex

This puts them in %LOCALAPPDATA%\Programs\arugula (on your PATH) and starts the daemon at logon, as a scheduled task. $env:ARUGULA_VERSION picks a version.

Homebrew (macOS, Linux):

brew tap arugula-salad/tap
brew trust arugula-salad/tap
brew install arugula
arugulad install

brew trust is for newer Homebrews, which load a tap’s formulas only once it’s trusted. Installed as illogical before? brew upgrade moves it to arugula; then arugulad install.

From source: see Building from source.

On Linux, let it start at boot, before you log in:

loginctl enable-linger $USER

Updating. When a newer release is out, the top bar says so, with the command for how you installed it. Panes keep running while the daemon restarts.

  • install.sh or install.ps1: run it again (on a Mac at its screen, that updates the app too).
  • Homebrew: brew upgrade arugula && arugulad install.
  • The desktop app: download the new one and open it. When it finds an older daemon running as the service, it puts its own in its place, keeping the daemon’s flags and your panes.

The daemon finds out by asking GitHub where its latest release is, at most twice a day; nothing else is sent. arugulad install -- --no-update-check turns that off.

Everything above works, except that restarting or upgrading the daemon ends the panes’ programs (there’s no systemd to hold them); scrollback and layout still come back.

Panes run PowerShell (PowerShell 7 if it’s installed, else Windows PowerShell), with prompts, commands, exit codes and the directory reported as in bash, zsh and fish: Arugula passes its integration inline, so no profile or execution policy change is needed. Each pane has a small host process of its own, so panes keep running while the daemon restarts or upgrades, as on Linux.

The daemon starts when you log on, and logging off ends it; its panes close a minute later. arugulad install --system (from an elevated terminal) starts it at boot instead, but programs there can’t use Windows’ protected storage, so Credential Manager and Git Credential Manager don’t work in its panes. arugula --ssh doesn’t reach Windows yet.