Installation¶
Slipway should normally be installed from published release artifacts or release-backed package channels. Developer-oriented paths such as go install, Nix, and local source builds are available when you need an unreleased version, a not-yet-packaged platform path, or a reproducible development environment.
Replace vX.Y.Z with the release tag you want. For unreleased work, use the local checkout build path.
Official Sources¶
Use documented release sources owned by the Slipway project: GitHub Releases under signalridge/slipway, container images at ghcr.io/signalridge/slipway, Homebrew Cask entries from signalridge/tap, Scoop manifests from signalridge/scoop-bucket, and AUR slipway-bin when that channel has been published. If an AI tool finds a same-name package in another registry, stop and verify ownership before installing it.
Prerequisites¶
- Git for repository initialization and governed work.
- Go matching
go.modwhen building from source or usinggo install. - Optional: Nix when using the flake package.
- Optional: Docker or another OCI runtime when using the container image.
- Optional: MkDocs Material for local docs builds.
- Optional: one or more AI coding tools supported by
slipway init --tools.
Install Order¶
Use this order for normal installations:
- Prefer an official release archive or a release-backed package channel for your platform.
- Use the container image when you want to run Slipway without installing a host binary.
- Use
go installwhen release packages are unavailable or you explicitly want a Go-managed binary. - Use Nix or a local source build for development and unreleased changes.
Release Install Matrix¶
| Platform | Release artifacts | Package channels | Other paths |
|---|---|---|---|
| macOS amd64 | slipway_<version>_darwin_amd64.tar.gz |
Homebrew Cask when published | Go install, Nix, source build |
| macOS arm64 | slipway_<version>_darwin_arm64.tar.gz |
Homebrew Cask when published | Go install, Nix, source build |
| Linux amd64 | slipway_<version>_linux_amd64.tar.gz, .deb, .rpm, .apk |
AUR slipway-bin when published |
Go install, Nix, container image, source build |
| Linux arm64 | slipway_<version>_linux_arm64.tar.gz, .deb, .rpm, .apk |
AUR slipway-bin when published |
Go install, Nix, container image, source build |
| Windows amd64 | slipway_<version>_windows_amd64.zip |
Scoop when published | Go install, source build |
| Windows arm64 | slipway_<version>_windows_arm64.zip |
Scoop when published | Go install, source build |
GoReleaser also publishes checksums.txt, archive SBOMs, checksum signatures, and container signatures when the release workflow completes. Package-manager channels use optional publishing credentials; if a channel is not present for a release, prefer the direct release archive before falling back to go install, Nix, or the local checkout path.
Direct Release Archives¶
Use a direct release archive when you want the published binary without a package manager. The per-platform sections below show macOS, Linux, and Windows commands.
Package Managers¶
Use release-backed package managers when the matching channel has been published for the release:
- macOS: Homebrew Cask through
signalridge/tap. - Linux:
.deb,.rpm,.apk, or AURslipway-bin. - Windows: Scoop through
signalridge/scoop-bucket.
Go Install Fallback¶
Use this path when Go is available and you want a developer fallback or a Go-managed binary on PATH:
go install github.com/signalridge/slipway@latest
slipway --version
For a specific release:
go install github.com/signalridge/slipway@vX.Y.Z
slipway --version
Build From Source¶
Use this path only when developing Slipway or testing unreleased changes:
go build -o ./bin/slipway .
./bin/slipway --version
./bin/slipway --help
Use ./bin/slipway directly or put ./bin on your PATH.
macOS¶
Homebrew Cask:
brew install --cask signalridge/tap/slipway
slipway --version
Direct archive:
TAG=vX.Y.Z
VERSION="${TAG#v}"
ARCH="$(uname -m)"
case "$ARCH" in
arm64) SLIPWAY_ARCH=arm64 ;;
x86_64) SLIPWAY_ARCH=amd64 ;;
*) echo "unsupported macOS arch: $ARCH" >&2; exit 1 ;;
esac
curl -LO "https://github.com/signalridge/slipway/releases/download/${TAG}/slipway_${VERSION}_darwin_${SLIPWAY_ARCH}.tar.gz"
tar xzf "slipway_${VERSION}_darwin_${SLIPWAY_ARCH}.tar.gz"
install -m 0755 slipway /usr/local/bin/slipway
slipway --version
Linux¶
Direct archive:
TAG=vX.Y.Z
VERSION="${TAG#v}"
ARCH="$(uname -m)"
case "$ARCH" in
aarch64|arm64) SLIPWAY_ARCH=arm64 ;;
x86_64) SLIPWAY_ARCH=amd64 ;;
*) echo "unsupported Linux arch: $ARCH" >&2; exit 1 ;;
esac
curl -LO "https://github.com/signalridge/slipway/releases/download/${TAG}/slipway_${VERSION}_linux_${SLIPWAY_ARCH}.tar.gz"
tar xzf "slipway_${VERSION}_linux_${SLIPWAY_ARCH}.tar.gz"
sudo install -m 0755 slipway /usr/local/bin/slipway
slipway --version
Debian or Ubuntu:
TAG=vX.Y.Z
VERSION="${TAG#v}"
case "$(uname -m)" in
aarch64|arm64) ARCH=arm64 ;;
x86_64) ARCH=amd64 ;;
*) echo "unsupported Linux arch: $(uname -m)" >&2; exit 1 ;;
esac
curl -LO "https://github.com/signalridge/slipway/releases/download/${TAG}/slipway_${VERSION}_linux_${ARCH}.deb"
sudo dpkg -i "slipway_${VERSION}_linux_${ARCH}.deb"
slipway --version
Fedora, RHEL, or compatible RPM systems:
TAG=vX.Y.Z
VERSION="${TAG#v}"
case "$(uname -m)" in
aarch64|arm64) ARCH=arm64 ;;
x86_64) ARCH=amd64 ;;
*) echo "unsupported Linux arch: $(uname -m)" >&2; exit 1 ;;
esac
curl -LO "https://github.com/signalridge/slipway/releases/download/${TAG}/slipway_${VERSION}_linux_${ARCH}.rpm"
sudo rpm -i "slipway_${VERSION}_linux_${ARCH}.rpm"
slipway --version
Alpine:
TAG=vX.Y.Z
VERSION="${TAG#v}"
case "$(uname -m)" in
aarch64|arm64) ARCH=arm64 ;;
x86_64) ARCH=amd64 ;;
*) echo "unsupported Linux arch: $(uname -m)" >&2; exit 1 ;;
esac
curl -LO "https://github.com/signalridge/slipway/releases/download/${TAG}/slipway_${VERSION}_linux_${ARCH}.apk"
sudo apk add --allow-untrusted "slipway_${VERSION}_linux_${ARCH}.apk"
slipway --version
Arch Linux through AUR when the package has been published:
yay -S slipway-bin
slipway --version
Container image:
TAG=vX.Y.Z
VERSION="${TAG#v}"
docker run --rm ghcr.io/signalridge/slipway:${VERSION} --version
To operate on the current repository from the container:
docker run --rm -v "$PWD:/workspace" -w /workspace ghcr.io/signalridge/slipway:${VERSION} status --json
Windows¶
Scoop, when the bucket has been published:
scoop bucket add signalridge https://github.com/signalridge/scoop-bucket
scoop install slipway
slipway --version
Direct zip:
$Tag = "vX.Y.Z"
$Version = $Tag.TrimStart("v")
$Arch = "amd64"
$Asset = "slipway_${Version}_windows_${Arch}.zip"
Invoke-WebRequest "https://github.com/signalridge/slipway/releases/download/${Tag}/${Asset}" -OutFile $Asset
Expand-Archive $Asset -DestinationPath .
.\slipway.exe --version
Use arm64 instead of amd64 on Windows arm64 when that release asset is present.
Nix¶
From a checkout:
nix build .#slipway
./result/bin/slipway --version
From GitHub:
nix run github:signalridge/slipway#slipway -- --help
Verify Release Downloads¶
Download the release checksum file with the asset and verify before installing when your environment requires artifact integrity checks:
TAG=vX.Y.Z
curl -LO "https://github.com/signalridge/slipway/releases/download/${TAG}/checksums.txt"
sha256sum -c checksums.txt --ignore-missing
On macOS, use shasum -a 256 if GNU sha256sum is unavailable.
Initialize A Repository¶
Run init from the target repository or a child directory inside it:
slipway init
This writes .slipway.yaml only. Add AI-tool surfaces with --tools:
slipway init --tools claude
slipway init --tools codex,opencode
slipway init --tools all
slipway init --tools none
Supported tool IDs are claude, codex, cursor, gemini, and opencode.
Use --refresh to regenerate Slipway-managed adapter files:
slipway init --tools opencode --refresh
If --tools is omitted during refresh, Slipway detects previously generated adapters and refreshes those managed surfaces.
AI Tool Installation Prompt¶
Paste this into an AI coding tool when you want the tool to install and initialize Slipway for the current repository. Read it before pasting and supervise the agent while it runs. The prompt is short on purpose — it points the agent at this page so the canonical guidance below stays in one place:
Install Slipway for this repository.
Read https://signalridge.github.io/slipway/installation/ — specifically the
"AI Tool Installation Prompt" section — and follow it.
Before installing, detect the operating system and CPU architecture, and run
`slipway --version` to see if Slipway is already on PATH. Prefer documented
release sources owned by the Slipway project (the `signalridge` org). Do NOT
install same-name packages from unrelated registries. If no documented path
applies, stop and report.
After installing, run `slipway --version`, `slipway status --json`, and
`git status --short --branch`. Report which install path succeeded and what
files were generated (especially `.slipway.yaml` and adapter directories).
The rest of this section is the canonical guidance the agent will read after fetching this page.
Discovery¶
- Inspect the repository root and note whether
.slipway.yamlalready exists. - Detect this machine's operating system and CPU architecture.
- Run
slipway --version. If it prints a version, Slipway is already on PATH — skip to Verify. Otherwise continue to Install.
Install (try in preference order; stop on the first success)¶
- A documented Slipway release artifact or release-backed package channel owned by the Slipway project (
signalridge) for this OS and architecture. If the matching artifact is missing, do NOT fall back to a same-name package from an unrelated registry — continue to the next step. - macOS: if
brewis available and thesignalridge/tapcask has been published, runbrew install --cask signalridge/tap/slipway. Otherwise use the matchingdarwin_amd64ordarwin_arm64release archive. - Linux: pick the matching
linux_amd64orlinux_arm64release archive, or the matching.deb,.rpm,.apk, AURslipway-bin, orghcr.io/signalridge/slipwaycontainer image when that channel is available. - Windows: use Scoop (
signalridge/scoop-bucket) if configured. Otherwise use the matchingwindows_amd64orwindows_arm64release zip. - If no release-backed channel is available but Go is installed, run
go install github.com/signalridge/slipway@latest. - If this repository IS the Slipway source checkout and you intentionally need the local unreleased version, run
go build -o ./bin/slipway .and use./bin/slipway. - If none of the documented paths work, STOP and report which paths were attempted and what blocked each. Do not invent an installer and do not pull a same-name package from an unrelated registry.
Initialize¶
- Ask which AI-tool adapters this repository uses if it is unclear. Supported tool IDs are
claude,codex,cursor,gemini, andopencode. - Run one of
slipway init --tools <tool-id>,slipway init --tools claude,codex,opencode, orslipway init --tools all. - If Slipway-generated adapter files already exist, use
slipway init --tools <detected-tools> --refreshinstead. - Do NOT overwrite unrelated user-owned AI-tool files. If a generated path would collide with user-owned content, stop and report instead of overwriting.
Verify¶
slipway --versionslipway status --jsongit status --short --branch
Report¶
- Which install path succeeded, and which earlier paths were skipped or failed.
- Newly generated files, especially
.slipway.yamland any tool directories such as.claude/skills,.codex/skills,.cursor/skills,.gemini/skills, or.opencode/skills. - Any unresolved follow-ups the user should know about (for example, a missing release on this platform or
slipway initchoices that still need a human decision).
For OpenCode specifically, the expected generated project surfaces are:
.opencode/skills/slipway-*/SKILL.md.opencode/commands/slipway-*.md.opencode/hooks/slipway-session-start.sh
OpenCode commands use slash-hyphen spelling such as /slipway-new, /slipway-next, and /slipway-run. Some OpenCode builds display project commands with a project prefix in the command picker; the generated file path is the stable contract.
Verify Installation¶
slipway --version
slipway status --json
git status --short --branch
In a repository initialized with adapters, inspect generated files:
find .claude .codex .cursor .gemini .opencode -maxdepth 3 -type f 2>/dev/null
Codex prompts are generated in $CODEX_HOME/prompts/ if CODEX_HOME is set, otherwise under ~/.codex/prompts/.