ZU zub.runtime
Zig-native registry bootstrapper

Install binaries like a toolchain engineer.

zub is a dark little utility with a very specific job: fetch a package from the ZUB registry, detect the Zig version it needs, install that toolchain through zvm, build it, and drop the final executable into $HOME/.local/bin.

$ zub install pbm # resolve, provision, build, install

Execution model

This is not a package mirror, not a GUI launcher, and not a vague dev helper. It is a direct pipeline from registry entry to built executable, with the Zig toolchain selected on demand.

01

Resolve package metadata

zub downloads the registry index and matches the package name to its repository source.

02

Provision the proper Zig

The package source is inspected for build.zig.zon, then zvm installs the required Zig version if missing.

03

Build and deploy locally

The package is built from source and the resulting binary is copied into your user-local executable path.

Bootstrap

The published installer lives at docs/install.sh in the repository and is served publicly from the URL below.

Install zub

curl -fsSL https://yafb.net/zub.zig/install.sh | bash

Runtime usage

After bootstrap, package install stays intentionally terse. Ask for a binary by name and let the system resolve, fetch, build, and install it.

Install a package

zub install pbm

Internal flow

pipeline.log
registry lookup
repository resolution
minimum_zig_version detection
zvm install <zig-version>
zvm run <zig-version> build
copy executable to ~/.local/bin

Operational notes

The current contract is intentionally strict and transparent: Zig packages in, local binaries out, with a known toolchain path in the middle.

Repository resolution

Registry URLs are currently expected to follow the pattern /packages/<owner>/<repo>/, which maps cleanly to a GitHub repository.

Missing Zig metadata

If minimum_zig_version is not declared in build.zig.zon, zub falls back to master.

Final install path

The resulting executable is copied into $HOME/.local/bin. Your shell should already include that directory in PATH.