Skip to content

Getting started

Four commands, then one line you add to your shell configuration yourself.

Terminal window
loadout init

Asks a short series of questions — your git name and email, where your projects live, which editor you use — and offers detected values as defaults, so on most machines it is a lot of pressing return. It writes ~/.config/loadout/config.yaml.

--defaults accepts everything without asking. --force overwrites an existing configuration.

Nothing is generated yet, and your shell is untouched.

Terminal window
loadout apply

Reads your configuration, renders the catalog against it, and writes ~/.config/loadout/init.zsh (or init.bash). It prints what changed.

This is the only command that writes the file your shell will source. Running any other command — including upgrading loadout itself — does not change it.

Terminal window
loadout doctor

Reports what your configuration asks for that this machine cannot provide: aliases whose tools are not installed, paths that do not exist, commands missing the configuration they need.

Findings are not failures. A missing tool is reported, not fatal, and the alias is still generated — see Diagnosing problems.

Add one line to your shell configuration:

Terminal window
source ~/.config/loadout/init.zsh

For bash, that is init.bash in ~/.bashrc.

loadout never edits your shell configuration. That line is yours to add, and yours to remove — which is also the whole uninstall procedure as far as your shell is concerned.

Open a new terminal, or source ~/.zshrc in this one.

Terminal window
loadout catalog # what you now have
loadout describe p # what one of them does

The source line brings in aliases and functions. It does not bring in credentials, and this catches people out.

Secrets are deliberately kept out of every file loadout writes, because that file is plain text on disk. Something has to fetch them at runtime instead:

Terminal window
source ~/.config/loadout/init.zsh
eval "$(loadout env --quiet)"

loadout env prints export lines — it cannot set them, because a child process cannot change its parent’s environment. The eval is what applies them. Full explanation, and the cost of adding that line, in Credentials.

Terminal window
loadout ui # browse and toggle in a browser
loadout apply # write the changes to the shell file

Anything that changes what you want in your shell ends with loadout apply. Nothing takes effect until it does.