Skip to content

Binary Distribution

Breeze serves agent binaries and viewer installers through its own API. The download source is configurable via BINARY_SOURCE, so downloads work regardless of how you deploy.

Set BINARY_SOURCE to control where downloads come from:

ModeDescriptionWhen to use
github (default)Agents download directly from GitHub Releases CDNMost deployments
localServe from disk, with optional S3 offloadDistribute binaries from your own infrastructure

No local binaries needed. Download requests redirect to GitHub Releases:

GET /api/v1/agents/download/linux/amd64
→ 302 https://github.com/lanternops/breeze/releases/download/v0.11.3/breeze-agent-linux-amd64

The release version is determined by BINARY_VERSION or BREEZE_VERSION. If neither is set, redirects to the latest release.

On startup, the API calls GitHub’s Releases API to register the current version’s checksums in the agent_versions table, so agents know when a new version is available.

Binaries are served from disk. The API reads from these directories:

VariableDefaultContents
AGENT_BINARY_DIR./agent/binAgent binaries (e.g. breeze-agent-linux-amd64)
VIEWER_BINARY_DIR./viewer/binViewer installers (e.g. breeze-viewer-macos.dmg)
HELPER_BINARY_DIR/data/binaries/helperHelper binaries (e.g. breeze-helper-windows.msi)

On startup, the API:

  1. Scans AGENT_BINARY_DIR for agent binaries
  2. Computes SHA-256 checksums and registers each binary in the agent_versions table
  3. Marks them as the latest version
  4. If S3 is configured, syncs both directories to your S3 bucket

The docker-compose.yml includes a binaries init container that bundles agent and viewer binaries into a shared volume:

services:
binaries-init:
image: ghcr.io/lanternops/breeze/binaries:${BREEZE_VERSION:-latest}
pull_policy: always
volumes:
- binaries:/target
restart: "no"
api:
volumes:
- binaries:/data/binaries:ro
environment:
BINARY_SOURCE: ${BINARY_SOURCE:-github}
AGENT_BINARY_DIR: /data/binaries/agent
VIEWER_BINARY_DIR: /data/binaries/viewer
HELPER_BINARY_DIR: /data/binaries/helper
depends_on:
binaries-init:
condition: service_completed_successfully

The init container:

  1. Runs on every docker compose up (pull_policy: always ensures the latest image is pulled)
  2. Copies bundled binaries to the shared binaries volume
  3. Exits (restart: “no”)
  4. The API mounts the volume read-only

When BINARY_SOURCE=github (default), the API ignores the local volume and syncs versions from GitHub Releases instead. The volume is only used when BINARY_SOURCE=local.

When BINARY_SOURCE=local and S3 credentials are configured, Breeze:

  1. On startup: syncs local binaries to your S3 bucket
  2. On download: returns a 302 redirect to a presigned S3 URL (falls back to disk if presigning fails)

This offloads download bandwidth from your API server to S3/R2/MinIO.

VariableDefaultDescription
S3_ENDPOINTS3-compatible endpoint
S3_ACCESS_KEYAccess key
S3_SECRET_KEYSecret key
S3_BUCKETBucket name
S3_REGIONus-east-1Bucket region
S3_PRESIGN_TTL900Presigned URL expiration in seconds (15 min)

S3 is activated when S3_BUCKET, S3_ACCESS_KEY, and S3_SECRET_KEY are all set. Files are uploaded to:

  • s3://{bucket}/agent/ — agent binaries
  • s3://{bucket}/viewer/ — viewer installers
GET /api/v1/agents/download/:os/:arch
ParameterValues
oslinux, darwin, windows
archamd64, arm64
GET /api/v1/viewers/download/:platform
ParameterValuesFile
platformmacosbreeze-viewer-macos.dmg
windowsbreeze-viewer-windows.msi
linuxbreeze-viewer-linux.AppImage
GET /api/v1/agents/download/helper/:os/:arch
ParameterValues
oslinux, darwin, windows
archamd64, arm64

Helper binaries are companion processes used for remote desktop in headless/service contexts (Session 0 on Windows, LaunchDaemon on macOS, systemd on Linux).

The breeze-backup binary handles enterprise backup operations (Hyper-V, MSSQL, system image, cloud-to-cloud). It is bundled in installers, not downloaded separately:

  • Windows MSI: installed to the same directory as breeze-agent.exe
  • macOS .pkg: installed to /usr/local/bin/breeze-backup
  • Linux: included alongside the agent binary

The backup binary communicates with the main agent over HMAC-signed IPC. It is not served through the download API — it ships as part of the agent installer package.

GET /api/v1/agents/install.sh

One-line agent installer that auto-detects OS/arch, downloads the binary, enrolls, and installs as a system service.

Agents download directly from GitHub. No configuration needed:

.env
# BINARY_SOURCE=github (default, no change needed)