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
| Field | Type | Required | Description |
|---|---|---|---|
$schema | string | ✓ | JSON Schema URI for validation |
schemaVersion | string | ✓ | Manifest spec version (e.g. 0.3.0) |
name | string | ✓ | Human-readable platform name |
repository | string | ✓ | Repository slug (kebab-case) |
foundry | object | CLI metadata (min version) | |
template | object | Which template generated this manifest | |
structure | object | Directory layout (appsDir, ciDir, packagesDir) | |
ecosystem | object | GitHub org, prefix, related repos | |
ci | object | ✓ | CI/CD provider and IaC tool |
databases | object | Database schemas and changelogs | |
services | object | ✓ | Service 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.