Skip to main content
Each entry in the packages list represents one directory of your monorepo. A package groups related tasks and gives them a shared name, root path, and environment. Tasks within the same package can reference each other by their bare name, while tasks in other packages are referenced as package:task.

Package fields

string
required
Unique name for the package. Used in task specifiers like web:dev and as the prefix in log output.
string
required
Relative path from the fyrer.yml directory to the package root. Must exist. Cannot be absolute.
map<string, string>
Environment variables applied to all tasks in this package. Takes precedence over root-level env.
string
Path to a .env file, relative to the package root. Loaded for all tasks in this package.
map<string, TaskConfig>
Map of task name → task configuration. See the Tasks reference.

Example

The following snippet is drawn from the acme-corp example and shows four packages across multiple languages:
fyrer.yml

Validation rules

  • Package names must be unique across the entire packages list.
  • root must be a relative path — absolute paths are rejected.
  • root must exist on disk at the time fyrer starts.
  • env_file must be relative and must exist on disk at the time fyrer starts.
Use short, lowercase package names (e.g., api, web, ui) — they appear in log prefixes and task specifiers like web:dev.