For the complete documentation index, see llms.txt. This page is also available as Markdown.

Manifest & content schemas

The annotated map of every manifest field, linking each block to its concept page, plus where the exact field-level schema reference lives.

Context — This page is the navigational map of the manifest as of manifest schema 6.1.5: every block, what it does, where it's explained. The manifest shape is schema-versioned — which schema version applies to your runtime is the compatibility matrix's row for your image tag, and shapes differ across versions. The exact field-level reference (types, defaults, patterns, validation rules) is the generated Schemas reference — published per schema version alongside these docs, with machine-readable JSON Schemas (Draft 2020-12) in the artifact bucket (see Versioning & compatibility).

The full shape, annotated

# ── Identity ────────────────────────────────────────────────────────────
name: DriveAway Production          # display name (UI, logs)
id: driveaway-prod                  # immutable URL-safe slug
version: "12"                       # your revision label (logs, traces)
endpoint: false                     # platform flag: provision a public URL?
secrets:                            # platform secret bundles to inject as env vars
  - secret_name: driveaway-agent-secrets

agent_config:
  # ── Process & engine knobs ───────────────────── concepts/architecture.md
  runtime:
    api_key: ${AGENT_API_KEY}       # shared bearer token (inbound + callbacks)
    log_level: INFO                 # TRACE|DEBUG|INFO|WARNING|ERROR|CRITICAL
    max_engine_iterations: 5        # per-turn tool/think chain cap
    policy_batch_size: 5            # policies per matcher call

  # ── Platform connection ──────────────────────── concepts/architecture.md
  interactive_platform:
    base_url: https://app.interactive.ai   # also derives router + traces URLs
    public_key: ${INTERACTIVEAI_PUBLIC_KEY}
    secret_key: ${INTERACTIVEAI_SECRET_KEY}

  # ── Models ───────────────────────────────────── concepts/models.md
  llms:
    default: anthropic/claude-haiku-4.5    # chat primary (required)
    api_key: ${ROUTER_API_KEY}             # router credential (required)
    fallback:                              # chat fallbacks, ordered
      - anthropic/claude-sonnet-4-6
    evaluation: google/gemini-3-flash-preview          # evaluation primary
    evaluation_fallback: google/gemini-3.1-pro-preview # evaluation backup

  # ── Behavioural context ──────────────────────── concepts/prompts.md
  context:
    system_prompt:                  # persona & ground rules (versioned ref)
      id: driveaway-system-prompt
      version: 7
    language: match_user            # string; or an explicit language, e.g. "French"
    greeting: "Hi! I'm Mercedes from DriveAway — how can I help?"
    preamble:                       # mid-turn filler
      examples:
        - "Let me check."
        - "One moment."
      announce_tools: false         # true → status message after each tool batch
    routines:                       # ─────────── concepts/routines.md
      - id: car-search
        version: 4
      - id: book-a-car
        version: 9
    policies:                       # ─────────── concepts/policies.md
      - id: stay-on-topic
        version: 2
    glossaries:                     # ─────────── concepts/glossaries-and-macros.md
      - id: rental-terms
        version: 2
    macros:                         # ─────────── concepts/glossaries-and-macros.md
      - id: cancellation-wording    #   interpolated via ${macro-id} in chat_state
        version: 3
    reevaluation_tools:             # ─────────── concepts/tools.md
      - id: crm:authenticate_customer
    relationships:                  # ─────────── concepts/priorities.md
      priorities:
        - higher: policy:incident-handoff
          over_all_routines: true
      entailments:
        - when: policy:self-exclusion-request
          also_apply:
            - policy:rg-tone

  # ── Tool servers ─────────────────────────────── concepts/tools.md
  mcps:
    - id: cars
      hostname: http://cars-mcp.agents.svc.cluster.local
      port: 8765
      transport: streamable-http
      path: /mcp                    # endpoint path; defaults to /mcp
      api_key: ${CARS_MCP_KEY}

  # ── Retrieval grounding (one of two types) ───── concepts/knowledge-base.md
  search:
    type: pgvector                  # or: type: external
    hostname: kb-postgres.internal.example.com
    port: 5432
    password: ${KB_PG_PASSWORD}
    collection: support_articles
    embedding_model: openai/text-embedding-3-small
    embedding_dimensions: 1536
    top_k: 5

  # ── Conversation storage ─────────────────────── concepts/memory-and-state.md
  database:
    hostname: agent-postgres.internal.example.com
    port: 5432
    user: postgres
    password: ${DB_PASSWORD}
    dbname: postgres
    sslmode: require

  # ── Traces ───────────────────────────────────── guides/observability.md
  traces:
    deployment_environment: production
    trace_id_field: customer_id     # names autonomous traces by input field
    backend:                        # omit for the platform default backend
      url: https://otel.your-provider.com/v1/traces
      api_key: ${OTEL_API_KEY}
      api_key_scheme: bearer

  # ── Third-party webhook fan-out ──────────────── concepts/autonomous-routines.md
  webhooks:
    - name: kyc-events
      secret_env: ${KYC_WEBHOOK_SECRET}
      header: X-Payload-Digest
      algorithm: sha256
      prefix: ""
      routines:
        - kyc-decision

