Skip to main content

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:

  1. Resolves the applications referenced by the environment's from_applications
  2. Clones each repository at the specified branch or tag
  3. Parses each application's config.yaml to build the deployment topology
  4. Applies any environment-level overrides (cluster, removed services, variable overrides)
  5. Deploys all applications into a shared namespace

Schema Reference

See the App Imports schema for the full configuration reference.