(account, region) pair. It provisions its own regional app infrastructure and database, and acts as its own deploy target in Synthetiq.
This page covers multiple regions within one AWS account. The directory layout below nests each cell under its account id, so it extends to multiple accounts later. Multi-account provisioning is not yet supported.
Repository layout
Each cell is its own infra root: a directory holdingpackage.json, .npmrc, and _infra/synthetiq.yaml. Organize cells by account id, then region:
<account-id>/<region>/ first.
The additional cell’s synthetiq.yaml
An additional cell is an ordinary config with two differences: it sets cell_slug to a unique slug (use the region), and it skips the account-shared resources the primary already owns. Your first region is the primary cell and omits cell_slug.
- A distinct base domain. A cell has its own edge, so two cells cannot share a domain. Give each cell its own
domain(apps.yourcompany.com,apps-au.yourcompany.com). - Its own certificates. An API certificate covering
*.api.<domain>in the cell’s region, and a CDN certificate covering*.<domain>+ apex inus-east-1(the edge is always inus-east-1, whatever the cell’s region). - Its own network. A VPC and at least three public subnets in the cell’s region.
- Its own DNS records.
provisionprints the three records to create under the cell’s domain.
Account-shared resources
A few resources exist once per account. The primary cell creates them; every additional cell in the same account must skip them with themanage block:
See Generating synthetiq.yaml for the full
manage block.
CI for multiple cells
One workflow provisions every cell by matrixing the reusable job over each cell’s directory. The roles and organization id are the same across cells (one account, one org); onlyworking-directory varies.
matrix list. Each cell plans and applies independently, so a PR touching one cell’s config produces a plan for that cell only.
Walkthrough: add ap-southeast-2
Starting from an existing us-east-1 cell in account 111122223333:
1
Adopt the per-cell layout
Move the existing infra root into
111122223333/us-east-1/ if it isn’t already there. The config is unchanged and the slug stays empty, so this is a no-op; generate reports no changes.2
Create the certificates
Request the new cell’s certificates and wait for
ISSUED:- API:
*.api.apps-au.yourcompany.cominap-southeast-2 - CDN:
*.apps-au.yourcompany.com+ apex inus-east-1
3
Write the cell config
Create Then add the multi-cell fields to the written
111122223333/ap-southeast-2/ as an infra root and generate its config from inside it:_infra/synthetiq.yaml:4
Add the cell to CI
Add
111122223333/ap-southeast-2 to the workflow’s matrix.working-directory, and confirm the trigger paths: still covers the account subtree.5
Plan, review, apply
Open a PR. The plan job posts the new cell’s changeset; the primary cell’s job is a no-op. Merge to apply. Create the three DNS records
provision prints for the new domain.6
Verify
List the org’s deployment targets and confirm the new cell is registered:You can also see it in the Synthetiq console at console.synthetiq.com → Integration Settings → Deployment Target. Deploy an app to it; it gets its own subdomain under the cell’s domain. See Environments for deploying across targets.

