Installation details

What npx agy-powerline init does, where files go, and how to set things up by hand. For the quick version, see the README.

What init does

init copies the scripts to ~/.agy-powerline and adds a statusLine entry to Antigravity's settings.json. It asks before overwriting existing scripts or another statusLine; pass --yes to skip the prompts (required without a TTY). Restart agy (or open a new session) after init so it reloads settings.

On a first install in a terminal (no statusline.config.json yet, no --yes), init asks three questions, each with a preview of the bar it gives:

  1. Preset: default, compact, agent, git, tokens, quotas or full. Enter keeps default.
  2. Layout: pills or lines. Enter keeps pills.
  3. Terminal background: dark, light or color-blind, then the themes for it (Enter keeps dark-aurora, light-paper or colorblind-dark).

Answer with the number of a choice. npx agy-powerline preset, layout, theme and configure change your choice later. Without a terminal, or with --yes, nothing is asked and you get the default bar. Running init again never replaces your config.

For scripted installs, --preset <id>, --layout <id> and --theme <id> set those choices and skip their question, with or without --yes. The theme also takes dark, light and colorblind. Each value is checked before anything is written: an unknown one stops init with the list of valid ids. With an existing config, the flags change only those settings in it, and init says so.

npx agy-powerline init --yes --preset compact --layout lines --theme light

init never loses your other settings. It refuses to touch a settings.json that is not plain JSON (comments, trailing commas) and tells you what to add by hand. Before every change it saves the previous file as settings.json.agy-powerline.bak. The first time, it also keeps your untouched file as settings.json.agy-powerline.original.bak, which later runs never replace. A settings.json linked into place by a dotfile manager (stow, chezmoi, yadm) stays a link: the change goes into the file it points to.

OSScriptsstatusLine.command in settings
Windowsstatusline.js, statusline.cmdC:/Users/you/.agy-powerline/statusline.cmd (no quotes)
macOSstatusline.js'/opt/homebrew/bin/node' '/Users/you/.agy-powerline/statusline.js'
Linuxstatusline.js'/usr/bin/node' '/home/you/.agy-powerline/statusline.js'

To try a different look without changing statusline.config.json, append render flags to the command. For example:

'/usr/bin/node' '/home/you/.agy-powerline/statusline.js' --theme light-paper --layout lines
C:/Users/you/.agy-powerline/statusline.cmd --theme light-paper --layout lines

The same --preset, --layout, --theme, --caps and --gradient options work on both platforms. The Windows launcher forwards them to statusline.js; an install made before these flags existed needs one npx agy-powerline init --yes to get that launcher. A later init keeps the flags you appended, as long as the command before them is still the one it writes. doctor lists them under overrides.

init also writes install.json (installed CLI version, Node path, platform, timestamp) and a default statusline.config.json (only when none exists).

Options: --stack renders below the built-in statusline, --padding <n> inserts blank lines.

On Windows, init refuses an install folder whose path contains &, (, ^, ,, ; or =: Antigravity starts the bar through cmd /c, which splits the command at those characters. Set AGY_POWERLINE_HOME permanently to a folder without them (for example setx AGY_POWERLINE_HOME C:\agy-powerline), open a new terminal and run init again.

Install from inside agy (plugin)

The repository is also an agy plugin with two skills:

agy plugin install https://github.com/wassim-azi/agy-powerline   # or /plugin install … inside agy

The skills run commands through agy's shell tool, so agy asks you before each one, as for any command. They never edit settings.json by hand, never start configure (an interactive editor) and never pass --allow-exec to import without your yes to the commands shown.

agy copies the plugin to ~/.gemini/config/plugins/agy-powerline/. The bar itself still runs from ~/.agy-powerline, where init installs it.

Install without npm

Where npm or cloning from GitHub is blocked, each GitHub release has files you can download once and install from. Node.js 20 or newer is still needed; agy-powerline has no dependencies to fetch.

Restart agy once afterwards, as after any init. Later commands work the same way: node <folder>/src/index.js theme --list stands in for npx agy-powerline theme --list. To update, download the newer release's file and repeat.

Each of these files has a signed attestation next to it (<file>.sigstore.json); SECURITY.md shows how to check a download with gh attestation verify.

Where files live

Scripts and configAntigravity settings
~/.agy-powerline/~/.gemini/antigravity-cli/settings.json

On Windows those resolve to %USERPROFILE%\.agy-powerline\ and %USERPROFILE%\.gemini\antigravity-cli\settings.json. Override the install folder with AGY_POWERLINE_HOME.

There are no per-project installs. Commands never read ./.agy-powerline from the current directory, so a cloned repo cannot inject its own config.

Upgrading

Antigravity runs the local copy of the scripts in ~/.agy-powerline, so a newer package version reaches the bar only after you run init again:

npx agy-powerline init --yes   # overwrite the installed scripts with this version
npx agy-powerline doctor       # check everything is up to date and working

Your statusline.config.json is kept. doctor compares install.json against the running CLI version and warns if the scripts are stale. Restart agy or open a new session to load the update.

Uninstalling

npx agy-powerline uninstall            # remove statusLine from Antigravity's settings
npx agy-powerline uninstall --delete   # also remove the files init installed

uninstall only removes a statusLine that looks like ours (or exactly matches this install). A foreign statusLine is left in place unless you pass --yes. Without --delete the scripts and statusline.config.json stay on disk. --delete only removes the files agy-powerline created, refuses to run on a folder without install.json or statusline.js, and keeps the folder if you put other files in it.

Setting it up by hand

If you skip the settings step in init, add statusLine to ~/.gemini/antigravity-cli/settings.json (Windows: %USERPROFILE%\.gemini\antigravity-cli\settings.json). Use absolute paths: Antigravity does not expand ~. Prefer forward slashes. Restart agy after editing this file.

Linux

{
  "statusLine": {
    "type": "command",
    "command": "'/usr/bin/node' '/home/you/.agy-powerline/statusline.js'"
  }
}

macOS

{
  "statusLine": {
    "type": "command",
    "command": "'/opt/homebrew/bin/node' '/Users/you/.agy-powerline/statusline.js'"
  }
}

Use the Node binary from which node (Homebrew Apple Silicon is often /opt/homebrew/bin/node; Intel Homebrew is often /usr/local/bin/node; nvm is under ~/.nvm/...).

Windows (cmd or PowerShell)

Point at the statusline.cmd launcher init writes. Do not quote the path: Antigravity runs cmd /c through Go, extra quotes become \"...\" and cmd cannot find node.exe. statusline.cmd already quotes node.exe internally, including C:\Program Files\nodejs\node.exe.

{
  "statusLine": {
    "type": "command",
    "command": "C:/Users/you/.agy-powerline/statusline.cmd"
  }
}

Inside agy you can also use /statusline <command>, or go back to the built-in bar with /statusline reset.

WSL

Install agy-powerline with a Linux Node.js 20 or newer, inside WSL. Ubuntu's apt package (/usr/bin/node) is often older (Ubuntu 24.04 ships Node 18), and a global install with it needs sudo, which would make init write into root's home folder. Install Node for your user instead, for example with nvm:

nvm install 24
npm install -g agy-powerline
agy-powerline init

which node should point into your Linux home (~/.nvm/...), not /mnt/c/...: Windows npx is often on the WSL PATH via /mnt/c/Program Files/nodejs/npx, which would write a Windows Node path into Linux settings. init and doctor refuse to run under a Windows Node binary and tell you to re-run with Linux Node.

Performance

Antigravity starts the statusline on every refresh, so that path stays small:

Next steps