// ZPWR — ENGINEERING REPORT

Neon-lit UNIX terminal OS · zsh + tmux + vim/nvim + fzf + git + zinit · 533 autoload functions · 461 zpwr verbs · 80 tmux bindings · 643 brew formulas

>_EXECUTIVE SUMMARY

ZPWR is a heavily-instrumented terminal operating environment for zsh: a curated autoload tree, a zinit-managed plugin stack, an interactive tmux cockpit, a unified zpwr <verb> dispatcher, and a self-installing toolchain that pulls down hundreds of CLI utilities on macOS and Linux. The project began as a fork of Hashrocket's Dotmatrix in 2017 and has grown into a single-user cyberdeck: 1,302 files, ~107k zsh+sh lines, 533 autoload functions, 463 verb keys mapping to 373 distinct zpwr functions, 204 aliases, 228 zsh keybindings, 80 tmux bindings, 48 zinit plugins, 643 brew formulas/casks installed, 147 test files / 79k lines of zunit, 217 wizard encyclopedia pages, 39 screenshots, 6,303 commits across 616 tags spanning ~9 years — built almost entirely by one engineer (11,239 of 11,241 commits).

1,302
Total Files
108,232
Zsh + Sh Lines
533
Autoload Functions
461
Verb Keys (zpwr)
146
Test Files
79,535
Test Lines
228
Zsh Bindkeys
80
Tmux Bindings
48
Zinit Plugins
6,303
Git Commits
616
Git Tags
~9
Years Active

Source Distribution — 108,232 zsh+sh lines

94,104 .zsh / 12,823 .sh · 88.0% .zsh

Counted from 380 .zsh files and 176 .sh files across the repo, excluding .git/. Side scripts add .vim (4 files, 4,748 lines), .py (5 files, 3,538 lines), .pl (7 files, 458 lines), .stk (8 files, 235 lines), .js (1 file, 304 lines).


~REPO MAP

Top-level partition of ~/.zpwr/. Numbers are tracked-file counts and raw line counts (wc -l) at the time this report was generated. local/ dominates by line count because it holds runtime caches, snapshots, and the encyclopedia output — the part of the tree that grows on every shell start, not the source.

Directory Files Lines Role
autoload/53322,464Per-function autoload tree. fpath-loaded on shell start. 470 in common/, 21 in fzf/, 15 in comps/, 12 in comp_utils/, 6 in darwin/, 5 in linux/, 4 in systemctl/.
env/183,401Environment, exported vars, p10k config, verb dispatch table (zpwr.zsh — 554 lines, 463 verb keys).
install/10782,152One-shot installers: 25 shell scripts, package manifests, casks.sh/formulae.sh with 643 brew formulas/casks, vim/nvim configs, JetBrains/iTerm/Alacritty configs, systemd units.
local/2415,512,872Runtime cache: .cache/completions, git-repo dirty/clean caches, alias caches, zcompdump, generated keybindings, snapshot tarballs. Regenerated by zpwr regen verbs.
man/22,907man1/zpwr.1 (8 KB, top-level man page) + man1/zpwrall.1 (53 KB, comprehensive meta page covering every verb and option).
scripts/20617,579Standalone CLI utilities not autoloaded as functions: 173 executables across scripts/ root and subdirs. Range from one-off shell wrappers to long-running monitors.
tests/14779,535147 zunit test files (one _support/testfile fixture). Probes every autoload function, env var, syntax check, and behavioral contract.
tmux/24883tmux configurations: per-version (tmux_lt_21, tmux_ge_21, ..., tmux_ge_31), per-OS (tmux-mac, tmux-linux, tmux-wsl), and pane layouts (four-panes, eight-panes, sixteen-panes, thirtytwo-panes, REPL variants).
docs/26539,699HTML encyclopedia (index.html 552 KB), CSS theme (hud-static.css, tutorial.css), hud-theme.js, 39 screenshots, 217 wizard_pages/page_NNN.zsh source pages, zpwr-encyclopedia.tex + genEncyclopediaTex.py generator.
TOTAL (tracked)1,548~5,761,134Source minus local/ runtime: ~248k lines across 1,307 files.

