Skip to content

spec.deployment

Where and how the agent ships in production. Pick a target with type, then configure the matching sub-block.

yaml
spec:
  deployment:
    type: kubernetes
    kubernetes:
      image:
        registry: ghcr.io
        repository: company/customer-support-agent
        tag: v1.0.0

Fields

FieldTypeRequiredDescription
typestringenum: kubernetes, cloudrun, vercel, cloudflare. Selects the deployment target.
kubernetesobjectSee Kubernetes.
cloudrunobjectSee Cloud Run.
vercelobjectSee Vercel.
cloudflareobjectSee Cloudflare.

Kubernetes

yaml
spec:
  deployment:
    type: kubernetes
    kubernetes:
      image:
        registry: ghcr.io
        repository: company/customer-support-agent
        tag: v1.0.0
FieldDescription
imageSee Image.

The Kubernetes block is intentionally minimal in v1 - it carries the image and leaves the rest (Deployment, Service, ConfigMap, …) to the generator's templating. Future minor versions may add typed slots for replica counts and resource limits as common patterns harden.

Cloud Run

yaml
spec:
  deployment:
    type: cloudrun
    cloudrun:
      image:
        registry: us-central1-docker.pkg.dev
        repository: my-project/agents/customer-support
        tag: v1.0.0
        useCloudBuild: true
      resources:
        cpu: "1"
        memory: 512Mi
      scaling:
        minInstances: 1
        maxInstances: 10
        concurrency: 80
      service:
        timeout: 300
        allowUnauthenticated: false
        serviceAccount: [email protected]
        executionEnvironment: gen2
      environment:
        LOG_LEVEL: info
        CACHE_TTL: "300"
FieldReference
imageImage
resourcesResources
scalingScaling
serviceService
environment{ [key: string]: string } - env vars.

environment is injected into the running service and commonly carries both configuration and secrets. Never inline a real secret here - reference it with a ${VAR} placeholder and let your deploy pipeline supply the value. See Secrets & interpolation. (The kubernetes target has no environment map of its own; the generator's templating owns the Deployment's env / envFrom.)

Resources

FieldTypeDescription
cpustringCPU allocation per instance (e.g. "1").
memorystringMemory per instance (e.g. 512Mi, 2Gi).

Scaling

FieldTypeDescription
minInstancesintegerMinimum number of instances kept warm.
maxInstancesintegerCap on instances Cloud Run may spin up.
concurrencyintegerConcurrent requests served per instance.

Service

FieldTypeDescription
timeoutintegerPer-request timeout in seconds.
allowUnauthenticatedbooleanIf true, the service is publicly invokable.
serviceAccountstringGCP service-account email the service runs as.
executionEnvironmentstringCloud Run execution environment (e.g. gen1, gen2).

Vercel

yaml
spec:
  deployment:
    type: vercel
    vercel:
      project: customer-support-agent
      team: acme
      runtime: nodejs
      regions: [iad1]
      functions:
        memory: 1024
        maxDuration: 60
      environment:
        LOG_LEVEL: info
FieldReference
projectstring - Vercel project name.
teamstring - Vercel team ID or slug the project belongs to.
frameworkstring - Framework identifier (e.g. nextjs). Omit for auto-detection.
runtimestring - enum: nodejs, edge. Vercel function runtime.
regionsstring[] - Region identifiers (e.g. iad1).
functionsobject - Functions configuration.
environment{ [key: string]: string } - Environment variables.

Unlike kubernetes and cloudrun which deploy a prebuilt container image, Vercel deploys from source via its own build pipeline. There is no image sub-block – the build is managed by Vercel based on the project's framework and root directory.

environment is injected at deploy time and commonly carries both configuration and secrets. Never inline a real secret here - reference it with a ${VAR} placeholder and let your deploy pipeline supply the value. See Secrets & interpolation.

Functions

FieldTypeDescription
memoryintegerMemory limit per function invocation in MB (e.g. 1024).
maxDurationintegerMaximum execution time in seconds.

Cloudflare

yaml
spec:
  deployment:
    type: cloudflare
    cloudflare:
      name: customer-support-agent
      accountId: ${CLOUDFLARE_ACCOUNT_ID}
      compatibilityDate: "2025-01-01"
      compatibilityFlags: [nodejs_compat]
      routes:
        - agent.example.com/*
      workersDev: false
      environment:
        LOG_LEVEL: info
FieldReference
namestring - Worker (script) name registered with Cloudflare.
accountIdstring - Cloudflare account ID. Prefer a ${VAR} placeholder.
compatibilityDatestring - Workers runtime compatibility date (e.g. 2025-01-01).
compatibilityFlagsstring[] - Runtime compatibility flags (e.g. nodejs_compat).
routesstring[] - Custom routes / domains (e.g. agent.example.com/*).
workersDevboolean - Expose the Worker on its *.workers.dev subdomain.
environment{ [key: string]: string } - Plain-text vars (wrangler vars).

Like vercel and unlike kubernetes/cloudrun, Cloudflare Workers deploy from source via wrangler rather than a prebuilt container image, so there is no image sub-block. This target models Workers (the server/serverless product, the right fit for an A2A agent server), not Pages. Workers always run on the V8-isolate edge runtime, so there is no runtime enum as on Vercel - Node.js API needs are met with the nodejs_compat compatibility flag. compatibilityDate is effectively required by wrangler; when omitted the generator supplies a default.

environment carries plain-text wrangler vars. Never inline a real secret here - reference it with a ${VAR} placeholder, and set true secrets out-of-band with wrangler secret put. See Secrets & interpolation.

Image

Used by the kubernetes and cloudrun sub-blocks only.

FieldTypeDescription
registrystringImage registry (e.g. ghcr.io).
repositorystringImage repository within the registry.
tagstringImage tag.
useCloudBuildbooleanIf true, the generator wires in Google Cloud Build for image production. Most useful with type: cloudrun.