config key.
The gateway watches the config file for changes. When you save an update, it reloads local configuration automatically — no restart required.
File structure
A complete config file has two top-level sections:config— static global settings (optional; see static config)binds— array of port bindings with listeners, routes, and backends
YAML vs JSON
Both formats are supported. Use YAML for human-authored configs — it supports comments and is less verbose. Use JSON when generating configs programmatically.Top-level structure
object[]
Array of port bindings. Each bind defines a port and the listeners attached to it.
Binds and listeners
A bind opens a TCP port. Each bind can have one or more listeners that match traffic by hostname and protocol. Each listener defines a set of routes that map requests to backends.Listener fields
string
Optional name for the listener. Used for identification in logs and metrics.
string
Namespace for the listener resource. Used in multi-tenant and Kubernetes deployments.
string
Hostname this listener matches. Supports wildcards, for example
*.example.com. When not set, the listener matches all hostnames on the port.string
Protocol for this listener. Accepted values:
HTTP, HTTPS. When using HTTPS, provide a tls block.object
TLS configuration. Required when
protocol is HTTPS.object[]
Array of routes for this listener. Routes are evaluated in order; the first match wins.See Routes reference →
Routes
A route matches incoming requests and forwards them to one or more backends. Routes support matching on path, headers, method, and query parameters.Backends
Backends define where traffic is sent. The local config supports several backend types:MCP backend
MCP backend
Routes traffic to one or more MCP servers. Each server is defined as a target with a name and transport (stdio or SSE).
HTTP / host backend
HTTP / host backend
Route to a plain HTTP upstream using a
host shorthand. The gateway resolves this into a full backend definition.A2A backend
A2A backend
Route A2A agent traffic. Mark the route with
a2a: {} to enable A2A processing and telemetry.Hot reload behavior
Agentgateway uses filesystem watching to detect config file changes. When the file is saved:- The new configuration is parsed and validated.
- If validation passes, the runtime configuration is updated atomically.
- Existing in-flight requests complete against the old configuration.
- New requests use the updated configuration immediately.
Static configuration fields (under
config) are not reloaded on file change. Only binds, listeners, routes, backends, and policies are hot-reloaded.Complete examples
- MCP proxy
- A2A proxy
- TLS termination
- Multi-backend
A minimal MCP proxy with CORS enabled for browser-based clients:
Mapping to internal representation
Local configuration translates into an internal representation (IR) shared with XDS. Most fields map directly, but some are transformed for ergonomics:
This translation layer means you can use convenient shorthands in local config that would not be valid in XDS, which expects fully resolved values.