#AUTOLOAD TREE

autoload/ is the heart of ZPWR. Every entry in this tree is one function file, picked up by zsh's autoload -Uz mechanism the first time it's called — so a fresh shell pays no cost for functions it never uses. 533 files across 7 subdirectories partitioned by platform (darwin/, linux/, systemctl/), tooling (fzf/, comps/, comp_utils/), and the catch-all common/ (87% of all autoloads).

SubdirectoryFilesLinesDescription
autoload/common/47018,564The verb implementations themselves — 373 distinct zpwr* functions plus 97 short-name helpers (z, zal, zhc, cv, ...). Mostly one function per file at ~40 lines each.
autoload/fzf/21249fzf completion shims: _fzf_complete_zpwr, _fzf_complete_git, _fzf_complete_vim, plus post-processors (___fzf_complete_*_post).
autoload/comps/15730zsh completion functions (_zpwr — 405 lines — _zcommand, _p, _r, _f, _digs). Drive Tab-completion for ZPWR verbs and shortened aliases.
autoload/comp_utils/12447Helpers consumed by the completion functions: _files, _parameters, _megacomplete, _complete_hist, _complete_clipboard, fasd dir/file expanders.
autoload/darwin/692macOS-only: zpwrDarwinBanner, zpwrScriptToPDF (uses cupsfilter), nn (Notes.app helper), db/db2 (Docker bridge), exe (open via Finder).
autoload/linux/5177Linux-only: zpwrLinuxBanner, zpwrLinuxPlugins, zpwrAttachSetup, tailufw, scriptToPDF.
autoload/systemctl/4112systemd helpers: ssu/ssd (start/stop), restart, restartZabbixAgent. Only fpath'd on Linux hosts.
TOTAL53320,371+5 .zwc compiled bytecode shadows in common/ for hot-loaded functions.

// FUNCTION CATEGORIES (autoload/common)

Diagnostics

zpwrDoctor, zpwrLint, zpwrBench, zpwrTop, zpwrFlame, zpwrStartup, zpwrTrace, zpwrDeps, zpwrPathaudit, zpwrStale, zpwrPorts, zpwrSnapshot, zpwrRestore.

Editor Bridges

zpwrEditor, zpwrEditorRecent, zpwrVimAll, zpwrVimFzf, zpwrVimRecent, zpwrEmacsAll, zpwrEmacsScripts, zpwrSudoVimRecent + nvim/emacs/vim variants for every flow.

fzf Pickers

zpwrFzfFilesearch*, zpwrFzfDirsearch*, zpwrFzfWordsearch*, zpwrFzfEnv, zpwrFzfCommits, zpwrFzfZshKeybind, zpwrFzfVimKeybind, zpwrFzfAllKeybind, zpwrIntoFzf, zpwrAgIntoFzf.

Git

zpwrCommits, zpwrAllRemotes, zpwrAllUpdates, zpwrChangeGitEmail, zpwrChangeGitAuthorEmail, zpwrClearGitFile, zpwrCleanGitRepoCache, zpwrCleanGitRepoDirtyCache, zpwrLargestGitFiles, zpwrGitwho, zpwrGitCheckoutRebasePush.

Cache / Regen

zpwrRegenAll, zpwrRegenMost, zpwrRegenCtags, zpwrRegenGtagsCtags, zpwrRegenHistory, zpwrRegenZshCompCache, zpwrRecompile, zpwrRecompileFpath, zpwrRefreshZwc, zpwrCleanCache, zpwrCleanCompCache.

tmux

zpwrAttachSetup, zpwrDetachall, zpwrTmuxSave, zpwrTmuxLoad, zpwrTmux_capture_paner, zpwrTmux_pane_words.

Banners / Display

zpwrAbout, zpwrBannerCounts, zpwrBannerLolcat, zpwrPonyBanner, zpwrNoPonyBanner, zpwrColorTest, zpwr256ColorTest, zpwrAnimate, zpwrMatrix, zpwrFigletfonts, zpwrFortune.

