Services

Each key in services is a service name. The value declares what the service IS, grouped into structured blocks: scope (visibility), stack (technology), deploy (how it ships), and run (local dev). Multi-repo services add repository and path.

Service fields

FieldTypeDescription
scopestringpublic or internal — visibility of the service
stackobjecttype, framework, language — see below
deployobjectHow it ships. Requires strategy. See Deploy Strategies
runobjectLocal dev runtime — ports, args, env, health checks
databasestring / objectInline database config (engine, changelog, schema)
repositorystringMulti-repo: the owner/repo this service lives in. See Multi-repo
pathstringMulti-repo: the service's path within its repository (. = root)
environmentsobjectMulti-repo: per-service env→branch override. See Environments

stack

FieldValuesMeaning
typebackend,frontend,packageArchitecture category. In a monorepo it also fixes the location: backendapps/backend/{name}, frontendapps/frontend/{name}, packagepackages/{name}
frameworkspring-boot,uvicorn,nextjs,vite,The concrete runtime/framework. Drives convention defaults (Dockerfile, build context, secrets)
languagejava,python,typescript,Primary language (optional)
stack.type (what it is / where it lives) is orthogonal to deploy.strategy (how it ships). A frontend can deploy as static (S3/CDN) or service (SSR on ECS); a package deploys as none.

Deprecated fields (v0.5.0)

The flat v0.4.0 fields were grouped into blocks. The CLI still reads the old names as aliases, but new manifests should use the blocks:

Old (deprecated)New
kindstack.type
typestack.framework
rolescope
strategydeploy.strategy

Example

"services": {
  "api": {
    "scope": "internal",
    "stack": { "type": "backend", "framework": "spring-boot", "language": "java" },
    "deploy": { "strategy": "service" },
    "database": { "engine": "postgresql", "changelog": "ci/db/api/changelog-master.xml" }
  },
  "web": {
    "scope": "public",
    "stack": { "type": "frontend", "framework": "nextjs", "language": "typescript" },
    "deploy": { "strategy": "static", "cdn": true }
  },
  "shared": {
    "stack": { "type": "package" }
  }
}