Zoi: The Universal Package Manager and Environment Setup Tool
An introduction to Zoi, the ultimate cross-platform package manager designed to unify development environments across Linux, macOS, and Windows.
Setting up a consistent development environment across different machines and operating systems has historically been a fragmented and frustrating process. Developers often find themselves wrestling with disparate package managers, apt on Ubuntu, brew on macOS, scoop on Windows, alongside language-specific tools like npm, cargo, and pip.
Zoi (part of the Zillowe Development Suite) was created to solve this fragmentation. It is a universal, cross-platform package manager that provides a unified interface for managing software, project dependencies, and development environments.
Why Zoi?
Traditional package managers are usually tied to a specific operating system or ecosystem. Zoi takes a different approach by acting as a high-level orchestration layer. It doesn't just install its own packages; it integrates with over 40 external package managers, allowing you to define a single environment that works everywhere.
Key Features
- Cross-Platform: Native support for Linux, macOS, and Windows (supporting both
amd64andarm64). - Lua-Powered Flexibility: Package definitions are written in Lua (
.pkg.lua), allowing for dynamic logic, complex build steps, and platform-specific adaptations that static configuration files can't handle. - Universal Dependencies: Declare dependencies from
apt,pacman,brew,npm,cargo,pip,go,bun, and many more in one place. - Secure & Verifiable: Built-in support for SHA-512/256 checksums and PGP signature verification for every package.
- Versatile Package Types: Beyond standard software, Zoi supports Collections (metapackages), Apps (project templates), and Extensions (Zoi configuration modifiers).
- Advanced CLI Tools: Features like
zoi why(dependency inspection),zoi rollback(transactional reverts),zoi pin(version locking), andzoi exec(run without installing). - Parallel Registry Sync: Concurrently sync multiple package registries for significantly faster updates.
- Zoi Mini: A lightweight, zero-sync version for quick, one-off installations.
The Power of .pkg.lua
Most package managers use static formats like YAML or JSON. Zoi uses Lua, giving package maintainers the full power of a scripting language.
-- A snippet from a Zoi package definition
metadata({
name = "hello",
repo = "zillowe",
version = "3.0.0",
license = "Apache-2.0",
bins = { "hello" },
types = { "source", "pre-compiled" }
})
function prepare()
if BUILD_TYPE == "pre-compiled" then
local ext = (SYSTEM.OS == "windows") and "zip" or "tar.xz"
local file_name = "hello-" .. SYSTEM.OS .. "-" .. SYSTEM.ARCH .. "." .. ext
local url = "https://example.com/hello/releases/download/v" .. PKG.version .. "/" .. file_name
UTILS.EXTRACT(url, "precompiled")
elseif BUILD_TYPE == "source" then
cmd("git clone " .. PKG.git .. " source")
cmd("cd source && make build")
end
endThis flexibility ensures that complex software can be packaged correctly for any target system without maintaining separate scripts for every OS.
Zoi Mini: Zero-Sync Installation
Zoi Mini is a specialized version of the Zoi engine that operates without a local database. It resolves package metadata and vulnerabilities on the fly from the Zoidberg registry. This makes it perfect for "as-a-service" scenarios and one-liner installations.
Quick Start (Zero-Install)
You can install any package from the Zoidberg registry using a single command without even having Zoi installed:
Linux / macOS:
curl -fsSL https://zillowe.pages.dev/zm.sh | sh -s -- i @zillowe/helloWindows (amd64):
powershell -c "irm zillowe.pages.dev/zm.ps1 | iex" -args "i @zillowe/hello"Project Environments with zoi.yaml
Zoi isn't just for global software; it shines in project-local management. By placing a zoi.yaml in your repository, you can:
- Define project-specific packages.
- Create custom aliases for common tasks (
zoi run dev). - Set up isolated development environments (
zoi dev). - Ensure every team member has the exact same tools via
zoi.lock.
Getting Started
To install the full Zoi suite:
Linux / macOS:
curl -fsSL https://zillowe.pages.dev/scripts/zoi/install.sh | bashWindows:
powershell -c "irm zillowe.pages.dev/scripts/zoi/install.ps1|iex"After installation, run zoi sync to fetch the official Zoidberg registry and you're ready to start!
Learn More
Zoi is a deep tool with many advanced features for power users and package maintainers. Explore the links below to dive deeper:
- Zoi Documentation Home: The starting point for all Zoi guides.
- Creating Your First Package: A step-by-step guide to the Zoi packaging API.
- Supported Dependency Managers: See the full list of 40+ integrated managers.
- Zoidberg Repository: Browse the official package database.