ZLE Widgets

zpwrAcceptLine, zpwrMagicEnter, zpwrSelfInsert, zpwrInterceptSurround, zpwrInterceptDelete, zpwrDeleteLastWord, zpwrLastWordDouble, zpwrClearLine, zpwrExpandAliases, zpwrExpandOrCompleteWithDots, zpwrPasteToBuffer, zpwrEOLorNextTabStop.

Hooks

zpwrPrecmd, zpwrPreexec, zpwrChpwd, zpwrBindPrecmd, zpwrBindPreexecChpwd, zpwrPoll, zpwrTimer.

Plugin Management

zpwrZinitUpdates, zpwrZshPluginCount, zpwrZshPluginList, zpwrVimPluginCount, zpwrVimPluginList, zpwrEmacsPluginCount, zpwrEmacsPluginList, zpwrUpdateDeps, zpwrCleanUpdateDeps.

Network / Remote

zpwrSshRegain, zpwrKillRemote, zpwrMycurl, zpwrTorip, zpwrToriprenew, zpwrGoogle, zpwrOpen, zpwrOpenmygh, zpwrUpload.

Tags / Gtags

zpwrVimZpwrCtags, zpwrVimZpwrGtags, zpwrEmacsZpwrCtags, zpwrEmacsZpwrGtags, zpwrGtagsIntoFzf, zpwrGetGtags, zpwrRegenGtagsCtags, zpwrRegenGtagsPygments, zpwrRegenGtagsType.


$VERB DISPATCH

Every zpwr <arg> invocation routes through autoload/common/zpwrenv/zpwr.zsh (the $ZPWR_VERBS_FILE pointed at by env/.zpwr_re_env.sh), which builds a 463-entry typeset -Ag ZPWR_VERBS associative array at shell start. Each entry is keyed by verb spelling and valued functionName=description. Counts: 463 keys, 461 unique spellings, 373 distinct backing functions — aliases (about/banner both map to zpwrAbout, doctor/doc/checkup all map to zpwrDoctor) account for the gap.

463
Verb Keys Defined
461
Unique Spellings
373
Distinct Functions
~90
Alias Spellings
554
zpwr.zsh Lines
405
_zpwr completion (lines)

Dispatch is a single source $ZPWR_VERBS_FILE "$@" per call — cheaper than re-resolving function names through fpath. Empty argv is shorthand for zpwrCd "$ZPWR". The completion file autoload/comps/_zpwr partitions verbs into regen, clean, and travis groups for grouped Tab descriptions.

// REPRESENTATIVE VERBS

VerbFunctionWhat it does
zpwr aboutzpwrAboutZPWR ASCII banner. Aliases: banner.
zpwr benchzpwrBenchBenchmark startup time with percentiles and baseline diff. Aliases: benchmark.
zpwr doctorzpwrDoctorEnvironment health check. Aliases: doc, checkup.
zpwr topzpwrTopLive dashboard (panel-of-panels view across env/git/tmux/proc).
zpwr flamezpwrFlameFlame-graph of shell startup spent in autoload resolution.
zpwr startupzpwrStartupStartup profile: time per source/autoload.
zpwr lintzpwrLintShellcheck/zsh-syntax pass across the tree.
zpwr portszpwrPortsListening ports (lsof/ss) with PID and command.
zpwr stalezpwrStaleFind files untouched past a threshold.
zpwr pathauditzpwrPathauditAudit $PATH entries: dupes, missing dirs, dead symlinks.
zpwr gitwhozpwrGitwhogit who: per-author churn for the current repo.
zpwr timelinezpwrTimelineHistory timeline (per-day command counts from $HISTFILE).
zpwr aliasrankzpwrAliasRankMine history for most-used aliases.
zpwr funcrankzpwrFuncRankRank zsh functions by call count.
zpwr depszpwrDepsFunction dependency graph + call-chain analysis (aliases: callers).
zpwr tracezpwrTraceCommand trace.
zpwr replayzpwrReplayReplay a previous command sequence.
zpwr watchzpwrWatchFile watcher with custom on-change action.
zpwr snapshotzpwrSnapshotSnapshot env (vars, fns, aliases, $PATH). Paired with zpwr restore.
zpwr resolvezpwrResolveIdentify what a bareword resolves to: alias, fn, builtin, file.
zpwr wizardzpwrWizardInteractive 217-page ZPWR encyclopedia / cheatsheet.
zpwr matrixzpwrMatrixMatrix-style screensaver / TUI battle.
zpwr fortunezpwrFortuneShow a fortune through cowsay/lolcat.

