JSON by Default
All zetl commands emit JSON by default. Human-readable output is available via --format table (or --format natural / --format dot for reason explain).
(given json-default-output)
(given structured-errors)
(given nonzero-exit-codes)
Why agent-first
zetl is designed to work both as a human CLI tool and as a building block for AI agents and scripts. JSON output means:
- Agents can parse results without scraping tables
- Structured errors include error codes, affected files, and suggested fixes
- Non-zero exit codes signal failure to shell scripts and CI pipelines
- Output is composable with
jq,fx, and other JSON tools
Human output
For interactive use, --format table renders results as aligned tables via comfy-table. The TUI provides a richer interactive experience — see TUI.
Both audiences
This dual-output design means a single tool serves both audiences. An agent might run zetl reason status and parse the JSON, while a human runs zetl reason status --format table and reads the output directly.
See also: Rust for CLI, TUI, Reason Commands