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 |
|---|---|
stackPath | Path to the per-repo OpenTofu stack (e.g. ci/iac/web) |
region | AWS region (defaults to us-east-2) |
roleArn | IAM role the workflow assumes via OIDC (the tofu-runner) |
domain | The service's domain |
distDir | Build output directory to sync to S3 (caller-repo-relative) |
bucketOutput / distributionIdOutput | OpenTofu output names for the bucket + CloudFront distribution (default bucket_name / distribution_id) |
buildEnv | Environment 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):
| Service | Repo / path | Strategy |
|---|---|---|
web | your-org/web-app / app | static |
launcher | your-org/web-app / root | desktop |
docs | your-org/docs / root | static |