chy is a byte-sized, portable, source-based package manager written in POSIX shell.

Packages are recipe based and easily readable and tweakable

Everything is at $CHY_ROOT, ~/.chy by default. Packages get built into store/ and get linked into a usr/ symlink farm. chy lives in userland and won't write outside its root, so deleting the folder is equal to a full uninstall. Running chy with no arguments prints the list of all options.

A farm with three packages:

$CHY_ROOT/
├── recipes -> ~/chy/chy-recipes/recipes
├── overlay/
├── store/
│   ├── zlib-1.3.2/
│   ├── libpng-1.6.58/
│   └── freetype-2.14.3/
└── usr/
    └── bin/
* Getting Started ........................................................................ [001]
* Recipes ................................................................................ [002]
* Further Reading ........................................................................ [003]

[001] Getting Started __________________________________________________________________________________________________________________________________

git clone https://github.com/alperien/chy && cd chy
git clone https://github.com/alperien/chy-recipes
export CHY_ROOT=$HOME/.chy PATH="$HOME/.chy/usr/bin:$PATH"
mkdir -p "$CHY_ROOT" && ln -s "$PWD/chy-recipes/recipes" "$CHY_ROOT/recipes"
cp chy-recipes/shlibs.map "$CHY_ROOT/shlibs.map"
sh chy/chy install freetype

[002] Recipes __________________________________________________________________________________________________________________________________

A recipe is a folder containing text files: version, sources, checksums, depends, makedepends, a build script, and patches/. A recipe repo is a directory of recipes, chy builds from whichever one $CHY_ROOT/recipes points at: the symlink above picks the default repo, but making your own is encouraged. For quick tweaks there's also $CHY_ROOT/overlay/<name>, which chy reads before the repo.

The default recipe repo, chy-recipes, is converted from Void Linux's xbps by the chytrans tool. All fixes go in the translator, and PRs that edit recipes/ get closed.

The default recipe repo (684 packages) (02/08/2026), the core set:

zlib bzip2 xz zstd libffi expat pcre2 glib libpng freetype harfbuzz
fontconfig pixman cairo pango gdk-pixbuf libepoxy at-spi2-core gtk+3
dbus

[003] Further Reading __________________________________________________________________________________________________________________________________

git ......... github.com/alperien/chy
kiss ........ github.com/kisslinux/kiss
bible ....... github.com/dylanaraps/pure-sh-bible
upstream .... github.com/void-linux/void-packages
license ..... MIT