Small primitives
Learn Application, Command, Argument, and Option one concept at a time.


A small place to learn CLI design
quiCkLI is an educational minimal framework for learning how Python command-line applications are put together.
from quickli import Application, Argument
from quickli import load_json, load_yaml, render_json
app = Application(name="profile")
@app.entrypoint(arguments=[Argument("payload")])
def normalize(payload: str) -> str:
data = load_json(payload) if payload.lstrip().startswith(("{", "[")) else load_yaml(payload)
return render_json(data)
$ python profile.py "name: Ada" → {"name": "Ada"}
Learn by building
quickli keeps the core ideas visible: register a handler, describe its inputs, and dispatch explicit command-line tokens.
Learn Application, Command, Argument, and Option one concept at a time.
Use decorators and ordinary functions to create tools that are easy to inspect.
Start with a tiny example, then add conversion, validation, and subcommands.
New to quickli?
Follow the short guide, run the example, and use the source as your reference.
Add to your project
Add quickli to an existing Git project, or create a clean project to experiment with the framework.
Keep your current project and install quickli into its virtual environment.
pip install quickli
uv add quickli
Create a small Git project, then add quickli as its first dependency.
mkdir my-cli && cd my-cli
git init
python -m venv .venv
source .venv/bin/activate
python -m pip install quickli
mkdir my-cli && cd my-cli
git init
uv init
uv add quickli
Prefer a guided walkthrough? Continue to the Getting Started guide.