AUGUST 5, 2026 · RELEASE

Kipferl 0.6: Rust-powered Python CLIs, baked smaller

Our first stable release as Kipferl keeps the pleasant Python-style workflow, moves the foundation to Rust, and ships tree-shaken standalone applications from 1.4 MB—with no Python, Rust, libc, or musl installation on the target machine.

1.451 MB
minimal Apple Silicon app
69.9%
smaller than its full build
7.679 ms
measured median startup
1,669 / 1,669
compatibility checks

A new name and a steadier foundation

Kipferl is the new name for μcharm/ucharm. The pastry name gives a small nod to Bun and fits the product: Kipferl bakes a focused Python-style CLI into one portable executable. The repository, command, packages, documentation, and public home now share the same spelling.

Version 0.6 also replaces the project's Zig implementation with stable Rust around the same embedded PocketPy runtime. This was a maintenance decision, not a rejection of Zig's ability to make fast software. Cargo, Rust's stable language contract, explicit VM ownership, and a larger maintained library ecosystem let us spend more time on the developer experience and less on infrastructure.

The migration was incremental and compatibility-gated. The application format remains MCHARM01, existing binaries keep running, and the temporary ucharm command, imports, environment variables, and download aliases make the transition deliberate rather than abrupt. Read the full migration retrospective for the why, how, outcome, and tradeoffs.

A tighter development loop

kipferl dev runs immediately, watches source, config, and template files through native filesystem events, debounces editor bursts, and restores the terminal between restarts. Ratatui and Crossterm now power interactive select and multiselect prompts in a scrollback-preserving inline viewport.

$ kipferl dev app.py
$ kipferl build app.py -o app
$ ./app
Kipferl terminal demo with styled output and interactive prompts

Useful batteries, with honest boundaries

Common configuration workflows cover JSON, YAML 1.2, TOML, KDL 2.0, XML, CSV, and INI/CFG. The CLI-focused runtime also includes SQLite, HTTPS, filesystem and process APIs, regex, archives, crypto, dates, logging, and more than 50 targeted modules. Maintained Rust crates back the parts where they improve correctness and ownership: Ratatui/Crossterm, Ureq/Rustls, Rusqlite with bundled SQLite, and focused parsers and archive libraries.

Kipferl is intentionally not CPython with pip in a smaller box. It supports familiar Python syntax and a curated library surface for command-line applications; C extensions and arbitrary pip packages are outside that contract. The published compatibility report makes those boundaries inspectable rather than implied.

Tree shaking without a user toolchain

A normal build conservatively analyzes imports and selects one of two prebuilt Rust runtime profiles. Common scripts use core; SQLite, HTTPS, interactive input, YAML/TOML/KDL, regex, crypto, archives, dynamic imports, and other optional capabilities select full.--full-runtime is an explicit escape hatch, and neither path needs a local compiler or linker.

Apple Silicon appBytesMedian startup
Core, selected by default1,450,8377.679 ms
Full compatibility4,817,9258.480 ms

Measured with the checked-in 2,000-run benchmark on an Apple M4 Max running macOS 15.6. The source, commands, distributions, and raw outputs are in the reproducible benchmark report.

The 69.9% reduction comes from Cargo features removing complete optional dependency trees—not from dropping error handling or making users install Rust. The tree-shaking deep dive explains the design and conservative fallbacks.

Published CLI artifacts

These are the exact GitHub release assets verified after publication. Every binary has an adjacent SHA-256 file; both Linux CLIs are statically linked and require no system libc or musl runtime.

TargetCLI sizeDownloadSHA-256
macOS Apple Silicon3.55 MiB3,727,024 bytesbinarychecksum
macOS Intel3.82 MiB4,009,384 bytesbinarychecksum
Linux ARM64 (static)4.00 MiB4,198,584 bytesbinarychecksum
Linux x86_64 (static PIE)4.33 MiB4,543,248 bytesbinarychecksum

Install or upgrade

brew install niklas-heer/tap/kipferl
kipferl --version

Already using Kipferl from this tap? Run brew upgrade kipferl. If the old μcharm 0.5 formula is installed, replace it once:

brew uninstall --force ucharm
brew install niklas-heer/tap/kipferl

Kipferl 0.6 still installs ucharm as a deprecated alias for this transition release. Direct downloads and checksum commands are in the installation guide.

What the release gate proved

The final tag passed 1,669/1,669 available compatibility checks and all 19 Vision checks. CI rebuilt the declared PocketPy patch series from pristine upstream, built and ran a standalone app on four native targets, checked every checksum, and proved that the Linux CLI, runtime, and loader have no dynamic interpreter. We repeated checksum, core/full build, execution, and Homebrew tests against the public release—not just the pre-tag workspace.

Rust made the complete runtime larger than the old minimal Zig foundation, particularly after adding maintained HTTPS, SQLite, Ratatui, archives, and configuration parsers. Profile-based tree shaking lets ordinary apps stop paying that cost while preserving the higher-quality libraries when their capabilities are used. That is the 0.6 tradeoff: optimize developer experience and maintenance first, then make the resulting cost selective and measurable.

Installation and checksum guide →Development server reference →Data-format guide →GitHub release and all assets →Changelog →Published compatibility report →Reproducible size and startup evidence →Full v0.5.0…v0.6.0 diff →