@PLUGIN STACK (ZINIT)

ZPWR loads its zsh plugins through zinit. Plugins are listed flat in install/.zshplugins (48 entries), wired with zinit ice turbo-mode directives for lazy loading. The plugin set spans completions, fzf integration, syntax highlighting, history substring search, OMZ libraries / plugins, and ZPWR's own forked plugins under the MenkeTechnologies/* namespace.

48
Zinit Plugins
21
zinit ice (turbo) invocations
17
zinit load lines
4
zinit snippet (OMZ) lines

// PLUGIN GROUPS

MenkeTechnologies forks

The maintainer's own forks shipped at the head of .zshplugins: fasd-simple, forgit, fzf, fzf-tab, fzf-zsh-plugin, gh_reveal, jhipster-oh-my-zsh-plugin, kubectl-aliases, revolver, zconvey.

Prompt

romkatv/powerlevel10k loaded with a custom ice line that runs zpwrBindPowerline, zpwrBindPowerlineTmux, zpwrBindDirs, and zpwrPrecmd as atinit.

fzf integration

fzf-zsh-plugin, fzf-tab, junegunn/fzf as the binary side; autoloaded fzf/ completion shims tie fzf into vim, emacs, zpwr, git, killall, printf.

OMZ

Oh-my-zsh plugins / libs sniped via zinit snippet OMZP::* / OMZL::* with an atload='zpwrOmzOverrides' hook so ZPWR can rebind any keybinding OMZ steals.

Completion

Compiled .zwc bytecode for completion cache; custom _zpwr, _zcommand, _zcommand_mult, _p, _r, _f, _digs, _dfimage, _ssu, _ssd in autoload/comps/.

Toggle

ZPWR_PLUGIN_MANAGER env var picks between zinit (default) and a no-plugin fallback. Tests in tests/ exercise both paths.


!KEYBINDINGS

ZPWR rebinds the shell from the keyboard up. 228 bindkey statements span zsh's six keymaps (viins, vicmd, visual, menuselect, listscroll, viopp); 80 bind-key directives across 24 tmux configs cover pane / window / session management. The README publishes a generated reference (source keybindings_to_readme.zsh >> README.md) so the bindings stay in sync with the live shell.

228
Zsh bindkeys
80
Tmux bind-key
6
Zsh Keymaps Covered
24
tmux Conf Files

// TMUX CONF MATRIX

FileRole
init.confRoot tmux config; source-file's the rest based on version + OS.
tmux_lt_21.conf / tmux_ge_21.confPre/post tmux 2.1 syntax (setw renames, status interval, escape-time).
tmux_lt_29.conf / tmux_ge_29.confPre/post 2.9 (window styles, pane-base-index, hooks).
tmux_lt_31.conf / tmux_ge_31.confPre/post 3.1 (extended-keys, popup support, format ops).
tmux-mac.conf / tmux-linux.conf / tmux-wsl.confPer-OS clipboard wiring (pbcopy / xclip+xsel / clip.exe).
four-panes / eight-panes / sixteen-panes / thirtytwo-panes (.conf)Pane-layout presets bound to prefix-driven hotkeys.
sixteen-panes-repl.conf / thirtytwo-panes-repl.confREPL-oriented variants that pre-launch repl pids per pane.
control-window.conf / control-window2.conf / alt-control-window.confMaster-window navigation bindings (Ctrl-A prefix overlay).
fourVertical.conf / learn.conf / google.sh / config-files.confSpecialty layouts: 4 vertical, learning mode, search-pane spawner, dotfile editor.

