yeetr, build tiny CLIs. Easy to code. Based on Python type hints.
A tiny, typed, signature-driven CLI runner. Supports Python 3.13 and 3.14.
No decorators. No command classes. No ceremony. Just yeet the function.
Write a plain function, run it from the command line — yeetr turns the
signature into args and options for you:
# app.py
def main(thing: int, *, n: float = 0.1) -> None:
print(thing, n)yeet app.py 5 -n 0.2No if __name__ == "__main__" block, no yeetr.run(...) call, no
decorators. Parameters before the bare * become positional args,
parameters after it become --options.
uv add yeetr- Zero boilerplate —
yeet app.pyfinds and runsmain— or any public function you name — and scaffolds the file if it doesn't exist yet. - Executable shebangs —
#!yeetmakes a script runnable on its own;#!yeet FUNCpicks the function to run. - Fully typed —
str,int,float,bool,Path,datetime,date,time,UUID,Decimal,Literal,Enum,T | None,list[T], tuples, and structureddataclass/NamedTupleargs, all Pyright-strict clean. - Async-native —
async def mainjust works, with automatic uvloop if it's installed. - Rich output — formatted logging and help/error tables out of the box.
The full guide — parameter metadata, env var fallback, path validators, runtime behavior, a yeetr vs. typer comparison, and the API reference — lives at rogerthomas.github.io/yeetr.
See CONTRIBUTING.md for how to set up a dev environment, run the test suite, and submit changes.
