Install
The CLI ships inside the app. Pick Gallager menu → Install Command Line Tool… and, after one admin prompt, gallager is on yourPATH (zsh completions optional). It talks to the running app over a local socket, so the app must be open. If you move the app, re-run the installer.
A taste of it
# Notify when a long build finishes — --push mirrors it to your iPhone, # and tapping the notification jumps back to this exact pane make build && gallager notify --title "Build done" --body "All green" --push # Bootstrap a named session (no-op if it already exists) gallager new-session --name work --path ~/code/proj --if-missing --color blue # Split the current window and start tailing logs in the new pane new=$(gallager split-pane right --json | jq -r '.result.id') gallager send $'tail -f /tmp/build.log\n' --pane "$new" # Show progress on the session row while a task runs gallager set-progress indeterminate; ./long-task.sh; gallager set-progress clear # At login: wait for the app, then launch an agent in a project gallager wait-ready && gallager start-project ~/code/proj
The command families
| Sessions | list-sessions, new-session, select-session, close-session, plus per-session flair: set-title, set-color, set-emoji, session-state, set-progress |
| Windows & panes | new-window, split-pane, select-pane, capture-pane --scrollback, rename and close |
| Input | send <text> (literal — add --enter to actually run it) and send-key for enter/tab/escape/arrows |
| Notifications | notify --title … --body …, with --push to deliver to paired iPhones |
| Editor | edit <file> — opens the file in Gallager's editor and blocks until you submit or cancel |
| Projects | list-projects, start-project <path> to launch an agent session |
| Plugins | plugin list / install / update / enable / disable / logs / remove |
| Layouts | apply <file> — build whole sessions from a YAML/JSON description (a tmuxp superset), with --dry-run |
Every command takes --json for scripting (errors come back as a structured envelope with a non-zero exit) and --pane /--window / --session to target explicitly.
How targeting works
Run inside a Gallager-managed pane and commands target that pane automatically (via $TMUX_PANE). Outside tmux, they fall back to the currently active pane — pass an explicit --pane in scripts. And since Gallager is real tmux underneath, every id you see (work,work:0, %3) is an ordinary tmux primitive; thetmux command itself remains the escape hatch for anything the CLI doesn't expose.