Hydra: YAML config composition for Python applications
Hydra is a framework for elegantly configuring complex applications
At a glance
- What is it?
- Hydra is a Python framework for composing application configuration from YAML files and driving it from the command line. It is built for projects whose config has outgrown a single settings file, and its install path is a one-line pip command.
- Who is it for?
- Adopt Hydra if your Python project's configuration has outgrown one file and you want command-line overrides without writing an argument parser by hand. Do not adopt it if your config is a handful of environment variables, or if you need a single static settings object with no CLI layer.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What Hydra solves, and for whom
The README calls Hydra "a framework for elegantly configuring complex applications." The operative word is complex. A script with three settings does not need a framework. A training run, a service with per-environment overrides, or any program whose configuration is assembled from several sources does, and that is the audience Hydra is written for. The repository's own keywords in setup.py are "command-line configuration yaml tab-completion", which is a fair summary of the surface area: you describe configuration as YAML, and Hydra turns it into something you can address, override and complete from a shell. The framework is Python-only, published on PyPI as hydra-core, and licensed under MIT. If your application is not Python, none of this applies.
How config composition works in the repository layout
Hydra's mechanism is composition, not parsing. The repository keeps its own configuration under a top-level hydra/ package, and the examples are organized by what they demonstrate: examples/tutorials/, examples/patterns/, examples/advanced/, examples/instantiate/, examples/configure_hydra/ and examples/plugins/. The presence of a plugins/ directory at the top level, alongside examples/plugins/, shows that configuration sources are an extension point rather than a fixed loader. The project also ships a grammar directory, hydra/grammar/gen, which the Ruff configuration excludes from linting because it is generated code. That detail matters for anyone reading the source: part of the command-line override syntax is generated from a grammar rather than hand-written, so the parsing behaviour is defined by a specification file, not by ad hoc string handling. Configuration structure changes get their own category in the release notes, separate from features and bug fixes, which tells you the maintainers treat config layout as a compatibility surface.
Installing Hydra and running a first override
The README gives two installation paths. The stable line is Hydra 1.3, installed with the command below. The README states that 1.3 is the stable version and points at the 1.3 documentation set.
pip install hydra-core --upgradeThe development line is Hydra 1.4. The README says it is coming soon and that until the stable release is available you install it from development releases on PyPI, using the --pre flag. The README lists supported Python versions for 1.4 as 3.10 through 3.14.
pip install --pre --upgrade hydra-coreAfter installing, the examples directory is the place to start rather than the README, which is a landing page with badges and links. examples/tutorials/ is the ordered entry point; examples/patterns/ covers recurring configuration shapes, and examples/instantiate/ covers turning config nodes into Python objects. The README does not document rollback or downgrade steps, so if a development release breaks your setup, expect to pin an explicit version yourself.
Where Hydra is the wrong tool
Hydra assumes your configuration is a first-class artifact that deserves its own files, its own directory layout and its own command-line namespace. That assumption is expensive for small programs. If your application reads four environment variables and one port number, Hydra adds a config directory, a composition model and a CLI layer to solve a problem you do not have. There is a second boundary worth naming: the framework is Python-specific. The README, setup.py and the package layout all describe a Python distribution named hydra-core, and the supported interpreter versions are listed per release line. A polyglot system where the configuration must be consumed by a Go service and a Python worker gains nothing from Hydra on the Python side alone. Finally, the setup.py classifier reads "Development Status :: 4 - Beta", which is the project's own label and sits awkwardly next to the README's description of 1.3 as stable. Treat that as a signal about how conservatively the maintainers classify the package, not as a claim about production readiness.
OmegaConf, and what a real alternative looks like
The README's support links tell you to tag questions with #fb-hydra or #omegaconf on StackOverflow, which points at the natural comparison. OmegaConf is the underlying configuration object layer; Hydra is the application-level framework that composes files, resolves overrides and drives the command line. If you only need typed, mergeable config objects inside a program, with no CLI and no config directory convention, OmegaConf alone is the smaller dependency. The difference in approach is scope, not quality: OmegaConf gives you a data structure, Hydra gives you a run. Choosing Hydra means accepting a directory convention and a command-line grammar in exchange for override and completion behaviour you would otherwise build yourself. The repository's own Hydra Landscape page is the place the project points to for third-party libraries, templates and plugins, which is a more honest starting point for comparison shopping than a feature table.
Maintenance, releases and the licence position
The last push to the default branch was on 2026-09-21, and the most recent release listed is v1.3.6 on 2026-08-29, with v1.3.5 and v1.3.4 before it. The repository is not archived. The README documents a transition: Hydra moved from the facebookresearch GitHub organization to hydra-ecosystem, and the README states the repository moved with its history, issues and pull requests intact, that Hydra remains MIT-licensed, and that no action is required from users. Contributors are pointed at CONTRIBUTING.md for current guidance. The upgrade cost is concentrated in the release notes. The pyproject.toml towncrier configuration defines an "API Change (Renames, deprecations and removals)" category and a separate "Configuration structure changes" category, so both code-level API churn and config-layout churn are tracked explicitly. Reading NEWS.md before a version bump is the cheap way to find them. On licensing: Hydra is MIT, and setup.py declares license_files as LICENSE plus ATTRIBUTION/LICENSE-antlr4, because the grammar tooling is attributed separately. If you redistribute Hydra or a derivative, that attribution file is part of the package. This is a description of what the repository declares, not legal advice.
Editorial conclusion
Adopt Hydra if your Python project's configuration has outgrown one file and you want command-line overrides without writing an argument parser by hand. Do not adopt it if your config is a handful of environment variables, or if you need a single static settings object with no CLI layer. Before committing, verify that your Python version matches the release line you install (3.10 through 3.14 for the 1.4 development line), and read the API Change section of NEWS.md, because the project tracks renames, deprecations and removals as a distinct change category.
Frequently asked questions
How do I install Hydra for a Python project?
The README gives pip install hydra-core --upgrade for the stable 1.3 line, and pip install --pre --upgrade hydra-core for development releases of 1.4. The package name on PyPI is hydra-core, not hydra.
Which Python versions does Hydra support?
The README lists Python 3.10 through 3.14 as the supported versions for the Hydra 1.4 development line. The setup.py classifiers enumerate 3.10 through 3.14 as well, and the Ruff target-version is set to py310.
What is Hydra in the context of this Python repository?
It is a framework for configuring complex applications, distributed on PyPI as hydra-core and licensed under MIT. It composes YAML configuration and exposes it through the command line, with tab-completion listed among the package keywords.
Where should I look for working Hydra examples?
The repository keeps its examples under examples/, split into tutorials, patterns, advanced, instantiate, configure_hydra and plugins. The README itself is a landing page that links to the documentation site rather than walking through usage.
Did Hydra change ownership or move repositories?
The README states that Hydra moved from the facebookresearch GitHub organization to hydra-ecosystem, with history, issues and pull requests intact. It also states that Hydra remains MIT-licensed and that no action is required from users.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/hydra-ecosystem-hydra)