zush
zack's useful dynamic shell — a static-index command launcher you extend with plugins.
You declare commands in a plugin; zush rebuild / zush sync indexes them once into
~/.zush/*.json; then zush a.b.c imports (Python) or runs (script) only that one
target. No runtime scanning.
How it works
- Two indexes under
~/.zush/:pyindex.json(Python packages, built byzush rebuild) andrepoindex.json(repos, built byzush sync). - Dispatch of
zush a.b.c: resolve in either index → fire matchingprehooks → run the command → firepost(orerror) hooks. - Hooks and services work across both plugin types.
Plugin types & features
| Topic | File |
|---|---|
Python package plugins (__zush__.py) |
docs/python-packages.md |
Repo plugins (committed .zush/ tree) |
docs/repos.md |
| Commands: the manifest tree & argument parsing | docs/commands.md |
Hooks: pre/post/error with [] wildcards |
docs/hooks.md |
Services: shared ctx (config, clients, live servers) |
docs/services.md |
| CLI reference & environment variables | docs/cli.md |
| Why the rewrite (old vs new philosophy) | docs/philosophy.md |
Install
From source (requires Python ≥ 3.12); installs the zush command:
pip install -e . # or: uv pip install -e .
Commands
zush rebuild # index installed Python-package plugins
zush sync <repo> # clone/update a repo plugin and index it
zush a.b.c [args] # run a command
zush --help # list every indexed command
Develop
uvx --with typer --with click behave # tests (Windows: set PYTHONUTF8=1)
uvx ruff check src features # lint
Metadata
Release files for zush 2.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| zush-2.0.0.tar.gz | 8.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| zush-2.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.6 kB
Release files / zush-2.0.0.tar.gz
| Download URL | zush-2.0.0.tar.gz |
|---|---|
| Size | 8.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bbd263fbd8329853e6d7214aa5aead5fd28da0623ebb6e6e7468f7df81456a62
|
|
BLAKE2b-256 checksum How to use checksums |
6c2d29151fb4764e51884bd7ca7fa842125eddfbc621ed2547d3c070830c1f99
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 17, 2026.
Transparency logRelease files / zush-2.0.0-py3-none-any.whl
| Download URL | zush-2.0.0-py3-none-any.whl |
|---|---|
| Size | 15.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4a255990595b81a0d3d1128f1ac8c9c4665814dac17a4e2c2d2791dc19d9c4d7
|
|
BLAKE2b-256 checksum How to use checksums |
fd48ce090ebdf9b546c30f2b99c77e3dc18fa7a8bccbeed42a75882db1b04109
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 17, 2026.
Transparency log