An independent package manager for compiled binaries.
- Install binaries from GitHub releases or directly from URLs.
- Easily distribute binaries across teams and private repositories.
- Get the latest releases ahead of other package managers.
- Rapidly browse, install, and experiment with different projects.
- Configure where to install binaries.
- No need for
sudo
. - Just a single binary with 0 dependencies.
- Portable
Stewfile
with optional pinned versioning. - Headless batch installs from a
Stewfile.lock.json
file.
Stew supports macOS, Linux, and Windows.
macOS
brew install marwanhawari/tap/stew
Arch
git clone https://aur.archlinux.org/stew.git
cd stew
makepkg -sric
Compiled binaries can be downloaded from the releases page.
Install the latest released version
go install github.com/marwanhawari/stew@latest
Install the latest unreleased source
git clone https://github.com/marwanhawari/stew
cd stew
go install .
# Install from GitHub releases
stew install junegunn/fzf # Install the latest release
stew install junegunn/[email protected] # Install a specific, tagged version
# Install directly from a URL
stew install https://github.com/cli/cli/releases/download/v2.4.0/gh_2.4.0_macOS_amd64.tar.gz
# Install from an Stewfile
stew install Stewfile
# Install headlessly from a Stewfile.lock.json
stew install Stewfile.lock.json
# Search for a GitHub repo and browse its contents with a terminal UI
stew search ripgrep
# Browse a specific GitHub repo's releases and assets with a terminal UI
stew browse sharkdp/hyperfine
# Upgrade a binary to its latest version. Not for binaries installed from a URL.
stew upgrade rg # Upgrade using the name of the binary directly
stew upgrade --all # Upgrade all binaries
# Uninstall a binary
stew uninstall rg # Uninstall using the name of the binary directly
stew uninstall --all # Uninstall all binaries
# Rename an installed binary using an interactive UI
stew rename rg # Rename using the name of the binary directly
# List installed binaries
stew list # Print to console
stew list > Stewfile # Create an Stewfile without pinned tags
stew list --tags > Stewfile # Pin tags
# Configure the stew file paths using an interactive UI
stew config # Automatically updates the stew.config.json
The repo probably uses an unconventional naming scheme for their binaries. You can always manually select the release asset.
Yes, stew
will automatically detect if you have a GITHUB_TOKEN
environment variable and allow you to access binaries from your private repositories.
The default installation path will depend on your OS:
Linux/macOS | Windows |
---|---|
~/.local/bin |
~/AppData/Local/stew/bin |
However, this location can be configured.
Make sure that the installation path is in your PATH
environment variable. Otherwise, you won't be able to use any of the binaries installed by stew
.