Your habits, intact
Pipes, redirects, jobs, and variables run natively. Pasted loops, source, and eval run through /bin/sh and keep their variables.
A well-stirred shell
Quirl keeps the Bash and Zsh habits you already have, from pasted loops to source .env, completes the way Zsh does, and adds Nushell-style typed data and one sandboxed Lua 5.5.1 SDK for configuration, scripts, prompts, completions, and plugins.
Available now · Homebrew and verified native release archives
Recorded with the published macOS ARM release package for v0.5.1 from commit 3f0064c. See the recording provenance, first-session guide, and release measurements.
One coherent system
Quirl gives command bytes, structured values, and extension code distinct boundaries—then makes moving between them deliberate.
Pipes, redirects, jobs, and variables run natively. Pasted loops, source, and eval run through /bin/sh and keep their variables.
where, sort-by, group-by, and exact math over JSON, YAML, TOML, CSV, and files, in colored tables that fit your terminal.
One restricted, resource-budgeted Lua 5.5.1 runtime powers the programmable surface behind a Rust-validated boundary.
Tab inserts, extends, and lists as Zsh does, asks Zsh and tools like docker and kubectl for values, and documents every candidate.
See it
Every image comes from the published release binary running an isolated demo workspace.




Designed around boundaries
Command mode moves bytes. Data mode moves typed values. Lua handles general-purpose logic inside a constrained runtime. The boundary is visible every time you cross it.
Quirl 0.5 is safe as your login shell: ssh, scp, rsync, and editors get exact POSIX behavior, and pasted loops, source, and eval just work. Data mode gains Nushell's verbs and tables that fit, and Tab asks docker, kubectl, and gh for completions.