foundry.json — Platform Manifest

The manifest is the single source of truth for what your platform IS. It declares topology — services, databases, ecosystem — not how to run them.

Only the primary platform repository has a foundry.json. Satellite repos are referenced, not duplicated.

Top-Level Fields

FieldTypeRequiredDescription
$schemastringJSON Schema URI for validation
schemaVersionstringManifest spec version (e.g. 0.3.0)
namestringHuman-readable platform name
repositorystringRepository slug (kebab-case)
foundryobjectCLI metadata (min version)
templateobjectWhich template generated this manifest
structureobjectDirectory layout (appsDir, ciDir, packagesDir)
ecosystemobjectGitHub org, prefix, related repos
ciobjectCI/CD provider and IaC tool
databasesobjectDatabase schemas and changelogs
servicesobjectService definitions

Name → Repository → Prefix

The platform name drives two derived values:

name: "An Average Platform"
  → repository: "an-average-platform"   (slugified)
  → prefix:     "aap"                   (first letters)

Both can be overridden explicitly, but the defaults are derived from the name. The prefix must be at least 2 characters.

Manifest vs Runtime

In schema v0.3.0+, services are lean. The manifest declares kind, type, role, database, and apiLibModule. Everything operational — ports, commands, env vars, health checks — lives in .foundry/runtime.yml.