v0.2.1 · Written in Zig

Developer Toolkit
in a Single Binary

48 commands for everyday dev tasks. JSON, encoding, hashing, time, HTTP, UUIDs — all offline, all fast.
CLI and TUI modes. No telemetry. No runtime dependencies.

Terminal
$ echo '{"name":"zuxi","version":"0.2.1"}' | zuxi jsonfmt
{
  "name": "zuxi",
  "version": "0.2.1"
}

$ zuxi hash sha256 "hello world"
b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

$ zuxi uuid generate
550e8400-e29b-41d4-a716-446655440000

$ zuxi base64 encode "hello world"
aGVsbG8gd29ybGQ=
48 Commands
~5 MB Binary Size
<1ms Startup Time
0 Dependencies

Why Zuxi

Replace dozens of fragmented tools with one binary that works everywhere.

🔧

Single Binary

One static binary, no runtime dependencies. Download and run — on macOS or Linux, arm64 or amd64.

⌨️

CLI + TUI

Pipe-friendly CLI for scripts and automation. Interactive TUI with live preview for exploration.

🔒

Fully Offline

No telemetry, no phone-home, no accounts. Your data never leaves your machine.

Instant Startup

Sub-millisecond startup time. No interpreters, no JIT warmup. Written in Zig for maximum performance.

🎨

Colored Output

Syntax-highlighted JSON, JWT, HTTP responses. Respects --no-color and pipe detection.

📦

Easy Install

Homebrew, deb, rpm packages, or direct binary download. Build from source with just Zig.

Installation

Choose your preferred method.

macOS (Homebrew)

brew install nxrvl/tap/zuxi

Linux (Debian / Ubuntu)

curl -LO https://github.com/nxrvl/zuxi/releases/latest/download/zuxi_0.2.1_amd64.deb
sudo dpkg -i zuxi_0.2.1_amd64.deb

Linux (Fedora / RHEL)

curl -LO https://github.com/nxrvl/zuxi/releases/latest/download/zuxi-0.2.1-1.x86_64.rpm
sudo rpm -i zuxi-0.2.1-1.x86_64.rpm

Build from Source

git clone https://github.com/nxrvl/zuxi.git
cd zuxi
zig build -Doptimize=ReleaseSafe

Commands

48 commands organized into 6 categories. Every command works in both CLI and TUI modes.

Formatters

jsonfmt Format, minify, or validate JSON
jsonrepair Fix broken JSON (LLM output, trailing commas)
jsonpath Query JSON with dot-notation paths
jsonstruct Generate Go struct from JSON
yamlfmt Format YAML with consistent indentation
yamlstruct Generate Go struct from YAML
tomlfmt Format TOML with consistent style
xmlfmt Format XML with consistent indentation

Conversions

json2yaml Convert JSON to YAML
yaml2json Convert YAML to JSON
json2toml Convert JSON to TOML
toml2json Convert TOML to JSON
json2xml Convert JSON to XML
xml2json Convert XML to JSON
yaml2toml Convert YAML to TOML
toml2yaml Convert TOML to YAML
# Pretty-print JSON with syntax highlighting
$ echo '{"a":1,"b":[2,3]}' | zuxi jsonfmt
{
  "a": 1,
  "b": [
    2,
    3
  ]
}

# Fix broken JSON from LLM output
$ echo '{name: "test", }' | zuxi jsonrepair
{"name": "test"}

# Query nested data
$ echo '{"users":[{"name":"Alice"}]}' | zuxi jsonpath '.users[0].name'
Alice

# Convert between formats
$ echo '{"key":"value"}' | zuxi json2yaml
key: value
base64 Encode or decode base64 data
strcase Convert between snake, camel, pascal, kebab, upper case
urlencode URL percent-encoding and decoding (RFC 3986)
count Count characters, words, and lines in text
slug Convert text to a URL-friendly slug
# Base64 encode/decode
$ zuxi base64 encode "hello world"
aGVsbG8gd29ybGQ=

$ zuxi base64 decode "aGVsbG8gd29ybGQ="
hello world

# String case conversion
$ zuxi strcase snake "helloWorld"
hello_world

$ zuxi strcase pascal "hello_world"
HelloWorld

# Generate URL slug
$ zuxi slug "My New Blog Post"
my-new-blog-post

