Skip to content

Environment variables

This page covers the environment your panes and agent blocks start with, and how to change it.

Panes run your login shell ($SHELL -l; PowerShell on Windows), so your profile runs as usual. Arugula adds these variables to every pane:

Variable What it is
ARUGULA_PANE this pane’s id (3 for %3); arugula commands default to it
ARUGULA_SOCK the daemon’s socket, so arugula in the pane talks to the right daemon
TERM, COLORTERM xterm-256color and truecolor
CLAUDE_CODE_SSE_PORT where Claude Code finds the daemon as its IDE (edits as diff cards)

arugula is on the pane’s PATH. To run a different command in new panes, install the daemon with arugulad install -- --shell "CMD ARGS" (Daemon flags).

If the daemon starts at boot (with loginctl enable-linger $USER), it starts before your desktop session, so its own environment has no WAYLAND_DISPLAY, DISPLAY or desktop SSH_AUTH_SOCK. Each new pane takes the systemd user manager’s environment as it is at that moment, which your desktop session fills in when you log in.

For variables every pane should have from boot (PATH additions, EDITOR), put KEY=value lines in this file:

~/.config/environment.d/50-arugula.conf
EDITOR=nvim
PATH=/home/you/.cargo/bin:/usr/local/bin:/usr/bin:/bin

The daemon flag --no-manager-env stops copying the systemd user environment into new panes.

Agent blocks, editor blocks and other blocks that run programs for you have no shell of their own, so the daemon reads your shell’s environment once, as VS Code does. It runs your login shell interactively when it starts, and keeps the PATH and variables your rc files set, so node from mise or nvm is found there just as in a pane. If your shell takes more than 10 seconds or fails, those blocks get the daemon’s own environment, and the log says why.

Terminal window
arugula shell-env # what blocks get
arugula shell-env --refresh # read your shell again, after changing an rc file

Most daemon flags can also be set with an environment variable (ARUGULA_LISTEN, ARUGULA_STATE_DIR, ARUGULA_OWNER and so on); arugulad --help lists which. A few CLI settings are environment variables only: ARUGULA_VERBOSE=1 (say whether --host went direct or through control’s relay), ARUGULA_MCP_TOKEN, and the ARUGULA_SSH* settings for --ssh. ARUGULA_TELEMETRY=off (or DO_NOT_TRACK=1) keeps usage and crash reports off and means nobody is asked.

  • Service and logs: the daemon’s flags and where it keeps state.
  • Agents: what agent blocks need from your environment.