Install the spec CLI
spec is a single static binary that drives the SpecStrand work loop over the
REST API. It has no runtime dependencies: download it, put it on your PATH, and run it.
New to SpecStrand? The getting-started guide walks install, auth,
and your first task end to end.
Both installers download only from https://specstrand.com, the origin that
serves them.
Install with one command
Linux or macOS. Install the latest release to your PATH:
curl -fsSL https://specstrand.com/install.sh | shWindows, in PowerShell:
irm https://specstrand.com/install.ps1 | iexConfirm the install:
spec versionWhat the installer does
- Fetches only from
https://specstrand.com, never from a third party. SetSPEC_INSTALL_BASEto point it at a mirror. - Reads
releases/latest.jsonfrom that origin to resolve the latest tag and the asset for your platform. - Verifies the download's SHA256 against the checksum recorded in that manifest before unpacking it. A tampered, truncated, or wrong-content download is rejected, not installed.
- Extracts only the expected
specbinary from the archive, so an unexpected archive cannot drop files elsewhere. - Never executes any downloaded content. The only thing that runs is the
specbinary you invoke yourself afterwards. - Warns, and tells you how to fix it, if the install directory is not on your PATH.
Piping a script to a shell deserves a look first. Open either URL in a browser, or pipe it
to a pager (curl -fsSL https://specstrand.com/install.sh | less, irm https://specstrand.com/install.ps1), and read it before you run it.
Update the CLI
After the first install, spec update updates the CLI in place. It reads the
same releases/latest.json from the same origin, and trusts it only when its
Ed25519 signature verifies against a release key built into the CLI. It then verifies the
archive's SHA256 against the manifest before it replaces the binary, and never follows a
download URL off that origin.
It changes your synced skills only when you ask with --include-skills, and it
never overwrites a skill file you edited locally unless you add --force.
spec update --check # report only: a newer CLI? skills out of date?
spec update # update the CLI; warn if skills are out of date
spec update --include-skills # also re-sync skills to the targets you used last time
spec update --cli-only # update the CLI; skip the skill checkOther commands print a one-line notice on stderr, at most once a day, when a newer release
exists. Set SPEC_NO_UPDATE_CHECK=1 to turn it off.
Direct downloads
Direct downloads, with the checksum for each one, are listed here from this instance's release manifest.
Overrides
Both installers read the same two environment variables. spec update reads SPEC_INSTALL_BASE too, and it must be an https URL.
| Variable | Default | Purpose |
|---|---|---|
SPEC_INSTALL_BASE | https://specstrand.com | Download from a mirror instead. Manifest and archives are both read from here. |
SPEC_INSTALL_DIR | $HOME/.local/bin (Linux, macOS), %LOCALAPPDATA%\SpecStrand\bin (Windows) | Install somewhere else, for example a directory already on your PATH. |
A system-wide install on Linux or macOS, which usually needs elevation:
curl -fsSL https://specstrand.com/install.sh | SPEC_INSTALL_DIR=/usr/local/bin shInstall from source
With a Go toolchain and a source checkout, build the CLI yourself. This skips the release manifest entirely and builds whatever your checkout is at.
go install ./cmd/specSupported platforms
Every release publishes these five builds.
| OS | Architecture | Asset |
|---|---|---|
| Linux | amd64 | spec-<tag>-linux-amd64.tar.gz |
| Linux | arm64 | spec-<tag>-linux-arm64.tar.gz |
| macOS | amd64 (Intel) | spec-<tag>-darwin-amd64.tar.gz |
| macOS | arm64 (Apple silicon) | spec-<tag>-darwin-arm64.tar.gz |
| Windows | amd64 | spec-<tag>-windows-amd64.zip |
There is no arm64 Windows build. install.ps1 installs the amd64 build on an
arm64 machine, which Windows runs under emulation, and warns when it does.
Next
Authenticate and run your first task with the getting-started guide, or jump to the CLI command reference.