The plugin manager your .zshrc has been waiting for
Declare plugins inline. Lock to exact commits. Install in parallel. Zero dependencies beyond Zsh and Git.
Add this to your .zshrc
Paste the snippet below. On first shell launch, Zert clones itself automatically.
# bootstrap zert — runs once, self-clones on first launch
export ZERT_PLUGINS_DIR="${ZERT_PLUGINS_DIR:-${ZERT_DIR:-${XDG_DATA_HOME:-$HOME/.local/share}/zert}/plugins}"
[[ -f "$ZERT_PLUGINS_DIR/zert/zert.zsh" ]] || \
(curl -fsSL https://raw.githubusercontent.com/oxcl/zert/main/bootstrap.sh | zsh)
source "$ZERT_PLUGINS_DIR/zert/zert.zsh"
# declare your plugins
zert zsh-users/zsh-autosuggestions
zert zsh-users/zsh-syntax-highlighting
zert zert # zert manages itself
Open a new terminal and Zert handles the rest — cloning, compiling, and loading your plugins automatically.
Everything you need. Nothing you don't.
No Python. No Ruby. No Node. Just Zsh doing what Zsh does best.
Declarative
Declare plugins directly in your .zshrc. No separate config file. No YAML, TOML, or JSON — just zert user/repo.
Lockfile Reproducibility
Every plugin pinned to an exact commit SHA in zert.lock. Commit it to dotfiles for bit-for-bit identical installs everywhere.
Parallel Installs
Missing plugins cloned simultaneously with git treeless clones. Install is parallel, load is sequential — no ordering surprises.
Zero Dependencies
Pure Zsh. No Python, Ruby, Node, or Perl. Only external binaries: git, curl, and standard POSIX tools.
Self-Managing
Add zert zert to your .zshrc and Zert tracks and updates itself like any other plugin. Even on a specific branch.
OMZ & Prezto Compatible
Load Oh-My-Zsh libraries and Prezto modules without installing either framework. Use zert use ohmyzsh and zert use prezto.
Four steps. That's it.
From zero to a fully managed shell in under a minute.
Bootstrap
Paste the install snippet into your .zshrc. On first run, Zert clones itself automatically.
Declare
Add zert user/repo lines below the bootstrap. Use flags like --pin, --branch, or --no-alias.
Install
Open a new shell. Zert detects missing plugins, clones them in parallel, compiles, and writes zert.lock.
Load
Plugins load sequentially in declaration order. Your shell is ready. Commit zert.lock for reproducibility.
Simple syntax. Powerful features.
Everything is configured inline in your .zshrc.
# Self-management
zert zert # zert manages itself
# Oh-My-Zsh / Prezto compatibility
zert use ohmyzsh
zert ohmyzsh lib/clipboard
zert use prezto
zert prezto modules/utility
# GitHub shorthand
zert zsh-users/zsh-autosuggestions
# Full URL
zert https://github.com/user/repo
# Track a branch
zert user/repo --branch dev
# Local plugin
zert /home/me/my-plugin
# Pin to specific commit
zert user/plugin --pin abc123def
# Track a branch instead of default
zert user/plugin --branch dev
# Skip alias loading
zert user/plugin --no-alias
# Skip completion loading
zert user/plugin --no-completion
# Load only completions
zert user/plugin --only-completion
zert list # show installed plugins
zert update # update all plugins
zert prune # remove unused plugins
# AUTO-GENERATED FILE. DO NOT EDIT MANUALLY.
# Commit this file to version control for reproducible installs.
version::1
zert::git::https://github.com/oxcl/zert::a1b2c3d::
zsh-autosuggestions::git::https://github.com/zsh-users/zsh-autosuggestions::f7g8h9i::
clipboard::ohmyzsh::https://github.com/ohmyzsh/ohmyzsh::l3m4n5o::
my-plugin::local::::r9s0t1u::
Support Zert
Zert is free and open source. If you find it useful, consider supporting development with a donation.
Scan to donate
bc1qhngkx9670q2vc4w494yfys3cpx2ykne90tanl7