Skip to main content
Version: 1.0



This page describes some of the common concepts in Hydra. Most of the concepts are described in much more details throughout the documentation.

Input Configs#

Input configs are used to construct the config object used by the application.
Supported input configs are:

Primary Config#

The input config named in @hydra.main() or in the Compose API.
The Primary Config is the only config that is allowed to have a Defaults List

Structured Config#

A @dataclass or an instance of a @dataclass that is used to construct a config. These enable both runtime and static type checking.

There are two primary patterns for using Structured configs:

  • As an Input Config.
  • As a schema validating Config Files and command line arguments.
class User:
name: str = MISSING
age: int = MISSING

Defaults List#

A list in the Primary Config that determines how to build the final Config Object. The list is typically composed of Config Group Options.

Example: config.yaml
- db: mysql
- schema: school

Config Group#

A Config Group is a mutually exclusive set of Config Group Options. Config Groups can be hierarchical and in that case the path elements are separated by a forward slash ('/') regardless of the operating system.

Config Group Option#

One of the configs in a Config Group.

Config Node#

A Config Node is either a Value Node (a primitive type), or a Container Node. A Container Node is a list or dictionary of Value Nodes.


A Package is the path of the Config Node in the Config Object.

Package directive#

The Package Directive specifies the root Package of an Config File


Input config: mi6/agent/james_bond.yaml
# @package _group_
codename: '007'
Resulting config
codename: '007'

Output Config Object#

The config for the application. It is a dictionary of Config Nodes generated from the Input Configs.


Config Search Path#

The Config Search Path is a list of paths that are searched in order to find configs. It is similar to the Python PYTHONPATH.


Plugins extend Hydra's capabilities. Some examples are Launcher and Sweeper.

Last updated on by Jasha10