Skip to content

Config, Telemetry & Artifacts ​

Three small operational blocks round out a manifest without describing what the agent does: free-form runtime config, observability via telemetry, and the artifacts on/off switch. This agent turns on all three.

yaml
apiVersion: adl.inference-gateway.com/v1
kind: Agent
metadata:
  name: search-agent
  description: Catalogue search agent with runtime config and observability on
  version: "1.2.0"
  tags:
    - search
spec:
  capabilities:
    streaming: true
    pushNotifications: false

  agent:
    provider: openai
    model: gpt-4.1-mini
    systemPrompt: |
      You answer questions by searching the product catalogue. Honour the
      cache and ranking settings provided in your runtime configuration.

  config:
    cache:
      ttlSeconds: 300
      maxEntries: 1000
    featureFlags:
      experimentalRanking: true
      semanticSearch: false
    search:
      provider: ${SEARCH_PROVIDER}
      endpoint: ${SEARCH_ENDPOINT}

  server:
    port: 8080

  language:
    go:
      module: github.com/example/search-agent
      version: "1.26"

  telemetry:
    enabled: true
    traces:
      exporter:
        otlp:
          endpoint: http://localhost:4318
          protocol: http/protobuf
    metrics:
      exporter:
        prometheus:
          host: ""
          port: 9464

  artifacts:
    enabled: true

Highlights ​

  • config is grouped one level deep. Every top-level key (cache, featureFlags, search) must itself be an object; inside your own groups, any JSON value goes: strings, numbers, booleans, nested objects. The generator passes the whole tree straight through to the agent's runtime config layer without interpreting it. The exception is the reserved tools group, which is typed and closed - see spec.config and the reserved tools group.
  • Secrets stay placeholders. config accepts any value, which makes it a tempting place to paste an API key - don't. Reference secrets with ${VAR} placeholders (${SEARCH_PROVIDER}, ${SEARCH_ENDPOINT}) and let the consumer resolve them at runtime; the schema treats the placeholder as an opaque string. See Secrets & interpolation.
  • telemetry starts with one switch, then opts into exporters.enabled: true maps to A2A_TELEMETRY_ENABLED=true and turns on the ADK telemetry server. The optional traces/metrics blocks select a per-signal exporter - the single key under exporter picks it (otlp to push, prometheus to pull) - and every field maps 1:1 to a standard OTEL_* env var, which adl-cli writes with an A2A_ prefix (A2A_OTEL_TRACES_EXPORTER, A2A_OTEL_EXPORTER_OTLP_ENDPOINT, ...). Headers, credentials, and sampling stay runtime-only. See spec.telemetry.
  • artifacts is the same shape. Like telemetry, it exposes only an enabled boolean; true tells the generator to emit CI/CD wiring that produces build artifacts (container images, archives) - the consumer's pipeline decides what an artifact looks like. Both blocks default to off, so omit them entirely if you don't need them. See spec.artifacts.