Skip to main content

⚡️ Installation

Quick setup

source <(curl -sL; zzinit

Reload shell with exec zsh and run zi -h for usage information.

Automated setup


If required append -b <tag> or -b <branch> e.g:

sh -c "$(curl -fsSL" -- -i skip -b main

Minimal configuration

sh -c "$(curl -fsSL" --

Only update / install repository

sh -c "$(curl -fsSL" -- -i skip

Minimal configuration + annexes

sh -c "$(curl -fsSL" -- -a annex

Minimal configuration + annexes + zdharma/zunit

sh -c "$(curl -fsSL" -- -a zunit

Minimal configuration with loader

sh -c "$(curl -fsSL" -- -a loader

The installer will download loader and add snippet below to the .zshrc file.

if [[ -r "${XDG_CONFIG_HOME:-${HOME}/.config}/zi/init.zsh" ]]; then  source "${XDG_CONFIG_HOME:-${HOME}/.config}/zi/init.zsh" && zzinitfi

The loader can be manually fetched from available links to any location on the system, and sourced from .zshrc or as shown in the quick-setup.

Then reload shell with: exec zsh. All done!

Manual Setup

Setup directory

typeset -Ag ZIexport ZI[BIN_DIR]="${HOME}/.zi/bin"command mkdir -p "$ZI[BIN_DIR]"

Clone repository

command chmod g-rwX "$ZI[BIN_DIR]"command git clone "$ZI[BIN_DIR]"

Enable ZI

Source zi.zsh in your .zshrc from previously created directory:

typeset -A ZIZI[BIN_DIR]="${HOME}/.zi/bin"source "${ZI[BIN_DIR]}/zi.zsh"

Enable completions:


The next two lines must be below the above two:

autoload -Uz _zi(( ${+_comps} )) && _comps[zi]=_zi


After a fresh install, recommended to reload the shell with exec zsh and compile ZI with zi self-update. Run zi -h to see all available commands. Increase ZI functionality, performance or get started by exploring the wiki.

If you have any issue or need help 🤦‍♂️, lets discuss it or open an issue in any language.

It helps us to improve and make ZI better. Don't forget to help the project: share, contribute, or translate 🌐 🥰 🤓.

Let's glue everything together to create a toolchain that works for US 🚀.

Have ideas?

Suggest your configuration: z-shell/playground

sh -c "$(curl -fsSL" -- -a ???

Need warm-up?

Docker Alpine

docker run --rm -it

Turbo ZI in Docker

If you create a Docker image that uses ZI, install Turbo-loaded plugins before the shell starts interactively, with the @zi-scheduler function in such a way, that it:

  • installs plugins without waiting for the prompt (i.e. it's script friendly),
  • installs all plugins instantly, without respecting the wait'' argument.

To accomplish this, use burst argument and call @zi-scheduler function:

RUN zsh -i -c -- '@zi-scheduler burst || true'

Build ZI Module

Without ZI

sh -c "$(curl -fsSL" -- -a zpmod

With ZI


ZI has to be installed to build the module. Module repository: z-shell/zpmod

zi module build

To enable debug messages from the module set:

typeset -g ZI_MOD_DEBUG=1

Status page: ✔️