@vertile-ai/iac
Infrastructure,
expressed once.
The iac.json manifest is the source of truth for app infrastructure intent, provider reconciliation, and environment metadata wiring.
Section 01
Manifest Identity
Every manifest declares its schema version and project identity before provider or app configuration.
version1
yes
Schema version. Current manifests use version 1.
projectstring | { key?, name }
yes
Human-facing project identity used by generated infrastructure and documentation.
environmentsstring[] | object
no
Logical environment names or environment objects with file-selection metadata.
Section 02
Provider Configuration
Provider blocks hold provider-specific configuration that cannot be expressed portably yet.
providers.vercel.teamSlugstring
no
Vercel team slug used by Vercel env, project, and domain reconciliation.
providers.vercel.env.targetsobject
no
Maps Vercel targets such as preview and production to logical IaC environments.
providers.vercel.protectionBypassForAutomationvercelProtectionBypassForAutomation
no
Default Vercel automation-bypass operation for every managed Vercel project. Use ensure for repeatable note-keyed sync.
providers.vercel.projectDefaultsvercelProjectSettings
no
Default Vercel project settings applied to every deployable Vercel app.
providers.<target>.deploymentsobject
no
Provider deployment map from stage names such as uat or prod to logical environments and provider-specific render inputs.
providers.github.actions.environmentsobject
no
GitHub Actions environment, variable, and secret publishing configuration.
Section 03
Vercel Automation Bypass
Automation bypass is project protection configuration, not an application runtime environment variable.
providers.vercel.protectionBypassForAutomation.ensure{ secret, note, isEnvVar? }
no
Repeatable operation. Vertile IaC exact-matches note against Vercel-exposed automation-bypass notes, then sends update when the note exists or generate when it does not.
providers.vercel.protectionBypassForAutomation.generate{ secret?, note? }
no
Direct Vercel generate operation. Use for explicit provisioning or rotation, not ordinary recurring sync.
providers.vercel.protectionBypassForAutomation.update{ secret, isEnvVar?, note? }
no
Direct Vercel update operation for a known existing secret.
providers.vercel.protectionBypassForAutomation.revoke{ secret, regenerate }
no
Direct Vercel revoke operation for a known existing secret.
apps[].providers.vercel.protectionBypassForAutomationfalse | vercelProtectionBypassForAutomation
no
Per-project override. Set false to opt a Vercel project out of the provider-level automation-bypass default.
Section 04
Applications
Apps are deployable application surfaces. Provider adapters map app fields to provider-specific projects and settings.
apps[].keystring
yes
Stable app identifier used by env sync, provider manifests, and project reconciliation.
apps[].id | apps[].projectIdstring
no
Provider project id, commonly the Vercel project id for Vercel reconciliation.
apps[].rootDirectorystring
no
App root used by Vercel project settings and env file output.
apps[].domainsdomain[]
no
Domains assigned to this app by provider domain reconciliation.
Section 05
Environment Metadata
Env metadata is authored in iac.json and drives local package env sync, Vercel env sync, and GitHub Actions env publishing.
env.sourceDirstring
no
Root directory for env source files. Defaults to .vertile-iac/env.
env.sync.apps | env.sync.packagesstring[]
no
Package/app keys included in local env projection.
env.metadata.<source>.variables[]envVariable[]
no
Structured metadata for env keys, including example, encrypted, browser, package routing, and environment include/exclude rules.
Generated from schema/iac.schema.json and the schema documentation artifact published by @vertile-ai/iac. Landing builds run pnpm sync:iac-schemas before build so public schema files stay aligned with the IaC package.