{"apiVersion":"atrium.dev/v1","kind":"Agent","supportedServiceTypes":["hasura","nextjs","python-fastapi"],"buildEnvAllowlist":["NEXT_PUBLIC_FEATURE_X"],"platformOwned":{"root":["resolved","status","ui"],"serviceCloudRun":["region","service"],"env":["ATRIUM_API_BASE_URL","DATABASE_URL","HASURA_GRAPHQL_DATABASE_URL","NEON_DATABASE_URL","NEXT_PUBLIC_API_BASE_URL","POSTGRES_PRISMA_URL","POSTGRES_URL"]},"topLevelFields":{"apiVersion":{"required":true},"kind":{"required":true},"metadata":{"required":true},"services":{"required":true},"hosting":{"required":false},"ci":{"required":false},"billing":{"required":false,"validatedBy":"control-plane"},"access":{"required":false,"validatedBy":"control-plane","accessLevels":["deployment","developer","migration","public","subscription"]}},"initProfiles":[{"name":"nextjs","default":false,"services":[{"name":"frontend","type":"nextjs","path":"frontend","dockerfile":"frontend/Dockerfile","healthCheck":"/api/health"}],"scaffold":{"owner":"atrium-cli","templateSource":"cli-embedded","files":[{"path":"atrium.yaml","kind":"manifest"},{"path":"README.md","kind":"docs"},{"path":"frontend/Dockerfile","service":"frontend","kind":"dockerfile"},{"path":"frontend/app/api/health/route.ts","service":"frontend","kind":"health-route"}],"localEnvExamples":[{"path":"frontend/.env.example","service":"frontend"}]},"manifest":{"triggerPaths":["frontend/**","atrium.yaml"],"healthChecks":{"frontend":"/api/health"}}},{"name":"nextjs-fastapi","default":false,"services":[{"name":"frontend","type":"nextjs","path":"frontend","dockerfile":"frontend/Dockerfile","healthCheck":"/api/health"},{"name":"backend","type":"python-fastapi","path":"backend","dockerfile":"backend/Dockerfile","healthCheck":"/health"}],"scaffold":{"owner":"atrium-cli","templateSource":"cli-embedded","files":[{"path":"atrium.yaml","kind":"manifest"},{"path":"README.md","kind":"docs"},{"path":"frontend/Dockerfile","service":"frontend","kind":"dockerfile"},{"path":"frontend/app/api/health/route.ts","service":"frontend","kind":"health-route"},{"path":"backend/Dockerfile","service":"backend","kind":"dockerfile"},{"path":"backend/main.py","service":"backend","kind":"entrypoint"}],"localEnvExamples":[{"path":"frontend/.env.example","service":"frontend"},{"path":"backend/.env.example","service":"backend"}]},"manifest":{"triggerPaths":["frontend/**","backend/**","atrium.yaml"],"healthChecks":{"frontend":"/api/health","backend":"/health"}}},{"name":"nextjs-fastapi-hasura","default":true,"services":[{"name":"frontend","type":"nextjs","path":"frontend","dockerfile":"frontend/Dockerfile","healthCheck":"/api/health"},{"name":"backend","type":"python-fastapi","path":"backend","dockerfile":"backend/Dockerfile","healthCheck":"/health"},{"name":"gql","type":"hasura","path":"hasura","dockerfile":null,"healthCheck":"/healthz"}],"scaffold":{"owner":"atrium-cli","templateSource":"cli-embedded","files":[{"path":"atrium.yaml","kind":"manifest"},{"path":"README.md","kind":"docs"},{"path":"frontend/Dockerfile","service":"frontend","kind":"dockerfile"},{"path":"frontend/app/api/health/route.ts","service":"frontend","kind":"health-route"},{"path":"backend/Dockerfile","service":"backend","kind":"dockerfile"},{"path":"backend/main.py","service":"backend","kind":"entrypoint"},{"path":"hasura/config.yaml","service":"gql","kind":"hasura-config"},{"path":"hasura/metadata/version.yaml","service":"gql","kind":"metadata"},{"path":"hasura/migrations/default/.gitkeep","service":"gql","kind":"migrations"},{"path":"hasura/seeds/default/.gitkeep","service":"gql","kind":"seeds"},{"path":"hasura/metadata/databases/databases.yaml","service":"gql","kind":"metadata"}],"localEnvExamples":[{"path":"frontend/.env.example","service":"frontend"},{"path":"backend/.env.example","service":"backend"},{"path":"hasura/.env.example","service":"gql"}]},"manifest":{"triggerPaths":["frontend/**","backend/**","hasura/**","atrium.yaml"],"healthChecks":{"frontend":"/api/health","backend":"/health","gql":"/healthz"}}}],"contracts":{"registration":{"path":"/v0/agents/register","idempotency":"metadata.name is unique per workspace","returns":["agent","manifest","plan","bootstrap"]},"initPlan":{"path":"/v0/init/plan","idempotency":"read-only","returns":["manifest","plan","bootstrap","scaffold"]},"devSessions":{"path":"/v0/agents/{agent_id}/dev-sessions","idempotency":"idempotencyKey reuses an active session for the same agent and developer"},"serviceBootstrap":{"path":"/v0/agents/{agent_id}/bootstrap/services","idempotency":"idempotencyKey reuses the recorded bootstrap operation"},"deployPreflight":{"path":"/v0/agents/{agent_id}/deploy/preflight","idempotency":"read-only"}}}