Skip to content

swiftlysingh/coldbrew

Repository files navigation

Coldbrew

A Homebrew-compatible package manager in Rust - user-controlled, fast, and reproducible.

Features

  • Fast: Written in Rust for maximum performance
  • Reproducible: Project lockfiles ensure consistent installs
  • Multi-version: Install multiple versions of packages side-by-side
  • Shim-based: Like mise, resolves versions based on project configuration
  • Homebrew-compatible: Uses Homebrew's formula index and bottles

Design Docs

  • Core principles, CLI behavior, and Homebrew integration: docs/core-principles-homebrew.md
  • Parallel install pipeline plan: docs/parallel-pipeline.md

Installation

Coldbrew is not published on crates.io yet.

Install from GitHub Releases (recommended)

  1. Download the appropriate archive from the GitHub Releases page: https://github.com/swiftlysingh/coldbrew/releases
  2. Extract the crew binary.
  3. Move it to a directory on your PATH (for example, /usr/local/bin or ~/.local/bin).
  4. Run crew --help to verify it works.

Note: Linux release artifacts are not currently tested in CI. Please report any issues.

Install from source (dev)

Install from source:

git clone https://github.com/swiftlysingh/coldbrew
cd coldbrew
cargo install --path .

Quick Start

# Update the package index
crew update

# Search for packages
crew search jq

# Install a package
crew install jq

# List installed packages
crew list

# Show package info
crew info jq

Project Configuration

Create a coldbrew.toml in your project:

[packages]
node = "22"
python = "3.12"
jq = "1.7"

[dev_packages]
rust = "1.75"

Then run:

crew lock    # Generate lockfile
crew install # Install from lockfile

Global Configuration

Global settings live in ~/.coldbrew/config.toml. Example:

[settings]
parallel_downloads = 8      # min(cpus * 2, 16)
parallel_extractions = 3    # min(cpus - 1, 4)
parallel_codesigning = 2    # min(cpus, 4)
parallel_installs = 3       # min(cpus - 1, 4)
per_bottle_progress = false # show per-bottle download bars

Commands

Command Description
update Update the package index
search <query> Search for packages
info <package> Show package details
install <packages> Install packages
uninstall <packages> Uninstall packages
upgrade [packages] Upgrade packages
list List installed packages
which <binary> Show which package provides a binary
pin <package> Pin a package version
default <package@version> Set default version
init Create coldbrew.toml
lock Generate lockfile
tap <user/repo> Add third-party repository
space Show disk usage and cleanup candidates
space clean [--all] [--dry-run] Interactive cleanup
doctor Check for problems

Man Page

The repository includes a manual page at docs/crew.1.

Install it locally:

mkdir -p ~/.local/share/man/man1
cp docs/crew.1 ~/.local/share/man/man1/
man crew

Development

Enable the repository hooks (run once per clone):

git config core.hooksPath .githooks

The pre-commit hook runs cargo fmt and re-stages Rust files that were already staged so formatting issues are fixed before you commit. If cargo fmt is missing, install rustfmt with:

rustup component add rustfmt

License

MIT

About

A Homebrew-compatible package manager written in Rust, built around reproducible installs and project lockfiles

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors