Getting started
Four commands, then one line you add to your shell configuration yourself.
1. Create your configuration
Section titled “1. Create your configuration”loadout initAsks 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.
2. Render the shell file
Section titled “2. Render the shell file”loadout applyReads 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.
3. Check the machine
Section titled “3. Check the machine”loadout doctorReports 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.
4. Source it
Section titled “4. Source it”Add one line to your shell configuration:
source ~/.config/loadout/init.zshFor 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.
loadout catalog # what you now haveloadout describe p # what one of them doesCredentials need a second line
Section titled “Credentials need a second line”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:
source ~/.config/loadout/init.zsheval "$(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.
The loop from here
Section titled “The loop from here”loadout ui # browse and toggle in a browserloadout apply # write the changes to the shell fileAnything that changes what you want in your shell ends with loadout apply. Nothing takes effect until it does.