.foundry/workspace.yml
workspace.yml is the one committed file in .foundry/. It is the resolved path map — where each declared service actually lives on disk — plus any drift. It is written by foundry sync (and by foundry init), and is intentionally minimal: all other service metadata stays in foundry.json.
Structure
generatedAt: "2026-01-01T00:00:00+00:00"
schemaVersion: "0.5.0"
services:
api: apps/backend/api # resolved path on disk
web: apps/frontend/web
legacy-worker: null # declared but not found on disk
drift:
undeclared: # on disk, not in the manifest
scratch-tool:
kind: backend
path: apps/backend/scratch-tool
detectedRuntime: uvicorn
missing: # in the manifest, not on disk
- legacy-worker
mismatches: # declared framework != detected runtime
api:
- "framework: manifest=spring-boot, detected=uvicorn"Fields
| Field | Meaning |
|---|---|
generatedAt | UTC timestamp of the last sync |
schemaVersion | The manifest schema version at sync time |
services | Map of service name → resolved repo-relative path, or null if not found |
drift | Present only when there is drift — undeclared, missing, mismatches |
Why it's committed
Sharing the resolved path map means every teammate's tooling agrees on where services live, and drift is visible in code review. Local-only, per-developer settings belong in config.yml instead, which is gitignored.
Note: launch behavior (ports, commands, env, health checks) is not stored here — it is resolved atfoundry runtime from the manifest'srunblock and framework detection.