CLI
HydroPilot exposes four command-line entry points for configuration validation, smoke testing, parameter application, and single-run execution.
Commands
| Command | Purpose |
|---|---|
hydropilot-validate | Validate a configuration and print diagnostics |
hydropilot-test | Run a full smoke test with one default evaluation |
hydropilot-apply | Apply design or physical parameters to a project copy |
hydropilot-run | Run one evaluation from a run YAML |
Typical workflow
For a new configuration, the usual order is:
- Run
hydropilot-validateto confirm the config is structurally correct. - Run
hydropilot-testto verify that the actual model workflow is wired correctly. - Use
hydropilot-runor the Python API for controlled evaluation. - Use
hydropilot-applywhen you want a materialized project copy with parameters written in.
hydropilot-validate
hydropilot-validate <config.yaml>Use this command to check a config without running the model. It parses YAML, expands template configs when needed, validates the resulting general config, and prints diagnostics line by line.
Important points:
- exit code
0means validation passed, even if warnings are present - exit code
1means at least one error-level diagnostic - the command is read-only and does not modify project files
hydropilot-test
hydropilot-test <config.yaml>This is the full smoke-test path. HydroPilot loads the config, builds a default parameter vector from parameter bounds, creates a temporary project copy, runs the model once, extracts outputs, and evaluates objectives and diagnostics.
Use it when you need to verify that:
- project paths are correct
- the model command actually runs
- output files are readable
- evaluation metrics are wired correctly
The smoke test forces parallel = 1 and keepInstances = true so the run is easier to inspect.
hydropilot-apply
hydropilot-apply <apply.yaml>This command creates a fresh project copy and writes parameters into it.
The apply file normally includes:
config: path/to/config.yaml
mode: design
values:
CN2: 72.5
ALPHA_BF: 0.3
GW_DELAY: 120
outDir: ./applied_projectUse mode: design when values live in design space and must be transformed before writing. Use mode: physical when you already have resolved physical parameters.
hydropilot-run
hydropilot-run <run.yaml>This is the single-run entry point. It loads the referenced config, evaluates one parameter vector, and prints a summary of objectives, constraints, diagnostics, and output locations.
It is intentionally narrow in scope:
- good for one-off evaluations
- not intended for optimization campaigns
- not intended for experiment management
For repeated runs or algorithm-driven workflows, move to SimModel or UQPyLAdapter.
What HydroPilot CLI is good at
- early config diagnostics
- smoke testing a real project setup
- parameter application for inspection
- single-run execution without writing custom Python
Command comparison
| Command | Runs model? | Writes files? | Best used for |
|---|---|---|---|
hydropilot-validate | No | No | Structural config checks |
hydropilot-test | Yes | Yes | End-to-end smoke testing |
hydropilot-apply | No | Yes | Inspectable project copies |
hydropilot-run | Yes | Yes | One-off evaluations |