+TOOLING INSTALLED

The install/ directory bootstraps the entire surrounding ecosystem ZPWR depends on. casks.sh + formulae.sh alone invoke brew install 674 times across 643 distinct formulas/casks; gems.sh, npm_install.sh, neovim_install.sh, iftop_install.sh, go_install.sh add Ruby / Node / Neovim / iftop / Go toolchains. Vim is set up with install/init.vim + plugin manifests; Emacs config + JetBrains plugin bundles ship in zips ready to drop in.

643
Brew Formulas/Casks
674
brew install Calls
25
Shell Installers
82,152
install/ Lines
FileWhat it provisions
install/casks.shMac GUI apps via brew install --cask: Alacritty, iTerm2, Alfred, Anaconda, Sublime, JetBrains IDEs, Docker Desktop, Postman, OBS, Wireshark, …
install/formulae.shCLI utilities via brew install: ripgrep, fd, bat, eza, fzf, fasd, gh, tmux, nvim, jq, yq, gnu-sed, gnu-tar, coreutils, …
install/mincasks.shMinimal cask subset for low-storage installs.
install/gems.shRuby gems (lolcat, colorls, rspec, …).
install/npm_install.shNode CLIs (yarn, pnpm, eslint, prettier, tree-sitter-cli, …).
install/go_install.shGo binaries via go install (currently empty — prior Go tools replaced by Rust ports).
install/neovim_install.shNeovim core build / install on systems where the package manager has an out-of-date version.
install/iftop_install.shBuild iftop from source on Linux distros that don't ship it.
install/.zshplugins48 zinit plugin specs.
install/init.vimNeovim/Vim config + plugin manifest.
install/stryke.vim.stk syntax highlighting / filetype detection.
install/jetbrains.zip / jetbrains_windows.zipPre-bundled JetBrains IDE keymap / plugins for cross-machine consistency.
install/jetbrainsplugins.txtPlugin manifest used by the IDE's plugin manager scripts.
install/Material_jm.icls / install/jm.itermcolorsJetBrains color scheme + iTerm2 palette.
install/htoprchtop config.
install/idea.vmoptionsJetBrains JVM options.
install/alacritty.tomlAlacritty theme + key bindings + font config.
install/conf.df / conf.gls / conf.ifconfig / conf.mount / conf.whoisStylized output configs for df/gls/ifconfig/mount/whois (colorize hook helpers).
install/{compose,learn,mem}.servicesystemd unit files for docker-compose / learning daemon / memory monitor.
install/hooksgit hooks directory shipped into $GIT_TEMPLATE_DIR on install.

%TEST SUITE

147 zunit test files / 79,535 lines / 14,280 @test cases. The suite probes every autoload function for existence, source-syntax validity, function-body presence, and correct whence/wordtype classification — then asserts on env-var exports, env-var values, alias bindings, plugin registration, and behavior of the most-used verbs. Naming convention: t-<area>-<dim>-<scope>.zsh (e.g. t-autoload-subdir-body-all.zsh — "autoload, subdir, body presence, all functions"). Each t-*-all.zsh iterates every name and emits one zunit case per name, so the file count understates total assertions.

146
Test Files (.zsh)
79,535
Test Lines
~542
Lines / file (avg)
Test familyDimensions covered
t-autoload-*existence, definedness, body presence, source syntax, fpath resolution, function-type via whence / wordtype / which, funccheck structure. Run against autoload/common/ and every subdir (fzf/, comps/, comp_utils/, darwin/, linux/, systemctl/).
t-env-*env var exports, values, comprehensiveness, defined-in-environment checks. Catches drift between env/.zpwr_env.sh and env/.zpwr_re_env.sh.
t-functions / t-callable-fns1,068 defined functions all callable without error in a clean shell.
t-aliases204 aliases all parse and resolve to real commands.
t-verb-*463 verb keys all dispatch through env/zpwr.zsh without "unknown verb" errors.
t-keybind-*228 bindkey statements all reference real widgets / functions.
t-_support/testfileShared fixture sourced into per-case files.

