Installation
Cargo (Rust)
Section titled “Cargo (Rust)”cargo install scythe-clicargo-binstall is also supported and downloads the prebuilt binary instead of compiling from source:
cargo binstall scythe-clinpm (Node.js)
Section titled “npm (Node.js)”For Node.js projects, install scythe as a pinned dev dependency – no Rust toolchain required. A postinstall step downloads the prebuilt binary matching your platform and verifies its checksum.
npm install --save-dev scythe-clinpx scythe --versionSupports Linux (x64/arm64, glibc only), macOS (x64/arm64), and Windows (x64, with x64 emulation on
ARM64). See the scythe-cli README for
supported environment variables (proxy configuration, SCYTHE_BINARY, SCYTHE_CACHE_DIR).
pip (Python)
Section titled “pip (Python)”pip install scythe-sqlscythe --versionpip install does not run code for a wheel install, so the binary is downloaded (and its checksum
verified) on first invocation of scythe, then cached and reused. In a Dockerfile, warm the cache
at build time with pip install scythe-sql && scythe --version. See the
scythe-sql README for supported
environment variables.
Homebrew (macOS/Linux)
Section titled “Homebrew (macOS/Linux)”brew install Goldziher/tap/scythePre-built binaries are available for macOS (arm64, x86_64) and Linux (x86_64, arm64). No Rust toolchain needed.
From Source
Section titled “From Source”git clone https://github.com/Goldziher/scythe.gitcd scythecargo install --path crates/scythe-cliGitHub Actions
Section titled “GitHub Actions”Use the moving v0 action to install the latest scythe release, verify its checksum, and add it to
PATH:
steps: - uses: actions/checkout@v4 - name: Install scythe id: scythe uses: Goldziher/scythe@v0 - run: scythe --versionv0 tracks the latest compatible action implementation. By default, the action resolves the latest
scythe GitHub release using github.token and caches the installed binary by version, operating
system, and runner architecture. Pin the CLI version independently when reproducibility matters:
- name: Install scythe 0.18.1 without caching id: scythe uses: Goldziher/scythe@v0 with: version: 0.18.1 cache: false- run: scythe checkThe version input accepts 0.18.1 or v0.18.1; omit it or pass latest to resolve the latest
release. Set github-token only when the default workflow token cannot read release metadata.
Every download is checked against the release’s SHA-256 checksum file before installation. The action supports native x64 and ARM64 Linux and macOS runners. Windows x64 and ARM64 runners install the x64 Windows binary; Windows ARM64 therefore requires x64 emulation.
The step exposes these outputs:
| Output | Value |
|---|---|
version |
Installed version without the v prefix |
target |
Installed Rust target triple |
install-dir |
Directory added to PATH |
Reference them through the step id, for example ${{ steps.scythe.outputs.version }}.
Pre-commit / prek
Section titled “Pre-commit / prek”If you only need scythe for pre-commit hooks, add it directly to your .pre-commit-config.yaml:
repos: - repo: https://github.com/Goldziher/scythe rev: v0.18.1 hooks: - id: scythe-fmt - id: scythe-lintSee Pre-commit Hooks for all available hooks and configuration.
Verify Installation
Section titled “Verify Installation”scythe --version