Kipferl logo
Rust v0.6.0-rc.2 is available now

Build CLI apps that
developers love

Python syntax. Standalone binaries around 4–5 MB. Instant startup.Ship beautiful command-line tools without the bloat.

$curl -LO …/v0.6.0-rc.2/kipferl-macos-aarch64

See it in action

Beautiful output and interactive prompts, built-in.

kipferl demo showing CLI app with interactive prompts and beautiful output
7.044ms
Median startup
4.3MB
Minimal app
1,669
Compat checks
4
Release targets

Everything you need

A complete toolkit for building modern CLI applications, without the complexity.

Instant Startup

A measured 7.044 ms median and 7.980 ms p95 on Apple Silicon, without virtual-environment activation.

Standalone Binaries

Target-specific executables around 4.3–5.3 MB. Linux releases are static musl binaries with no dynamic libc dependency.

Python Syntax

Write in familiar Python. No new language to learn—just better, faster tooling for the CLI.

Beautiful Output

Tables, boxes, progress bars, spinners, and rich colors. All built-in, zero dependencies.

Interactive Prompts

Select, multiselect, confirm, and password inputs with smooth keyboard navigation.

50+ Runtime Modules

HTTP, SQLite, JSON, regex, subprocess, and more—hosted by Rust with compatibility tests against CPython.

How it compares

kipferl vs traditional CLI tooling

FeaturekipferlPython + ClickNode.js
Cold start7.044msRuntime-dependentRuntime-dependent
Binary size~4.3MBRuntime + appRuntime + app
DependenciesNonepip + venvnode_modules
DistributionSingle fileComplexComplex
TUI built-inYesRequires RichRequires libs

Simple, expressive API

Everything you need to build great CLI apps in a clean, Pythonic interface. No boilerplate, no configuration—just write code and ship.

  • Beautiful boxes and tables
  • Interactive prompts with keyboard nav
  • Progress bars and spinners
  • Colored status messages
  • HTTP requests with built-in TLS
app.py
import tui
import input

# Beautiful boxes
tui.box("Deploying...", title="Release")

# Interactive prompts
env = input.select("Environment:", ["dev", "prod"])

# Formatted tables
tui.table([
    ["Artifact", "Size"],
    ["app", "4.3MB"],
], headers=True)

tui.success(f"Deployed to {env}!")
ENGINEERING RETROSPECTIVE

Why we rewrote Kipferl in Rust

We migrated the CLI, loader, runtime host, and native modules incrementally—keeping the application format stable and using compatibility as the release gate. The result is easier to maintain, fully tested on four targets, and still compact enough to ship as one file.

Read the migration story
1,669 / 1,669
compatibility checks
85,310
obsolete lines removed
7.044 ms
median startup
4
native release targets

Ready to build something
beautiful?

Get started in under a minute. Ship your first CLI app today.

ucharm|Beautiful CLI apps, tiny binaries.
Built with Rust and PocketPy. Open source under the MIT license.