# Count text
$ echo "hello world" | zuxi count
Characters: 11
Words: 2
Lines: 1
hash Compute SHA-256, SHA-512, MD5 digests
hmac Compute HMAC signatures (SHA-256, SHA-512)
jwt Decode JWT tokens, generate secret keys
# Hash a string
$ zuxi hash sha256 "test"
9f86d081884c7d659a2feaa0c55ad015...

# Hash from stdin
$ cat file.txt | zuxi hash sha512
ee26b0dd4af7e749aa1a8ee3c10ae992...

# HMAC signature
$ zuxi hmac sha256 "message" "secret-key"
4a7d1ed414474e4033ac29ccb8653d9b...

# Decode JWT with colored output
$ zuxi jwt decode "eyJhbGciOi..."
Header:  {"alg":"HS256","typ":"JWT"}
Payload: {"sub":"user","iat":1700000}

# Generate JWT secret key
$ zuxi jwt generate
kX9m2pQ7...
time Convert between Unix timestamps and RFC3339
cron Parse and explain cron expressions
# Current time in multiple formats
$ zuxi time now
Unix:    1700000000
RFC3339: 2023-11-14T22:13:20Z

# Convert Unix timestamp
$ zuxi time unix 1700000000
2023-11-14T22:13:20Z

# Convert RFC3339 to Unix
$ zuxi time rfc3339 "2023-11-14T22:13:20Z"
1700000000

# Parse cron expression
$ zuxi cron "*/5 * * * *"
Every 5 minutes
Next: 2023-11-14T22:15:00Z
uuid Generate and decode UUIDs
numbers Convert between bin, oct, dec, hex
http HTTP client (GET, POST, PUT, DELETE)
serve Simple static HTTP file server
urls Extract URLs from text
ports List listening network ports
envfile Validate and convert .env files
scaffold Generate project file templates
gitignore Generate .gitignore from templates
license Generate license text (MIT, Apache, GPL...)
iban IBAN validation and generation
# Generate UUID v4
$ zuxi uuid generate
550e8400-e29b-41d4-a716-446655440000

# Number conversion
$ zuxi numbers hex 255
ff

$ zuxi numbers bin 42
101010

# HTTP requests with colored output
$ zuxi http GET https://httpbin.org/get

# Serve static files
$ zuxi serve . --port 3000
Serving . on :3000

# Generate .gitignore
$ zuxi gitignore go,macos,vscode

# Generate license
$ zuxi license mit
csv2json Convert CSV to JSON array of objects
csv2md Convert CSV to Markdown table
tsv2md Convert TSV to Markdown table
cssfmt Format CSS with consistent indentation
cssmin Minify CSS
htmlfmt Format HTML with consistent indentation
gqlquery Format GraphQL queries
# CSV to JSON
$ echo 'name,age\nAlice,30' | zuxi csv2json
[{"name":"Alice","age":"30"}]

# CSV to Markdown table
$ echo 'name,age\nAlice,30' | zuxi csv2md
| name  | age |
|-------|-----|
| Alice | 30  |

# Format CSS
$ echo 'body{color:red;margin:0}' | zuxi cssfmt
body {
  color: red;
  margin: 0;
}

# Format GraphQL
$ echo 'query{user(id:1){name}}' | zuxi gqlquery
query {
  user(id: 1) {
    name
  }
}

Global Flags

Supported by every command.

Flag Description
--help, -hShow help for any command
--version, -vShow version
--output <file>Write output to a file instead of stdout
--format json|textControl output format
--no-colorDisable ANSI colored output
--quietSuppress non-essential output

Interactive TUI

Run zuxi without arguments to launch the interactive terminal UI.

Live Preview

See results as you type. Input and output side-by-side with real-time processing.

Keyboard Navigation

Arrow keys to browse commands, Tab to switch panels, F2 to copy output.

Dark & Light Themes

Toggle themes with F3. Both optimized for readability and long sessions.

zuxi ~/projects/zuxi
Tab:panel   F2:copy   F3:theme   Ctrl+C:quit
Commands
prettify
minify
validate
encode
decode
snake
camel
pascal
kebab
upper
sha256
sha512
md5
generate
now
unix
rfc3339
Input
{"name":"zuxi","ver":"0.2.1","active":true}
Output
{
  "name": "zuxi",
  "ver": "0.2.1",
  "active": true
}