Zoi
Universal Package Manager & Environment Setup Tool.
Introduction
Zoi is a universal package manager and environment setup tool, designed to simplify package management and environment configuration across multiple operating systems. It's part of the Zillowe Development Suite (ZDS) and aims to streamline your development workflow by managing tools and project environments with ease.
Features
- Cross-Platform: Works seamlessly on Linux, macOS, and Windows.
- Dynamic Package Definitions: Define packages with dynamic Lua scripts (
.pkg.lua) for maximum flexibility. - Universal Package Support: Install packages from pre-built binaries, compressed archives, or build them from source.
- Extensive Dependency Management: Integrates with over 40 system and language package managers (
apt,brew,cargo,npm,pip,go,bun, etc.). - Rich Dependencies: Define runtime and build dependencies with required, optional, and selectable options.
- Project Environments: Manage project-specific commands and environments using a local
zoi.yamlfile. - Repository-Based: Use official, community, or your own private/public Git-based repositories. Manage multiple registries.
- Secure & Verifiable: Verifies package integrity with checksums and authenticity with GPG signatures. Includes a built-in PGP key manager.
- Versatile Package Types: Supports different types of packages:
Package: A standard software package.Collection: A meta-package that groups other packages together.App: A template for bootstrapping new projects (zoi create).Extension: A package to extend Zoi's own functionality or configuration.
- Local Package Development: A dedicated
zoi packagecommand set (build,install) to streamline creating and testing packages locally. - Advanced CLI Tools:
zoi man: Read package manuals in the terminal.zoi why: Understand why a package is installed.zoi rollback: Revert a package to its previous version or rollback the last transaction.zoi pin: Pin a package to a specific version.zoi exec: Run a package's binary without installing it.
- Library Support: Core functionality is available as a Rust library to be integrated into other applications.
Getting Started
Getting started with Zoi is simple. Just follow these three steps:
-
Install Zoi: Choose one of the installation methods below.
-
Sync Repositories: Before you can install packages, you need to sync the package repositories.
zoi sync -
Install a Package: Now you can install any package you want. For example, to install
hello:zoi install @zillowe/hello
Installation
You can install Zoi using a package manager, an installer script, or by building it from source.
Scripts
You can also use our installer scripts for a quick setup.
Linux / macOS :
curl -fsSL https://zillowe.pages.dev/scripts/zoi/install.sh | bashWindows:
powershell -c "irm zillowe.pages.dev/scripts/zoi/install.ps1|iex"Package Managers
Linux
Install Zoi on Linux distros.
Arch Linux (AUR)
Install zoi-bin (Pre-compiled binary) or zoi (built from source) from the AUR using your favorite helper (e.g. yay, paru):
yay -S zoi-binOr manually without any helpers:
git clone https://aur.archlinux.org/zoi-bin.git
cd zoi-bin
makepkg -siFedora
Install zoi-rs on Fedora from Terra repo (not maintained by us so updates can be late, uses Crates.io version):
# add terra repo
dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release
# install Zoi
sudo dnf install zoi-rsMore information and instructions for using Terra are available here.
macOS
Install Zoi on macOS.
Homebrew
Install Zoi using Homebrew (Also supports linux):
brew install Zillowe/tap/zoiWindows
Install Zoi on Windows.
Scoop
Install Zoi using Scoop:
scoop bucket add zillowe https://github.com/Zillowe/scoop.git
scoop install zoiCrates.io
You can install zoi directly from crates.io using cargo:
cargo install zoi-rsNPM
You can install @zillowe/zoi from npm also.
npx @zillowe/zoibunx @zillowe/zoipnpm dlx @zillowe/zoiyarn dlx @zillowe/zoiBuild from Source
If you prefer, you can build Zoi from source. You'll need Rust installed.
Build the release binary:
# For Linux/macOS
./scripts/build-release.sh
# For Windows
./scripts/build-release.ps1Install it locally:
./configure
make build
sudo make install
# (optional) Install CLI completions and setup Zoi's PATH
make setupDependencies Support
What dependency installation we support.
| Manager | Ecosystem / OS | Example |
|---|---|---|
zoi | Zoi | zoi:my-other-package |
native | System's native package manager | native:openssl |
script | Script execution | script:website.com/install |
apt, apt-get | Debian, Ubuntu, etc. | apt:libssl-dev |
pacman | Arch Linux | pacman:base-devel |
aur | Arch Linux (AUR) | aur:visual-studio-code-bin |
brew | macOS (Homebrew) | brew:node |
scoop | Windows | scoop:git |
snap | Linux (Snapcraft) | snap:node |
flatpak | Linux (Flathub) | flatpak:org.gimp.GIMP |
npm | Node.js | npm:typescript |
bun | Bun | bun:elysia |
deno | Deno | deno:npm-chalk or deno:jsr-@std/bytes (the - instead of : is important) |
jsr | JavaScript Registry | jsr:@std/http |
pip | Python | pip:requests |
nix | NixOS / Nix | nix:nixpkgs.hello |
And many more.
For more dependencies and information please visit the Dependencies Page on Docs.
Some of the package manager are OS specific, so when a dependency is in that package manager it only installs it for that OS.
But some other package managers like npm, it installs the dependency if the package manager is available.
Usage
Here are some common commands to get you started.
-
Install a package:
zoi install <package_name> -
Uninstall a package:
zoi uninstall <package_name> -
Update packages:
# Update all installed packages zoi update --all # Update specific packages zoi update <package1> <package2> -
Search for a package:
zoi search <term> -
Show package details:
zoi show <package_name> -
Run a project command:
# Run a command defined in zoi.yaml zoi run <command_alias> -
Add a new repository:
# Interactively zoi repo add # By name from the default registry zoi repo add <repo_name> # From a git repo URL zoi repo add https://github.com/<user_name>/<repo_name>.git -
Update Zoi to the latest version:
zoi upgrade
See the full list of features.
Contributing
We welcome contributions from the community! If you'd like to contribute, please read our Contributing Guidelines for more information.
New features, enhancements and bug reports are welcome.
Repositories & Mirrors
Zoi is hosted on multiple forges. The primary locations and mirrors are:
-
Zoi Source Code
-
Packages Database (Zoidberg)
FAQ
Last updated on
