Skip to content
agentgateway has joined the Agentic AI FoundationLearn more

For the complete documentation index, see llms.txt. Markdown versions of all docs pages are available by appending .md to any docs URL.

Page as Markdown

Static configuration

Configure static settings that are applied at startup time.

Most agentgateway configurations dynamically update as you make changes to the gateways, routes, policies, backends, and so on.

However, a few configurations are statically configured at startup. These static configurations are under the config section.

Static configuration file schema

The following table shows the config file schema for static configurations at startup. For the full agentgateway schema of dynamic and static configuration, see the reference docs.

FieldTypeDescription
configobjectconfig defines top-level settings for DNS, admin, networking, observability, and session
management. Unlike other sections, these are applied only at startup and are not dynamically reloaded.
config.enableIpv6booleanEnable IPv6 address resolution and binding. Defaults to true.
config.dnsobjectDNS resolver settings.
config.dns.lookupFamilyenumControls which IP address families the DNS resolver will query for
upstream connections.
Accepted values: All, Auto, V4Preferred, V4Only, V6Only.
Defaults to Auto (IPv4-only when enableIpv6 is false, both when true).
config.dns.edns0booleanWhether to enable EDNS0 (Extension Mechanisms for DNS) in the resolver.
When None, the system-provided resolver setting is preserved.
Can also be set via the DNS_EDNS0 environment variable.
config.localXdsPathstringLocal XDS path. If not specified, the current configuration file will be used.
config.modelCatalog[]objectModel cost catalog sources; entries are merged in order, with later entries taking precedence.
config.modelCatalog[].filestringPath to a file on disk containing the model cost catalog.
config.modelCatalog[].inlinestringModel cost catalog provided inline as a string.
config.modelCatalog[].inlineobjectModel cost catalog provided inline as structured data.
config.modelCatalog[].inline.providersobjectMap of provider name to its supported models and pricing.
config.modelCatalog[].inline.providers.*.modelsobjectMap of model ID to its pricing rates and tiers.
config.modelCatalog[].inline.providers.*.models.*.ratesobjectBase pricing rates for this model.
config.modelCatalog[].inline.providers.*.models.*.rates.inputstringCost per 1M input (prompt) tokens.
config.modelCatalog[].inline.providers.*.models.*.rates.outputstringCost per 1M output (completion) tokens.
config.modelCatalog[].inline.providers.*.models.*.rates.cacheReadstringCost per 1M tokens read from cache.
config.modelCatalog[].inline.providers.*.models.*.rates.cacheWritestringCost per 1M tokens written to cache.
config.modelCatalog[].inline.providers.*.models.*.rates.reasoningstringCost per 1M reasoning tokens. Falls back to the output rate if unset.
config.modelCatalog[].inline.providers.*.models.*.rates.inputAudiostringCost per 1M input audio tokens. Falls back to the input rate if unset.
config.modelCatalog[].inline.providers.*.models.*.rates.outputAudiostringCost per 1M output audio tokens. Falls back to the output rate if unset.
config.modelCatalog[].inline.providers.*.models.*.tiers[]objectContext-length pricing tiers that override the base rates.
config.modelCatalog[].inline.providers.*.models.*.tiers[].contextOverintegerContext-token threshold above which this tier’s rates apply.
config.modelCatalog[].inline.providers.*.models.*.tiers[].ratesobjectPricing rates for this tier, overlaid on the base model rates.
config.modelCatalog[].inline.providers.*.models.*.tiers[].rates.inputstringCost per 1M input (prompt) tokens.
config.modelCatalog[].inline.providers.*.models.*.tiers[].rates.outputstringCost per 1M output (completion) tokens.
config.modelCatalog[].inline.providers.*.models.*.tiers[].rates.cacheReadstringCost per 1M tokens read from cache.
config.modelCatalog[].inline.providers.*.models.*.tiers[].rates.cacheWritestringCost per 1M tokens written to cache.
config.modelCatalog[].inline.providers.*.models.*.tiers[].rates.reasoningstringCost per 1M reasoning tokens. Falls back to the output rate if unset.
config.modelCatalog[].inline.providers.*.models.*.tiers[].rates.inputAudiostringCost per 1M input audio tokens. Falls back to the input rate if unset.
config.modelCatalog[].inline.providers.*.models.*.tiers[].rates.outputAudiostringCost per 1M output audio tokens. Falls back to the output rate if unset.
config.databaseobjectPrimary database used by local runtime features.
config.database.urlstringConnection URL for the request log database. A postgres:// or postgresql:// URL uses Postgres; any other value is treated as a SQLite database.
config.database.maxConnectionsintegerMaximum number of connections to open in this database’s connection pool. Defaults to 5.
When the request log and config stores have matching database settings, they share one pool
with this limit.
config.storageobjectControls whether UI-managed configuration is written to the config file or a DB overlay.
config.storage.modeenumPossible values: file, hybrid.
config.caAddressstringAddress of the Certificate Authority used to issue SPIFFE certificates.
config.caAuthTokenstringAuthentication token for communicating with the Certificate Authority.
config.xdsAddressstringAddress of the xDS control plane used for dynamic configuration.
config.xdsAuthTokenstringAuthentication token for communicating with the xDS control plane.
config.namespacestringKubernetes namespace for this gateway instance.
config.gatewaystringName of this gateway. Re
config.additionalTrustDomainsstringComma-separated list of additional SPIFFE trust domains accepted on inbound HBONE
connections. The local trust_domain is always implicitly included.
config.skipValidateTrustDomainbooleanWhen true, skip SPIFFE trust-domain verification on inbound HBONE connections.
config.serviceAccountstringKubernetes service account for this gateway, used in its SPIFFE identity.
config.clusterIdstringIdentifier for the cluster this gateway runs in. Defaults to “Kubernetes”.
config.networkstringNetwork name for this gateway, used for locality-aware routing.
config.adminAddrstringAdmin UI address in the format “ip:port”, “localhost:port”, “unix:/path/to/socket”, or “off”
config.standardAttributesobjectStandard request log attributes populated for database-backed local runtime features.
config.standardAttributes.userstringCEL expression used to populate the agentgateway.user request log attribute.
config.standardAttributes.groupstringCEL expression used to populate the agentgateway.group request log attribute.
config.statsAddrstringStats/metrics server address in the format “ip:port”, “localhost:port”, “unix:/path/to/socket”, or “off”
config.readinessAddrstringReadiness probe server address in the format “ip:port”, “localhost:port”, “unix:/path/to/socket”, or “off”
config.sessionobjectConfiguration for stateful session management
config.session.keystringThe AES-256-GCM session protection key to be used for session tokens.
If not set, sessions will not be encrypted.
For example, generated via openssl rand -hex 32.
`config`configconfig.customFunctions
config.connectionTerminationDeadlinestringMaximum time to wait for connections to close gracefully during shutdown.
config.connectionMinTerminationDeadlinestringMinimum time to allow for graceful connection termination. Defaults to zero.
config.workerThreadsstringNumber of worker threads for the async runtime. Accepts a number or a string such as “auto”.
config.tracingobjectDistributed tracing configuration.
config.tracing.otlpEndpointstringOTLP collector endpoint URL for exporting traces.
config.tracing.headersobjectHTTP headers to include on OTLP trace exports, such as authentication headers.
config.tracing.otlpProtocolenumOTLP transport protocol: grpc or http.
Possible values: grpc, http.
config.tracing.fieldsobjectCustom fields to add to or remove from trace spans.
config.tracing.fields.remove[]stringField names to remove from log entries.
config.tracing.fields.addobjectMap of field name to a CEL expression that computes the value to add to logs.
config.tracing.randomSamplingstringExpression to determine the amount of random sampling.
Random sampling will initiate a new trace span if the incoming request does not have a trace already.
This should evaluate to either a float between 0.0-1.0 (0-100%) or true/false.
This defaults to ‘false’.
config.tracing.clientSamplingstringExpression to determine the amount of client sampling.
Client sampling determines whether to initiate a new trace span if the incoming request does have a trace already.
This should evaluate to either a float between 0.0-1.0 (0-100%) or true/false.
This defaults to ’true'.
config.tracing.pathstringOTLP path. Default is /v1/traces
config.loggingobjectLogging configuration, including filter, level, format, and custom fields.
config.logging.filterstringCEL expression that selects which requests are logged.
config.logging.fieldsobjectCustom fields to add to or remove from log entries.
config.logging.fields.remove[]stringField names to remove from log entries.
config.logging.fields.addobjectMap of field name to a CEL expression that computes the value to add to logs.
config.logging.levelstringLog level: a single level (e.g. info), a comma-separated string of per-module levels (e.g. info,agent_core=trace), or a list of per-module levels (e.g. [info, agent_core=trace]).
config.logging.formatenumLog output format: text or json.
Possible values: text, json, null.
config.logging.databaseobjectLog-store database configuration; enables request logging to a database backend.
config.logging.database.urlstringConnection URL for the request log database. A postgres:// or postgresql:// URL uses Postgres; any other value is treated as a SQLite database.
config.logging.database.maxConnectionsintegerMaximum number of connections to open in this database’s connection pool. Defaults to 5.
When the request log and config stores have matching database settings, they share one pool
with this limit.
config.metricsobjectMetrics configuration, including metric removal and custom fields.
config.metrics.remove[]stringMetric names to exclude from collection.
config.metrics.fieldsobjectCustom fields to add to all metrics.
config.metrics.fields.addobjectMap of field name to a CEL expression that computes the value to add to metrics.
config.backendobjectConfiguration for upstream connections, including keepalives, timeouts, and pooling.
config.backend.keepalivesobjectTCP keepalive configuration for upstream connections.
config.backend.keepalives.enabledbooleanEnable TCP keepalive probes on backend connections. Defaults to true.
config.backend.keepalives.timestringIdle time before the first keepalive probe is sent.
config.backend.keepalives.intervalstringTime between successive keepalive probes.
config.backend.keepalives.retriesintegerNumber of unacknowledged probes before the connection is considered dead.
config.backend.connectTimeoutstringMaximum time to wait when establishing a connection to an upstream. Defaults to 10 seconds.
config.backend.poolIdleTimeoutstringThe maximum duration to keep an idle connection alive.
config.backend.poolMaxSizeintegerThe maximum number of connections allowed in the pool, per hostname. If set, this will limit
the total number of connections kept alive to any given host.
Note: excess connections will still be created, they will just not remain idle.
If unset, there is no limit
config.hboneobjectHBONE (HTTP/2 CONNECT tunnel) protocol configuration.
config.hbone.windowSizeintegerHTTP/2 per-stream flow-control window size in bytes. Defaults to 4 MiB.
config.hbone.connectionWindowSizeintegerHTTP/2 connection-level flow-control window size in bytes. Defaults to 16 MiB.
config.hbone.frameSizeintegerHTTP/2 maximum frame size in bytes. Defaults to 1 MiB.
config.hbone.poolMaxStreamsPerConnintegerMaximum concurrent streams per pooled connection. Defaults to 100.
config.hbone.poolUnusedReleaseTimeoutstringDuration after which unused pooled connections are released.
Was this page helpful?
Agentgateway assistant

Ask me anything about agentgateway configuration, features, or usage.

Note: AI-generated content might contain errors; please verify and test all returned information.

Tip: one topic per conversation gives the best results. Use the + button in the chat header to start a new conversation.

Switching topics? Starting a new conversation improves accuracy.
↑↓ navigate select esc dismiss

What could be improved?

Your feedback helps us improve assistant answers and identify docs gaps we should fix.

Need more help? Join us on Discord: https://discord.gg/y9efgEmppm

Want to use your own agent? Add the Solo MCP server to query our docs directly. Get started here: https://search.solo.io/.