Installation
Installation
Install
Linux / macOS

$ curl --proto '=https' --tlsv1.2 -fsSL https://sh.sysg.dev/ | sh
Homebrew
$ brew install ra0x3/tap/sysg
Homebrew owns the binary it installs, so brew upgrade sysg swaps it without
the live re-execution the installer performs. A supervisor that is already
resident keeps serving the build it booted from until it is stopped; sysg version reports both.
Verify
$ sysg --version
Specific version
Install a specific version:
$ curl --proto '=https' --tlsv1.2 -fsSL https://sh.sysg.dev/ | sh -s -- --version 0.56.1
Switch versions
Switch to an already installed version, or download it:
$ curl --proto '=https' --tlsv1.2 -fsSL https://sh.sysg.dev/ | sh -s -- -v 0.56.1
The installer validates the downloaded binary before changing the active
version. A newer release can upgrade a running supervisor without restarting
its services when both binaries advertise the same live-reexec protocol and
handoff schema; major and minor version boundaries do not decide compatibility.
Residents from 0.56.0 through 0.57.0 still enforce the original
same-major/minor rule; earlier residents do not support live re-execution.
See Upgrading sysg for compatibility and
SG0502 recovery.
Non-interactive shells
The installer adds ~/.local/bin to PATH at the top of ~/.bashrc for bash,
and in ~/.zshenv and ~/.zshrc for zsh, so one-shot commands such as
ssh host 'sysg status' find sysg. Hosts set up by an older installer have
the line at the bottom of ~/.bashrc, where those commands never reach it.
Rerun the installer to fix them, even on the same version.
Cron and systemd read neither file, so give them the absolute path, for example
/home/ubuntu/.local/bin/sysg (or /home/ubuntu/.sysg/bin/sysg if the
installer fell back to that directory). Debian and Ubuntu cron default to
PATH=/usr/bin:/bin. A systemd user unit can use %h/.local/bin/sysg.
Next steps
Create your first configuration and start running services.