From Python script
to shipped tool.
Write familiar code. Add compatible packages.
Hand someone a single executable.
brew install niklas-heer/tap/kipferlMeet your new workflow.
Prefer reading? Follow the workflow
The recording uses the released macOS Apple Silicon CLI. The same workflow is available on all four release targets.
- Create a CLI project, run its greeting, and execute its starter test.
- Install the reviewed tzdata 2025.2 wheel and check the installed files. Add a small app that reads a bundled timezone data resource.
- Build an executable, remove the original project and caches, and run the executable independently.
kipferl new hello --template cli cd hello kipferl run -- --name Ada kipferl test kipferl add 'tzdata==2025.2' kipferl deps check kipferl build
Save this as zones.py inside the project:
import os
import tzdata
path = os.path.join(os.path.dirname(tzdata.__file__), "zoneinfo/UTC")
with open(path, "rb") as zone:
assert zone.read(4) == b"TZif"
print("tzdata " + tzdata.__version__ + ": UTC data bundled")kipferl build zones.py --mode universal -o dist/zones ./dist/zones # tzdata 2025.2: UTC data bundled
The recording takes this one step further: it runs the executable after deleting its temporary source project, installed packages, and caches.
The tzdata checks cover version constants and resource headers, not timezone calculations. Try the complete package example →
Everything between
an idea and “here, try this.”
Project scaffolding, checked dependencies, and portable builds. All part of the same CLI.
An empty folder.
A running app.
Arguments, helpful output, and a starter test. Your next useful command starts here.
kipferl new hello --template clicd hello && kipferl runPackages with
receipts.
Check PyPI dependencies against your exact runtime. Lock their versions and hashes. Restore them offline once their wheels are cached.
pure Python wheel- Wheel checksum verified
- Source compilation passed
- Reviewed resource checks passed
$ kipferl add 'tzdata==2025.2'Explore the package workflow Your app.
All packed.
Bundle local modules, package resources, and selected assets with the runtime. The person running your tool needs neither Python nor Kipferl installed.
See how packaging workskipferl buildOne binary per operating system and CPU target.
Make the terminal
a nicer place to be.
Tables, boxes, prompts, and progress. HTTP, SQLite, and everyday file formats. Familiar dotted imports connect it all.
Explore the runtime modulesimport urllib.parse as urls
import tui
# Native modules, ordinary imports
tui.box(
urls.quote("hello world"),
title="Ready to ship",
)hello%20worldLess guesswork.
More evidence.
Kipferl is a focused Python-style runtime. It supports a useful subset of Python, with explicit boundaries for packages and APIs.
Know what works. See what’s next.
Find verified workflows, read the limits, and explore 100 support priorities. Every rating states its evidence and limits.
Useful limits, stated up front.
Pure Python wheels. No native extensions or source builds. Tested records describe specific behavior on an exact runtime.
SMALL TOOLS DESERVE A GOOD TOOLKIT.What will you ship?
Open source. MIT licensed. Built with Rust and PocketPy.