Milo Examples
May 3, 2026 ยท View on GitHub
These examples are copy paths, not side demos. Every example directory has a runnable app.py; focused READMEs exist for the examples that are best starting points for new projects.
Fastest Starting Points
| Start here when you need | Example | Why |
|---|---|---|
| The smallest typed CLI | greet | One command, tests for schema, CLI dispatch, llms.txt, and MCP dispatch |
| A human CLI that is also an MCP tool | deploy | Typed constraints, destructive tool annotations, progress, resources, prompts, and interactive confirmation |
| An agent-readable task CLI | taskman | Commands plus MCP resources over application state |
| Polished terminal output patterns | outputgallery | Human summaries, CI-safe output, JSON mode, and Kida output primitives |
Run A CLI Example
uv run python examples/greet/app.py greet --name Alice
uv run python examples/greet/app.py greet --name Alice --loud
uv run python examples/greet/app.py --llms-txt
uv run pytest examples/greet/tests/ -q
uv run milo verify examples/greet/app.py
Example Map
| Category | Examples |
|---|---|
| Typed CLI and MCP | greet, deploy, ctxdemo, groups, lazyapp, devtool, taskman, outputgallery |
| Configuration, plugins, pipelines | configapp, pluggable, buildpipe |
| Interactive apps | counter, todo, stopwatch, filepicker, wizard |
| Async work | fetcher, downloader, spinner, liverender |
Copy Rules
- Start with
greetunless you already know you need state, progress, resources, or templates. - Use
deploywhen the command has real-world side effects and needs agent-visible annotations. - Use
taskmanwhen an MCP client needs both tools and read-only resources. - Use
outputgallerywhen output quality is the feature, especially for diagnostics, CI summaries, or site tooling. - Run
uv run milo verify path/to/app.pyafter adapting an example.