CLI tool
hydra-ecosystem/hydra avatar
hydra-ecosystem/hydra

Hydra: YAML config composition for Python applications

Hydra is a framework for elegantly configuring complex applications

10,744 stars1,008 forksPythonMIT

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 last received commits 1 day ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • hydra-ecosystem/hydra10,744 ★ · +76
Star history
Repository2026-09-222026-11-14
hydra-ecosystem/hydra10.7k10.7k

76 Stars in the last 53 days, measured from the daily GitHub snapshot. Compare with other projects

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 Python package lives in a top-level hydra/ directory, 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. Hydra 1.3 is the legacy line, installed with the command below, and the README points at the 1.3 documentation set.

bash
pip install --upgrade "hydra-core>=1.3,<1.4"

Hydra 1.4 is in the release candidate phase, and the README says to install the latest published prerelease with the --pre flag. The README lists supported Python versions for 1.4 as 3.10 through 3.14.

bash
pip install --pre --upgrade hydra-core

After 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 likeliest entry point; examples/patterns/ covers recurring configuration shapes, and examples/instantiate/ covers turning config nodes into Python objects. If a prerelease breaks your setup, the README's legacy command, pip install --upgrade "hydra-core>=1.3,<1.4", returns you to the 1.3 line.

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 README lists supported interpreter versions for the 1.4 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 is the only maturity label in the files shown; the README describes 1.3 as the legacy version and 1.4 as a release candidate.

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-11-02, and the most recent release listed is v1.4.0rc3 on 2026-10-25, with v1.3.8 (2026-10-25) and v1.4.0rc2 (2026-10-21) 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 release candidate 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 --upgrade "hydra-core>=1.3,<1.4" for the legacy 1.3 line, and pip install --pre --upgrade hydra-core for the latest 1.4 prerelease. 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 release candidate 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

  1. hydra-ecosystem/hydra on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
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.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/hydra-ecosystem-hydra.svg)](https://hysenlabs.com/projects/hydra-ecosystem-hydra)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/hydra-ecosystem-hydra.svg)](https://hysenlabs.com/projects/hydra-ecosystem-hydra)

Was this useful?