Installation
To install peppy, run the following command in your terminal:
curl -fsSL https://peppy.bot/install.sh | shThe installer supports Ubuntu and the Linux distributions built on it (x86_64 and aarch64, tested on Ubuntu 24.04), and macOS on Apple Silicon. It recognises an Ubuntu-based distribution by ID or ID_LIKE in /etc/os-release. On any other system, Fedora and Arch Linux among them, it stops with an error before it changes anything.
This installer also sets up the peppy background service and populates the repository index that name-based launches resolve from. To skip that step, set PEPPY_NO_SERVICE_INSTALL=1. The flag skips the repository setup along with the service, so a launch by name then fails with nodes.json5 not found or empty until you run peppy repo init and peppy repo update yourself.
The installer can also unpack a release archive you already have, instead of downloading one:
curl -fsSL https://peppy.bot/install.sh | sh -s -- ./peppy-x86_64-unknown-linux-gnu.tgzIf a daemon is already running, the installer asks for confirmation before replacing it; set PEPPY_FORCE_REINSTALL=1 for non-interactive installs.
Each Peppy version reads the content of the default repositories that was released with it (see Repositories). Installing another Peppy version therefore also changes the hub content those repositories read, and the daemon reads it again at its next start.
Installer environment variables
Section titled “Installer environment variables”| Variable | Effect |
|---|---|
PEPPY_VERSION | Version to install (default: latest) |
PEPPY_HOME | Install prefix (default: ~/.peppy) |
PEPPY_BIN_DIR | Binary install directory (default: $PEPPY_HOME/bin) |
PEPPY_REPOURL | Base URL for downloads (default: https://peppy.bot) |
PEPPY_DOWNLOAD_URL | Override the full download URL |
PEPPY_NO_PATH_UPDATE | If set, do not update the shell PATH config |
PEPPY_FORCE_REINSTALL | If set, skip the confirmation prompt when a daemon is running |
PEPPY_NO_ROOT_INSTALL | If set, never use sudo; missing dependencies become hard errors and Apptainer setup is deferred to peppy container setup |
PEPPY_NO_SERVICE_INSTALL | If set, skip the service install and the repository init/refresh |
PEPPY_NO_CONTAINER_SETUP | If set, skip the Apptainer container setup (useful inside Docker/Podman) |
Verifying the installation
Section titled “Verifying the installation”The service installs at user level by default; run peppy service install with sudo for a system-wide install. The snippets below assume the default user-level install. You can verify the service is running with:
systemctl --user status peppylaunchctl list bot.peppyManaging the service (optional)
peppy ships its own platform-independent service commands, which are what the installer itself runs:
peppy service install # install the background servicepeppy service stop # stop itpeppy service uninstall # remove itTo drive the service through the platform’s own service manager instead:
Start the service:
systemctl --user start peppyStop the service:
systemctl --user stop peppyRestart the service:
systemctl --user restart peppyStart the service:
launchctl load ~/Library/LaunchAgents/bot.peppy.plistStop the service:
launchctl unload ~/Library/LaunchAgents/bot.peppy.plistRestart the service:
-
Unload the service:
Terminal window launchctl unload ~/Library/LaunchAgents/bot.peppy.plist -
Reload the service:
Terminal window launchctl load ~/Library/LaunchAgents/bot.peppy.plist