Central Manifest — the ops-repo platform.json

In a multi-repo platform, the authoritative manifest lives in the ops repo as platform.json. It is an ordinary v0.7.0 manifest, but its services point at other repositories via repository / path. Individual service repos carry no manifest — only a thin caller workflow.

What the orchestrator reads

For each service, the orchestrator dispatches on deploy.strategy and reads deploy.iac for the concrete deploy targets. The fields used by the current static path:

Field (deploy.iac)Purpose
stackPathPath to the per-repo OpenTofu stack (e.g. ci/iac/web)
regionAWS region (defaults to us-east-2)
roleArnIAM role the workflow assumes via OIDC (the tofu-runner)
domainThe service's domain
distDirBuild output directory to sync to S3 (caller-repo-relative)
bucketOutput / distributionIdOutputOpenTofu output names for the bucket + CloudFront distribution (default bucket_name / distribution_id)
buildEnvEnvironment variables injected into buildCommand

Example entry

"web": {
  "repository": "your-org/web-app",
  "path": "app",
  "environments": { "prod": { "branch": "main" } },
  "scope": "public",
  "stack": { "type": "frontend", "framework": "vite", "language": "typescript" },
  "deploy": {
    "strategy": "static",
    "buildCommand": "pnpm install --frozen-lockfile && pnpm --filter app build",
    "cdn": true,
    "dependsOn": ["iac"],
    "iac": {
      "stackPath": "ci/iac/web",
      "domain": "app.example.com",
      "distDir": "app/dist",
      "region": "us-east-2",
      "roleArn": "arn:aws:iam::<acct>:role/web-tofu-runner",
      "bucketOutput": "bucket_name",
      "distributionIdOutput": "distribution_id",
      "buildEnv": { "VITE_TARGET": "web", "VITE_API_BASE_URL": "https://api.example.com" }
    }
  }
}

Example services

A single manifest can mix services across repos, including several deployables out of one repo (here web and launcher share a repo, with web in a subdirectory and launcher at the root):

ServiceRepo / pathStrategy
webyour-org/web-app / appstatic
launcheryour-org/web-app / rootdesktop
docsyour-org/docs / rootstatic