Open Source & Pure Zsh

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.

~/.zshrc
# declare your plugins
zert zsh-users/zsh-autosuggestions
zert zsh-users/zsh-syntax-highlighting
zert ohmyzsh lib/clipboard
zert zert # zert manages itself
Zsh 5.0+ Pure Zsh GPLv3 No Config Files

Add this to your .zshrc

Paste the snippet below. On first shell launch, Zert clones itself automatically.

~/.zshrc
# 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.

1

Bootstrap

Paste the install snippet into your .zshrc. On first run, Zert clones itself automatically.

2

Declare

Add zert user/repo lines below the bootstrap. Use flags like --pin, --branch, or --no-alias.

3

Install

Open a new shell. Zert detects missing plugins, clones them in parallel, compiles, and writes zert.lock.

4

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.

~/.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
Plugin Flags
# 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
Subcommands
zert list     # show installed plugins
zert update   # update all plugins
zert prune    # remove unused plugins
zert.lock
# 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::
Copied to clipboard