Suite is driven by zunit (zsh-native test runner with mock support, lifecycle hooks, parallel execution). CI hits both Ubuntu and macOS runners.


.DOCS / ENCYCLOPEDIA

The docs/ tree is the user-facing rendering of ZPWR's introspection: 217 wizard pages (page_001.zshpage_217.zsh) one zsh per topic, rendered into a 552 KB index.html encyclopedia (consumed by zpwr wizard in-shell and by the static HTML build for the web). 39 screenshots show every tmux preset, prompt theme, and verb in action. A zpwr-encyclopedia.tex + genEncyclopediaTex.py pipeline emits a print-quality PDF; tex_to_html.py goes the other direction.

FileSizeRole
docs/index.html552 KBThe Wizard Encyclopedia: every verb, alias, keybinding, env var, plugin, in one searchable HTML document. Generated from wizard_pages/.
docs/wizard_pages/page_NNN.zsh217 filesOne zsh source page per topic. Each is both a viewer (zpwr wizard 42) and a renderer source for index.html.
docs/hud-static.css15 KBNeon HUD theme: CRT scanlines, neon borders, Orbitron / Share Tech Mono fonts, cyan/magenta/green accents on a dark base.
docs/tutorial.css17 KBLayout for the tutorial / report pages (headers, breadcrumbs, toolbar, content rules).
docs/hud-theme.js13 KBTheme toggle (light/dark), CRT overlay toggle, neon-pulse toggle, bar-fill animation.
docs/zpwr-encyclopedia.texTeX master document for the print encyclopedia.
docs/genEncyclopediaTex.py27 KBGenerator: reads wizard_pages/ + reflection from a live shell, emits TeX.
docs/tex_to_html.pyTeX → HTML rendering pass for the web encyclopedia.
docs/regenPDF.sh1.5 KBOne-shot: regenerate the TeX, compile through pdflatex, drop the PDF in local/.
docs/screenshots/*.png39 imagesMacbook / Raspberry Pi / Rock64 captures of the shell, themes, and verb output.
man/man1/zpwr.18 KBTop-level man page (man zpwr): overview, primary verbs, env vars.
man/man1/zpwrall.153 KBComprehensive meta page (man zpwrall): every verb, every option, every env var.

=ENV / DISPATCH FILES

18 files in env/ tune the shell environment. The split is deliberate: .zpwr_env.sh sources once at login; .zpwr_re_env.sh sources on every shell so values that depend on per-shell state (TTY, parent PID, etc.) recompute. Aliases live in .shell_aliases_functions.sh so they can be re-sourced after a plugin clobbers them. zpwr.zsh is the verb dispatch table referenced by autoload/common/zpwr.

FileLinesRole
env/zpwr.zsh554The 463-entry ZPWR_VERBS table + dispatch logic. Sourced on every zpwr <verb> call.
env/.zpwr_env.sh243One-shot env: $ZPWR, $ZPWR_REPO_NAME, $ZPWR_FORKED_DIR, $ZPWR_LOGFILE, $EDITOR resolution, locale.
env/.zpwr_re_env.sh216Re-sourceable env: per-shell paths, history file, completion cache file, verb-file pointer. Uses zpwrEvalIfNeeded to skip already-set values.
env/.shell_aliases_functions.sh210204 aliases + helper functions (resourceable after plugin overrides).
env/.powerlevel9kconfig.sh82powerlevel10k/9k prompt segment selection + theming overrides.
env/*.zwc shadowsBytecode-compiled forms for cold-load speedup.

?HISTORY

ZPWR began life as a fork of Hashrocket's Dotmatrix in May 2017 and has been continuously developed since — 6,303 commits, 616 tags, 9 years. git shortlog attributes 11,239 of 11,241 commits (across all branches) to MenkeTechnologies; the remaining 2 are from an early collaborator (MichaelDimmitt). The active version line is v48.x. Recent commits show ongoing migration to the new stryke shell and perlrs (Rust replacement for perl) across helper scripts.

6,303
Commits
616
Tags
~9
Years (2017-05 → 2026-05)
v48.9.1
Latest tag
530,398
Total insertions
89,973
Total deletions
74
Commits in 2026 (YTD)
2
Contributors

// RECENT WORK (last 20 commits)

SHASubject
b45e62fadd zpwrall(1) comprehensive meta man page
c5e84a7add zpwr(1) man page
3fb6ab3add docs/index.html
2f5793f20k
9259fcazd => zde
1c678abgit-delta
a09bbb0stryke uses p not say
212f120stryke shell announcement
8e12535stryke does not accept reverse
adf7ca0stryke
1a3ef8ffix logo
353f049perlrs
a81d9d1perlrs on templater
7bc7ac8ci: install perlrs on Ubuntu runner
4fdf5b2test: drop zunit cases that execute perlrs-only code paths
d6e1407ci: install perlrs so zpwrContribCount and zpwrAlternatingPrettyPrint tests pass
0047db5perlrs in scripts
6b13532migrate to perlrs

;KEY DESIGN DECISIONS

Why ZPWR is shaped the way it is. Each call-out below is a decision the project could have gone the other way on, with the reasoning for the path taken.

Autoload over Source

Every function is a separate file under autoload/common/, picked up by zsh's autoload -Uz mechanism the first time it's called. A fresh shell never reads a function it doesn't use — cold start stays under $ZPWR_BENCH-able levels even with 533 functions on disk.

Verb Table over Subcommand Files

463 verbs route through one associative array in env/zpwr.zsh rather than 463 dispatch files. Alias spellings cost one extra key, not a duplicate file; the completion file walks the same table for Tab descriptions.

One Repo, Many Toolchains

install/ doesn't just install zsh plugins — it owns the brew formulas, npm globals, vim/nvim configs, JetBrains keymap, iTerm colors, and systemd units. A new machine reaches parity with one install/s invocation; nothing assumed about the host.

Cached Everything (local/)

Git-repo dirty state, alias usage rankings, completion bytecode, encyclopedia render, zcompdump, snapshot tarballs — all under local/. The zpwr regen verb family rebuilds caches in dependency order; zpwr clean family blows them away when contamination is suspected.

Re-sourceable Env Split

env/.zpwr_env.sh sources once; env/.zpwr_re_env.sh sources every shell. The split lets long-lived env (paths, repos) cache between shells while per-shell state (TTY, parent PID, host) recomputes — without forcing one or the other onto everything.

Per-tmux-Version Configs

tmux config syntax has shifted enough times (2.1, 2.9, 3.1) that one tmux.conf can't span all of them. ZPWR's init.conf dispatches to tmux_(lt|ge)_(21|29|31).conf on load — one tmux config tree works against every host in the fleet.

Tests as Reflection Probes

The 79k-line zunit suite is mostly "for each name in X, assert Y." Drift in autoload coverage, env-var exports, or alias bindings surfaces as a failing case — before the contributor finds out at runtime that a shell rebind silently dropped a function.

Wizard as Source-of-Truth

217 zsh "wizard pages" double as in-shell viewers (zpwr wizard N) and as the input to docs/index.html. One copy of every fact — the encyclopedia and the in-shell help never drift, because they're regenerated from the same files.

OMZ Snippet, Not Full Theme

OMZ plugins/libraries are sniped via zinit snippet OMZP::* / OMZL::* instead of installing the whole framework. Saves the bulk; atload='zpwrOmzOverrides' hook rebinds any keybinding OMZ trampled.

Stryke is the Bet

The README announces ZPWR will migrate to zshrs (the Rust login shell built on strykelang) "soon". Current commits show perlrs already replacing perl in helper scripts — the migration is already in flight one binary at a time, not a flag-day port.