Required blocks: runtime, interactive_platform, llms, context (within it, system_prompt and language). Everything else is optional with the defaults documented on each concept page and aggregated in Limits & defaults.

Field types by block

Top-level manifest fields:

Field
Type
Required
Default
Meaning

name

string

yes

Display name (UI, logs)

id

string (URL-safe pattern)

yes

Immutable slug

version

string

yes

Revision label (logs, traces)

endpoint

boolean

no

false

Platform flag: provision a public URL

secrets

list of {secret_name: string}

no

[]

Platform secret bundles to inject as env vars

runtime:

Field
Type
Required
Default
Meaning

api_key

string (${VAR} env-ref)

yes

Shared bearer token (inbound + callbacks)

log_level

string enum: TRACE|DEBUG|INFO|WARNING|ERROR|CRITICAL

no

INFO

Process log level

max_engine_iterations

integer (≥ 1)

no

5

Per-turn tool/think chain cap

policy_batch_size

integer (≥ 1)

no

5

Policies per matcher call

interactive_platform:

Field
Type
Required
Default
Meaning

base_url

string (https?:// scheme required)

no

https://app.interactive.ai

Platform host; also derives router + traces URLs

public_key

string (${VAR} env-ref)

yes

InteractiveAI public key

secret_key

string (${VAR} env-ref)

yes

InteractiveAI secret key

llms — see Models for the full field table.

context:

Field
Type
Required
Default
Meaning

system_prompt

object {id: string, version: integer ≥ 1}

yes

Prompt reference

language

string

yes

match_user, or a single free-text language name/instruction passed to the model verbatim

greeting

string

no

None

First-turn greeting

preamble

object {examples: list[string] (≥1), announce_tools: boolean}

no

None (disabled)

Mid-turn filler config; announce_tools defaults false

routines

list of {id: string, version: integer ≥ 1}

no

[]

Routine references

policies

list of {id: string, version: integer ≥ 1}

no

[]

Policy references

glossaries

list of {id: string, version: integer ≥ 1}

no

[]

Glossary references

macros

list of {id: string, version: integer ≥ 1}

no

[]

Macro references, interpolated via ${macro-id} in chat_state

reevaluation_tools

list of {id: string}

no

[]

Tool ids that force re-evaluation after they execute (whether they succeed or error)

relationships

object {priorities: list[Priority], entailments: list[Entailment]}

no

None

Priority/entailment overrides — see Priorities

mcps[]:

Field
Type
Required
Default
Meaning

id

string

yes

Namespace prefix for this server's tools

hostname

string (https?:// scheme required)

yes

MCP server host, scheme included

port

integer (1–65535)

yes

TCP port

transport

string literal streamable-http

no

streamable-http

MCP transport protocol

path

string (starts with /)

no

/mcp

MCP endpoint path

api_key

string (${VAR} env-ref)

no

None

Bearer credential for this MCP server

search (type: pgvectorKnowledge base):

Field
Type
Required
Default
Meaning

type

string literal pgvector

no

pgvector

Discriminator

hostname

string (bare host, no scheme validation enforced)

yes

Postgres host

port

integer (1–65535)

yes

Postgres port

user

string

no

postgres

Postgres role

password

string (${VAR} env-ref)

yes

Postgres password

dbname

string

no

postgres

Database name

sslmode

string enum: disable|allow|prefer|require|verify-ca|verify-full

no

require

Postgres sslmode

collection

string (SQL-identifier pattern, optionally schema-qualified)

yes

pgvector table name

content_key

string

no

content

JSONB metadata key holding the document body

metadata_filter

object (JSON)

no

{}

Fixed JSONB filter applied to every search

embedding_model

string

yes

Embedding model, provider/model form

embedding_dimensions

integer (≥ 1)

yes

Must match the collection's vector column dimension

top_k

integer (≥ 1)

no

5

Articles returned per retrieval

prompt

object {id: string, version: integer ≥ 1}

no

None

Extra instructions for the query-rewrite call

search (type: external):

Field
Type
Required
Default
Meaning

type

string literal external

no

external

Discriminator

hostname

string (scheme optional, defaults to http://)

yes

Search endpoint host

port

integer (1–65535)

yes

Endpoint port

path

string (starts with /)

yes

HTTP path the runtime POSTs to

api_key

string (${VAR} env-ref)

no

None

Bearer credential for the endpoint

top_k

integer (≥ 1)

no

5

Records requested per retrieval

max_messages

integer (≥ 1)

no

20

Cap on recent messages sent in the request payload

timeout_seconds

float (> 0)

no

5.0

HTTP timeout; expiry soft-fails the retrieval

database:

Field
Type
Required
Default
Meaning

hostname

string (bare host, no scheme validation enforced)

yes

Postgres host

port

integer (1–65535)

no

5432

Postgres port

user

string

no

postgres

Postgres role

password

string (${VAR} env-ref)

yes

Postgres password

dbname

string

no

postgres

Database name

sslmode

string enum: disable|allow|prefer|require|verify-ca|verify-full

no

require

Postgres sslmode

traces:

Field
Type
Required
Default
Meaning

deployment_environment

string

no

production

OTel deployment.environment tag

trace_id_field

string

no

None

Input-payload key naming autonomous traces

backend

object (see below)

no

None

Custom OTLP backend; omit for the platform default

traces.backend:

Field
Type
Required
Default
Meaning

url

string (https?:// scheme required)

no*

None

OTLP HTTP traces endpoint

api_key

string (${VAR} env-ref)

no

None

Backend credential; requires url when set

api_key_scheme

string enum: bearer|basic

no

bearer

Auth header scheme for api_key

* url is required for the backend block to be meaningful, but only api_key enforces the dependency at validation time.

webhooks[]:

Field
Type
Required
Default
Meaning

name

string

yes

URL slug under POST /webhooks/{name}

secret_env

string (${VAR} env-ref)

yes

HMAC shared secret

header

string

yes

HTTP header carrying the signature

algorithm

string enum: sha256|sha1|sha512

no

sha256

HMAC digest algorithm

prefix

string

no

""

Literal prefix before the hex digest

routines

list of string (≥ 1)

yes

Autonomous routine ids this webhook dispatches to

Content document schemas

The documents the manifest references are validated against their own schemas, summarised on their concept pages:

Document
Shape defined in
Schema name (JSON Schema artifact)

Routine

routines

Policy

policies

Glossary

glossaries

Variable set¹

variables

Manifest itself

this page

agent-manifest, agent-config

¹ Variable sets are platform-catalog documents but are not referenced from the manifest — variable values are written per customer at runtime through the SDK.

The JSON Schemas include the cross-field rules prose can't keep honest — step-field mutual exclusions, "exactly one of over/over_all_routines", a routine node's tools/chat_state/think being mutually exclusive with a routing-only node requiring at least one transitions entry — so validating in CI catches authoring errors before deploy.

Universal validation rules

  • Credential-bearing fields accept only ${VAR_NAME} env-refs (uppercase letters, digits, underscores; not starting with a digit) — literals are rejected at validation time.

  • min_length enforces a character count only; it does not trim or reject whitespace-only values.

  • id (manifest): URL-safe — letters, digits, hyphens, underscores only.

  • Hostname fields: MCP hostnames (mcps[].hostname) must include an https?:// scheme. Database and knowledge-base hostnames (database.hostname, search.hostname when type: pgvector) are plain host strings with no scheme validation enforced. None accept paths, ports, or query strings inline (ports are separate fields, and MCP endpoint paths use the optional path field).

  • Ports: 1–65535. Versions in refs: integers ≥ 1.

Last updated

Was this helpful?