Installation
Requirements, the install script, Homebrew, and keeping solitary current.
Solitary is on its 0.x line: the configuration shape can still change between releases. Read the limitations before trusting a cell with credentials.
Requirements
- macOS or Linux
- Lima 2.0 or newer — solitary drives
limactlon the host andpodmanthrough it in the machine, so there is nothing else to install - Go, only if you build from source
Install
The install script downloads the release archive for your platform, checks it against the published checksum and puts the binary on your PATH. It works on macOS and Linux:
curl -fsSL https://solitary.balakin.io/install.sh | shIt installs into /usr/local/bin when that is writable without sudo and ~/.local/bin otherwise. SOLITARY_INSTALL_DIR overrides that, and SOLITARY_VERSION installs a tag other than the latest:
curl -fsSL https://solitary.balakin.io/install.sh | SOLITARY_VERSION=v0.1.1 shHomebrew
A tap of our own carries the formula, on macOS and on Linux, and installs Lima with it:
brew install balakin/solitary/solitarybrew upgrade solitary keeps it current after that. Both the install script and solitary update recognise an install Homebrew owns and say so rather than fighting over the binary.
Download a release by hand
Every release carries a tar.gz per platform and a checksums.txt. Pick the archive for your machine — darwin or linux, arm64 for Apple silicon, amd64 otherwise:
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')
curl -fsSL -o solitary.tar.gz \
"https://github.com/balakin/solitary/releases/latest/download/solitary_${OS}_${ARCH}.tar.gz"
tar -xzf solitary.tar.gz solitary
install -m 755 solitary /usr/local/bin/solitarysolitary --version prints the version that was baked in at build time. The release page lists every archive and the changelog for the version.
On macOS the binary is unsigned, so Gatekeeper quarantines a download from the browser; fetching it with curl as above avoids that, and neither Homebrew nor solitary update quarantines anything.
Staying current
solitary update replaces the binary with the newest release, after checking it against the published checksum:
solitary update # install the latest release
solitary update --check # only say whether one existsEvery other command mentions a newer release once a day, at most three times per release, and only when it is talking to a terminal. Set SOLITARY_NO_UPDATE_CHECK=1 to keep solitary from asking GitHub anything on its own.
A binary built from source is left alone by both: it is ahead of the release it names rather than behind it.
Build from source
git clone https://github.com/balakin/solitary
cd solitary
go mod tidy
make buildDependencies are not vendored, which is what go mod tidy is for. make lint runs the linters if you intend to change anything.
What the first run costs
Creating a cell takes a couple of minutes: it downloads a cloud image and installs podman inside the machine. Everything after that is container-speed — replacing a container, starting a stopped cell, or opening a shell.