Skip to content

zillowe/zoi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,107 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Zoi Banner

Advanced Package Manager & Environment Orchestrator







Table of Contents

Zoi is an advanced package manager and environment orchestrator, designed to simplify package management and environment configuration across multiple operating systems.

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.yaml file.
  • Repository-Based: Use official, community, or your own private/public Git-based repositories. Manage multiple registries.
  • Parallel Registry Sync: Concurrently sync multiple package registries for significantly faster updates.
  • Secure & Verifiable: Verifies package integrity with checksums and authenticity with GPG signatures. Supports Git commit signature verification for entire registries (Chain of Trust) and includes a built-in PGP keyring for out-of-the-box security.
  • Decentralized Security Advisories: Automated vulnerability tracking via .sec.yaml files co-located with packages. Zoi proactively warns you during installation or upgrades if a package has known security issues.
  • Compliance & Audit Logging: Maintain a persistent, tamper-evident audit log of all package operations (install, uninstall, upgrade), viewable via the zoi history command.
  • Enhanced File Conflict Detection: Prevents packages from accidentally overwriting existing files. Supports pre-download conflict checking via remote metadata to save bandwidth.
  • Advanced Dependencies: Supports virtual packages (provides) and package replacement (replaces).
  • 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 package command set (build, install) to streamline creating and testing packages locally.
  • Advanced CLI Tools:
    • zoi search: Interactive TUI mode with result sorting and rich metadata.
    • zoi audit: Scan installed packages for known security vulnerabilities.
    • zoi history: Read the persistent audit trail of past transactions.
    • zoi doctor: Proactive system health checks, including orphaned package detection and broken symlink scanning.
    • 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 entire last transaction.
    • zoi pin: Pin a package to a specific version.
    • zoi exec: Run a package's binary without installing it.
    • zoi shell -p: Enter a temporary shell with a package available in PATH.
  • Zoi Mini: A lightweight, zero-sync version for quick, one-off installations via zm.sh or zm.ps1. Supports install, update, uninstall, and list commands.
  • Library Support: Core functionality is available as a Rust library to be integrated into other applications.

Special Thanks

Thanks you all for helping with developing Zoi.

Getting Started

Getting started with Zoi is simple. Just follow these three steps:

  1. Install Zoi: Choose one of the installation methods below.

  2. Sync Repositories: Before you can install packages, you need to sync the package repositories.

    zoi sync
  3. Install a Package: Now you can install any package you want. For example, to install hello:

    zoi install @zillowe/hello

Zoi Mini

Zoi Mini is a lightweight, zero-sync version of Zoi that allows you to install packages from the official Zoidberg registry without installing the full Zoi suite. It's designed for quick, one-off installations and supports basic management commands: install, update, uninstall, and list.

Quick Start (Zero-Install)

You can install any package from the Zoidberg registry using a single command:

Linux / macOS :

curl -fsSL https://zillowe.pages.dev/zm.sh | sh -s -- i @zillowe/hello

Windows (amd64):

powershell -c "irm zillowe.pages.dev/zm.ps1 | iex" -args "i @zillowe/hello"

This will download the zoi-mini binary to a temporary location, resolve the package metadata dynamically, and perform the installation.

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 | bash

Or if you want a truly safe way to run this script use ZSM.

curl -fsSL https://zillowe.pages.dev/scripts/zoi/install.zsm | zsm

Windows:

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-bin

Or manually without any helpers:

git clone https://aur.archlinux.org/zoi-bin.git
cd zoi-bin
makepkg -si
Debian / Ubuntu (.deb)

Download the .deb package for your architecture from the latest release and install it using apt or dpkg:

# Using apt (recommended, handles dependencies)
sudo apt install ./zoi-*.deb

# Using dpkg
sudo dpkg -i zoi-*.deb
Fedora / RHEL (.rpm)

Download the .rpm package for your architecture from the latest release and install it using dnf or rpm:

# Using dnf (recommended)
sudo dnf install ./zoi-*.rpm

# Using rpm
sudo rpm -i zoi-*.rpm
Fedora (Terra)

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-rs

More 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/zoi

Windows

Install Zoi on Windows.

Scoop

Install Zoi using Scoop:

scoop bucket add zillowe https://github.com/zillowe/scoop.git
scoop install zoi

Crates.io

You can install zoi directly from crates.io using cargo:

cargo install zoi-rs

NPM

You can install @zillowe/zoi from npm also.

npx @zillowe/zoi
bunx @zillowe/zoi
pnpm dlx @zillowe/zoi
yarn dlx @zillowe/zoi

Build 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.ps1

Install it locally:

./configure
make build
sudo make install
# (optional) Install CLI completions and setup Zoi's PATH
make setup

Zoi integrates with over 40 system and language package managers (apt, brew, cargo, npm, pip, go, bun, and many more). See the full list on the Dependencies docs.

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:

    # Standard search
    zoi search <term>
    
    # Interactive TUI mode
    zoi search <term> -i
  • View operation history:

    zoi history
  • Show package details:

    zoi show <package_name>
  • Run a project command:

    # Run a command defined in zoi.yaml
    zoi run <command_alias>
  • Run a command without installing the package:

    zoi exec <package_name> -- <command>
  • Enter a shell with a package:

    zoi shell -p <package_name>
  • 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

For more detailed information, please refer to the Docs.

Packaging Status

Packaging status

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:

Repository tiers

Repository tiers for Zoidberg, Zoi's official packages repo.

  • Core: Essential packages, libraries and very common/maintained packages.
  • Main: Packages that don't fit in Core but are essential for most people.
  • Extra: Packages that are new, not very common or maintained, not preferable.
  • Community: User submitted packages that are new, can be upgraded to a higher repo.
  • Test: Testing repo for new Zoi features and for new packages before release.
  • Archive: Archived packages that are no longer maintained.
  • Zillowe: Zillowe's own official packages.

For details and CLI usage examples, see the docs page: Repositories.

License

Zoi is licensed under the Apache 2.0 License.


Zoi is developed by Zusty < Zillowe Foundation
Part of the Zillowe Development Suite (ZDS)

About

Advanced Package Manager & Environment Orchestrator

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors