Use cases, pain points, and background
NeMo Gym's CLI uses Hydra's +key=value override syntax for all arguments:
ng_collect_rollouts +agent_name=my_agent +input_jsonl_fpath=data.jsonl +output_jsonl_fpath=out.jsonl +num_repeats=5
Most CLI tools in the ecosystem (kubectl, docker, git, pip, etc.) follow the POSIX/GNU convention: long flags (--input data.jsonl) and short flags (-i data.jsonl) with --help discoverability. Users coming from these tools find the +key=value syntax unfamiliar and need to consult documentation, adding to developer friction.
Hydra is powerful for config composition, but its override syntax is designed for config management, not for user-facing CLI ergonomics.
Description:
Provide a POSIX/GNU --flag interface for the primary user-facing commands:
# Before
ng_collect_rollouts +agent_name=my_agent +input_jsonl_fpath=data.jsonl +output_jsonl_fpath=out.jsonl +num_repeats=5
# After
gym collect --agent my_agent --input data.jsonl --output out.jsonl --num-repeats 5
# Before
ng_run "+config_paths=[resources_servers/my_server/configs/my_server.yaml,responses_api_models/vllm_model/configs/vllm_model.yaml]"
# After
gym run --config resources_servers/my_server/configs/my_server.yaml --config responses_api_models/vllm_model/configs/vllm_model.yaml
The --flag layer translates to Hydra config overrides internally, so +key=value remains available as an escape hatch for advanced use cases. Every command should support --help.
Design:
What files should be touched? What logic should be written?
Out of scope:
What are some items that this issue could be mistaken to cover that this issue should explicitly NOT cover?
Acceptance Criteria:
Use cases, pain points, and background
NeMo Gym's CLI uses Hydra's
+key=valueoverride syntax for all arguments:Most CLI tools in the ecosystem (kubectl, docker, git, pip, etc.) follow the POSIX/GNU convention: long flags (
--input data.jsonl) and short flags (-i data.jsonl) with--helpdiscoverability. Users coming from these tools find the+key=valuesyntax unfamiliar and need to consult documentation, adding to developer friction.Hydra is powerful for config composition, but its override syntax is designed for config management, not for user-facing CLI ergonomics.
Description:
Provide a POSIX/GNU
--flaginterface for the primary user-facing commands:The
--flaglayer translates to Hydra config overrides internally, so+key=valueremains available as an escape hatch for advanced use cases. Every command should support--help.Design:
What files should be touched? What logic should be written?
Out of scope:
What are some items that this issue could be mistaken to cover that this issue should explicitly NOT cover?
Acceptance Criteria: