The CLI package manager for user terminal utilities. It is written in pure Bash. It's self-updating, cross-platform, and designed not to get in your way.
Ships with envsnap — a lightweight system/environment state tracker with diff support.
Updates are released faster on codeberg. 10 minutes after writing the repository to codeberg, the changes will go to the mirrors.
curl -fsSL "https://github.com/moyunnis/chistore/raw/branch/main/chistore" -o ~/.local/bin/chistore
chmod +x ~/.local/bin/chistore
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc # or ~/.zshrc
source ~/.bashrcNo root required. Installs to ~/.local/bin (XDG standard).
| Flag | Action |
|---|---|
-h |
Show help |
-Ss <q> |
Search available packages |
-S <pkg> |
Install package |
-Rn <pkg> |
Remove (keep configs) |
-Rns <pkg> |
Remove completely (purge configs) |
-Qet |
List installed packages |
-Qs <q> |
Search installed packages |
-Syu |
Check & install updates for all installed packages |
Examples:
chistore -Ss env
chistore -S envsnap
chistore -Qet
chistore -Rns envsnapRuns on every execution. Compares local VERSION with the remote file. If outdated:
- Downloads new binary to a temp file in the same directory
- Atomically replaces the current script via
mv - Restarts the process with
exec "$0"using the updated file - Sets
_CH_UPDATED=1to prevent recursive checks
Safe for active sessions. No state loss. Works across Linux, macOS, BSD, and WSL.
It's simple: use chistore -Syu. If necessary, specify the name of the packages to exclude updates (in order not to update) or n to cancel the update. Press Enter to install
Remove manager only:
rm -f ~/.local/bin/chistore
rm -rf ~/.local/share/chistoreRemove manager + all installed tools:
- Run
chistore -Qetto list installed packages - Remove each with
chistore -Rns <package> - Clean up manager files:
rm -f ~/.local/bin/chistore
rm -rf ~/.local/share/chistorerepo/
├── VERSION # Current manager version
├── chistore # Manager script
├── INDEX # Package names (one per line)
└── <package>/
├── info.md # Metadata (Name, Description, Version, Size, Type, MainFile)
└── <package> # Executable (chmod +x)
- Requires
bash,curl,diff,less(standard on all POSIX systems) - No external dependencies, no package managers, no Python
- All paths follow XDG Base Directory spec
- Contributions: PRs welcome. Keep it minimal.