poof 0.6.0

Easy to use zero-config, zero-install, zero-dependencies manager of pre-built software that works like magic
poof-0.6.0 is not a library.
Visit the last successful build: poof-0.3.1

GitHub Release Crates.io Crates.io MSRV

CI Security audit codecov dependency status

Licenses License: MIT

poof ๐Ÿช„ - magic manager of pre-built software

Easy-to-use all-in-one binary with zero-config, zero-install, and zero-dependencies.

You just run poof install someuser/somerepo and... poof! it is installed and available in your shell.

"poof-poof"

What poof says when it makes awesome pre-built software available for you!

"I am poof"

What poof thinks of itself

For more information read below or check the documentation in the wiki. Got an idea? Let's talk in Discussions!

GitHub Wiki GitHub Discussions

Features

  • ๐Ÿš€ Easy to use: Sensible commands that are easy to remember and type. Just run poof help to know more
  • ๐Ÿ‘ค User-space: Designed to work in user-space and be portable. No root access needed to manage your tools
  • ๐Ÿง  Smart asset selection: Automatically detects your OS, architecture, and libc (glibc vs musl) to download the right binary for your configuration. Supports multi-tool releases, multi-binary assets, mono-repos, and repositories not following Semantic Versioning
  • ๐Ÿ“ฆ Archive format support: Handles 10+ formats including ZIP, TAR, 7z, and all their compressed variants with magic number validation
  • ๐Ÿ”„ Version management: Install multiple versions of the same tool side-by-side and switch between them instantly with poof use
  • ๐Ÿงน Clean management: XDG-compliant directory structure with separate cache, data, and bin directories
  • ๐Ÿ” Helpful error handling: Fuzzy matching for repository names catches typos, conflict detection warns about existing binaries, and error messages always provide context

Platform Support

  • ๐ŸŒ Cross-platform: Works on Linux and macOS (FreeBSD support is planned)
  • ๐Ÿ—๏ธ Wide architecture support: 8 architectures on Linux, and both Intel and Apple Silicon on macOS
  • ๐Ÿš Shell integration: Native support for 7 shells (bash, zsh, fish, elvish, nushell, powershell, xonsh) with auto-completions and one-command PATH setup

Core Philosophy

  • ๐Ÿ› ๏ธ Zero-config: Use it straight away, no yaml, no TOML or other boring configuration
  • ๐Ÿ“ฆ Zero-install: One self-contained binary you just put in PATH and rm to uninstall
  • ๐Ÿ”— Zero-dependencies: It runs standalone, no additional software needed

What's more?

  • โš™๏ธ Written in Rust: Safe and fast binaries built on reliable dependencies, with linting and formatting applied at commit time
  • 0๏ธโƒฃ Zero-versioned: Because major versions are a thing of the past (and poof, albeit magic, is baby).

Why

More and more often modern tools are built with languages like C/C++, Rust or Go, and offer pre-built binaries. But they aren't always available in standard package managers. Here's where poof helps:

  • Download and put in $PATH binaries from GitHub with a single command
  • Install tools discovered on sites like Terminal Trove instantly
  • Test newer versions of tools before they reach official repositories without uninstalling your current version
  • Easily install multiple versions of the same tool and switch between them
  • Keep your system clean from unnecessary packages and dependencies installed via system package managers
  • Configure your CI/CD pipelines to use pre-built binaries without messing with additional requirements
  • Install software in sandboxed environments without root access

Requirements

  • Linux or macOS released in the last 10 years, running on one of the supported architectures:
    • Linux (x86_64, aarch64, armv7l, i686, ppc64le, s390x, riscv64gc, loongarch64)
    • macOS (x86_64, aarch64)

Quick start

  1. Get poof latest stable release using this quick one-liner:

    curl -fsSL https://raw.githubusercontent.com/pirafrank/poof/main/install.sh | sh
    

    or via one of other install methods.

  2. Add poof's bin directory to $PATH:

    poof enable
    

    Then reload you shell.

  3. ๐ŸŽ‰ Done! Now try to install something, for example:

    poof install pirafrank/vault-conductor
    

Additional information about installation and supported platforms is available in the Wiki.

Usage

Either run:

poof help

or read the Usage page for additional information.

About poof's bin directory

poof installs binaries in its own data directory, then symlinks them to its bin directory.

You can run poof info at any time to know where it does store data.

Having a dedicated directory for poof binaries is a good practice, as it allows to:

  • keep them separate from other software installed on your system,
  • keep them away from paths the user may manually interact to (like ~/.local/bin),
  • support multiple side-by-side versions of the same software for easy switch,
  • easily temporarily disable poof by removing its bin directory from your $PATH (read below).

Disable

poof's bin directory by default is added at the beginning of $PATH so that it takes precedence over any other version of same-named binary you may have installed other ways.

If you want to halt this behavior, you can either:

Documentation

Updated documentation for the latest release is available in the Wiki.

Project goals and non-goals

Have a look at our project goals.

Roadmap

A list of features implemented and to implement is available in the Wiki. The list is not final and may change over time.

Feature requests and Bug reporting

Want to suggest a feature? Found a bug? Please open an issue. Thank you!

Contributing

Contributions are welcome! Please read the Development page for information about how to build, and the CONTRIBUTING file for details on how to contribute to this project. Please make sure to follow the code of conduct when contributing. Thank you!

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgements

poof software is born out of a necessity of mine, yet its name is a tribute to the much more famous poof.