Download & Install

Get the SOW binary: prebuilt releases, source builds, and the supported platform matrix.

SOW is one static executable. There is no installer, no package to add, no service to enable, and no state directory until you run a command that needs one. Installing it means putting a single file on your PATH.

Prebuilt binaries

Release archives for every supported platform are published on the GitHub releases page. Download the archive that matches your OS and CPU, extract it, and move the binary into place:

tar -xzf sow_*.tar.gz
sudo install -m 0755 sow /usr/local/bin/sow

Without root, ~/.local/bin works just as well. SOW never needs elevated privileges for its own operation.

Platform matrix

The binary is built with CGO_ENABLED=0, so it carries no libc dependency and runs on any reasonably modern kernel of the matching OS and CPU family.

OSamd64arm64Notes
Linuxsupportedsupportedprimary target
macOS (Darwin)supportedsupportedIntel and Apple Silicon
Windowsnot supported

Windows is out of scope: SOW depends on POSIX advisory locks, hardlinks, and atomic rename. For the same reason, keep repositories on local POSIX filesystems — network filesystems such as NFS do not provide the locking and durability semantics it relies on.

Build from source

A Go toolchain is the only build requirement. The project targets Go 1.26 or newer.

git clone https://github.com/pgsty/sow.git
cd sow
CGO_ENABLED=0 go build -trimpath -o sow ./cmd/sow

Because there is no cgo, cross-compiling needs nothing beyond Go itself:

CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -trimpath -o sow-linux-arm64 ./cmd/sow

Verify

sow version
sow 0.2.0-dev darwin/arm64 go1.26.5

The line reports the SOW version, the platform the binary targets, and the Go toolchain that built it. sow --version prints the same string, and sow help lists the full command tree.

What you do not install

Generating repository metadata never shells out. SOW parses RPM headers and Debian control files itself, computes its own checksums, and writes repodata/, Packages, and Release in-process — createrepo_c, dpkg-scanpackages, reprepro, and modifyrepo_c are never invoked.

Only two optional features touch the environment: RPM package signing needs rpm and a working GPG setup, and an agent:// key reference needs a running gpg-agent. Everything else, including file:// and env:// metadata signing, runs inside the binary. See Installation for the details.

Next steps

  • Quick Start — turn a directory of packages into a servable repository in five minutes.
  • First Workspace — build a curated, multi-architecture repository.
  • Compatibility — the tested client matrix.
Last modified: 2026-08-08: init commit (fe725aa)