Sayer¶
Fast. Scalable. Elegant. Command the CLI like a boss. 🧙♂️
Documentation: https://sayer.dymmond.com 📚
Source Code: https://github.com/dymmond/sayer
The official supported version is always the latest released.
Sayer is an async-friendly, decorator-first framework for building Python CLIs with strong typing, middleware hooks, and rich help output.
Documentation Map¶
- New to Sayer: Start Here
- Learn by building: Tutorials
- Solve one task: How-to Guides
- Understand internals: Concepts
- Look up APIs: API Reference
Why Sayer¶
- Typed command parameters (
Option,Argument,Env,JsonParam) - Sync and async command support
- Middleware hooks (
beforeandafter) - State and context injection
- Rich help and output integration
Quick Example¶
from sayer import Sayer, Option
app = Sayer(name="demo")
@app.command()
def hello(name: str = Option(..., help="Name to greet")):
print(f"Hello, {name}!")
if __name__ == "__main__":
app()
Run: