Multi-App Configuration
Multi-app configuration lets you compose multiple repositories into a single deployment environment. While a standard greyhound config (.greyhound/config.yaml) defines a single application, the multi-app config (.greyhound/applications.yaml) orchestrates several applications and their shared environments.
When to Use Multi-App Configuration
Use applications.yaml when your product is split across multiple repositories that need to be deployed together — for example, a backend API and a frontend app that share infrastructure and need to communicate within the same Kubernetes namespace.
Configuration File
Multi-app configuration lives in .greyhound/applications.yaml and has two top-level sections:
applications:
- name: api
repository: your-org/api
branch: main
default_cluster: shared-nonprod-eks
- name: web
repository: your-org/web
branch: main
default_cluster: shared-nonprod-eks
environments:
- name: staging
from_applications:
- name: api
- name: web
cluster: shared-staging-eks
- Applications — define which repositories greyhound should import, how to track them, and what child services they depend on.
- Environments — define named deployment targets that compose one or more applications together, with optional overrides for clusters, services, and variables.
How It Works
Each application in the applications array points to a GitHub repository containing its own .greyhound/config.yaml. When greyhound provisions an environment, it:
- Resolves the applications referenced by the environment's
from_applications - Clones each repository at the specified branch or tag
- Parses each application's
config.yamlto build the deployment topology - Applies any environment-level overrides (cluster, removed services, variable overrides)
- Deploys all applications into a shared namespace
Schema Reference
See the App Imports schema for the full configuration reference.