A fast, readable Linux shell for developers and agent workflows.
wolysh combines everyday Linux commands with a readable scripting language. Commands stay commands; arithmetic, conditions, loops, and functions get their own syntax. It is written in Zig and uses native Linux process and job control.
Get the latest Linux x86_64 release
The release archive includes the shell, examples, license, and checksum.
- Run familiar commands, pipes, redirects, and globs.
- Merge stderr with stdout, feed commands with here-documents, and isolate work in subshells.
- Write scripts with expressions,
if, loops, and functions. - Use built-in completion, syntax highlighting, history suggestions, and
Ctrl-R. - Get typo suggestions with a Bloom-style prefilter; normal command lookup skips fuzzy work.
- Cache recent misses for fast inline corrections on the next attempt.
- Use quick
laandlhshortcuts for commonlsoptions. - Manage foreground/background jobs with
Ctrl-Z,bg, andfg. - Run independent tasks with native
parallel -j N, fail-fast queueing, and JSONL task reports. - Check generated scripts with
wsh --checkbefore executing them.
let workers = 4 * 2
if workers > 4 {
print "Building with $workers workers"
cargo build --jobs $workers
}
Measurements are from one development machine, not a standardized benchmark. The loop result covers this 20,000-iteration workload; results vary by machine and workload.
The repeatable benchmark suite compares the current worktree, the previous release, and Bash with interleaved samples. It covers startup, arithmetic, external commands, pipelines, event-driven waits, and bounded parallel tasks.
Build once with zig build -Doptimize=ReleaseFast, then invoke the native
binary directly. Non-interactive commands skip prompt, history, and config
loading:
./zig-out/bin/wsh --check script.wsh
./zig-out/bin/wsh --no-config -c "parallel -j 2 --fail-fast --report checks.jsonl 'zig build check' 'zig build -Doptimize=ReleaseFast'"parallel runs Wolysh command strings in isolated child processes, inherits
functions and variables, and refills a slot as soon as a task finishes. Reports
record task indexes, exit statuses, and elapsed times separately from command
output. See the agent workflow guide for the contract
and examples.
Build from source
Linux x86_64 is the currently tested target. Building requires Zig 0.16.0:
zig build -Doptimize=ReleaseFast
./zig-out/bin/wshTo install the source build, run sudo install -m 0755 zig-out/bin/wsh /usr/local/bin/wsh.
For a user-local installation without sudo:
zig build -Doptimize=ReleaseFast --prefix "$HOME/.local"
"$HOME/.local/bin/wsh" --versionAdd $HOME/.local/bin to your existing shell's PATH if it is not already there.
Early stage and not yet a Bash drop-in. POSIX and Bash control flow (case,
until, [[ ]], (( )), C-style for), functions, indexed and associative
arrays, Bash parameter expansion, process substitution, extended globbing,
set -euo pipefail and traps are implemented and compared against Bash in the
test suite. See the language guide for features,
configuration, key bindings, and the remaining differences.
Recent changes are recorded in the changelog.
MIT. See LICENSE.


