.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

FieldMeaning
generatedAtUTC timestamp of the last sync
schemaVersionThe manifest schema version at sync time
servicesMap of service name → resolved repo-relative path, or null if not found
driftPresent 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 at foundry run time from the manifest's run block and framework detection.