mTLS
Mutual TLS (mTLS) extends TLS with client certificate authentication: AI Gateway verifies the connecting agent's certificate, in addition to the agent verifying AI Gateway's certificate. This suits deployments where every calling agent or service is provisioned with its own client certificate, instead of, or in addition to, an OAuth guard flow.
Requiring Client Certificates
Add a trust store containing the certificate authority for agent certificates to the same filesystem vault used for AI Gateway's own key, then reference the trusted certificate alias from the tls server binding and set options.mutual to required:
vaults:
server_vault:
type: filesystem
options:
keys:
store: ${{env.KEYSTORE_PATH}}
type: ${{env.KEYSTORE_TYPE}}
password: ${{env.KEYSTORE_PASSWORD}}
trust:
store: ${{env.TRUSTORE_PATH}}
type: ${{env.TRUSTORE_TYPE}}
password: ${{env.TRUSTORE_PASSWORD}}
bindings:
north_tcp_server:
type: tcp
kind: server
options:
host: 0.0.0.0
port: 8443
exit: north_tls_server
north_tls_server:
type: tls
kind: server
vault: server_vault
options:
keys:
- ${{env.SERVER_CERT_ALIAS}}
trust:
- ${{env.CA_CERT_ALIAS}}
sni:
- ${{env.SERVER_HOSTNAME}}
mutual: required
exit: north_http_server
north_http_server:
type: http
kind: server
options:
access-control:
policy: cross-origin
routes:
- when:
- headers:
":path": /mcp
exit: north_mcp_server
north_mcp_server:
type: mcp
kind: server
exit: north_mcp_proxyWith mutual: required, AI Gateway rejects the TLS handshake for any agent that does not present a certificate signed by a trusted authority, before the connection reaches the http server or mcp server bindings.
See the tls server binding reference for the full set of options fields, including options.mutual.

