Documentation
•
pip install tyro
tyro.cli() is a tool for generating CLI
interfaces from type-annotated Python.
We can define configurable scripts using functions:
tyro_function.mp4
Or instantiate configs defined using tools like dataclasses, pydantic, and attrs:
tyro_dataclass.mp4
Other features include helptext generation, nested structures, subcommands, and shell completion. For examples and the API reference, see our documentation.
-
Define things once. Standard Python type annotations, docstrings, and default values are parsed to automatically generate command-line interfaces with nice helptext.
-
Static types. Unlike tools dependent on dictionaries, YAML, or dynamic namespaces, arguments populated by
tyroare better undestood by IDEs and language servers, as well as static checking tools likepyrightandmypy. -
Modularity.
tyrosupports hierarchical configurations, which make it easy to decentralize definitions, defaults, and documentation.
tyro is designed to be lightweight for throwaway scripts, while
improving maintainability for larger projects. Examples:
|
nerfstudio-project/nerfstudio
|
Open-source tools for neural radiance fields. |
|
Sea-Snell/JAXSeq
|
Train very large language models in Jax. |
|
kevinzakka/obj2mjcf
|
Interface for processing OBJ files for Mujoco. |
|
blurgyy/jaxngp
|
CUDA-accelerated implementation of instant-ngp, in JAX. |
|
NVIDIAGameWorks/kaolin-wisp
|
PyTorch library for neural fields. |
|
autonomousvision/sdfstudio
|
Unified framework for surface reconstruction. |
|
openrlbenchmark/openrlbenchmark
|
Collection of tracked experiments for reinforcement learning. |
|
vwxyzjn/cleanrl
|
Single-file implementation of deep RL algorithms. |
|
pytorch-labs/LeanRL
|
Fork of CleanRL, optimized using PyTorch 2 features. |
|
pytorch/torchtitan
|
PyTorch-native platform for training generative AI models. |
|
KwaiVGI/LivePortrait
|
Stitching and retargeting for portraits. |
|
Physical-Intelligence/openpi
|
Open-source models for robotics. |
|
mujocolab/mjlab
|
Lightweight, modular abstractions for RL and sim-to-real robotics. |
|
amazon-far/holosoma
|
Humanoid robotics framework for RL training and deployment. |
|
MalcolmMielle/bark_monitor
|
Show your neighbor that your dog doesn't bark! |
tyro is opinionated. If any design decisions don't make sense, feel free to
file an issue!
You might also consider one of many alternative libraries. Some that we like:
- cappa offers a similar core feature set but with very different ergonomics. It looks polished and well-maintained!
- cyclopts and defopt has very comprehensive type annotation support and a heavier emphasis on subcommand generation.
- simple-parsing and jsonargparse provide deeper integration with configuration file formats like YAML and JSON.
- clipstick, which focuses on simplicity + generating CLIs from Pydantic models.
- datargs provides a minimal API for dataclasses.
- fire and clize support arguments without type annotations.
There are also some options that directly extend tyro:
- mininterface simultaneously generates GUI, TUI, web, CLI, and file-based program configuration.
- manuscript generates CLI interfaces from a simple block of configuration variables.
We also have some notes on tyro's design goals and other alternatives in the
docs here.