Skip to content

Local undeploy can leave agentgateway running with empty HTTP routes #394

@timflannagan

Description

@timflannagan

When the local runtime is left with only the agent_gateway container and no deployed agents or MCP targets, agentregistry can write an agent-gateway.yaml config file with an HTTP listener but no routes.

Noticed while running the e2e suite locally:

$ docker ps -a
CONTAINER ID   IMAGE                                                                                 COMMAND                  CREATED          STATUS                     PORTS                                           NAMES
f3c1afef3d92   localhost:5001/agentregistry-dev/agentregistry/arctl-agentgateway:v0.3.2-9-gf5f79d1   "/usr/local/bin/agen…"   6 seconds ago    Exited (1) 5 seconds ago                                                   agentregistry_runtime-agent_gateway-1
...

And the container logs:

Details
docker logs f3c1afef3d92
2026-03-20T01:45:07.550513Z     info    agentgateway    version: {
  "version": "0.10.5",
  "git_revision": "dc4d4fd9715fb6623f9050e59353bb5cea0361b0",
  "rust_version": "1.90.0",
  "build_profile": "release",
  "build_target": "aarch64-unknown-linux-gnu"
}
2026-03-20T01:45:07.550780Z     info    agentgateway    running with config: network: ''
terminationMaxDeadline: 5s
terminationMinDeadline: 0s
numWorkerThreads: 8
adminAddr:
  Localhost:
  - true
  - 15000
statsAddr:
  SocketAddr: '[::]:15020'
readinessAddr:
  SocketAddr: '[::]:15021'
selfAddr: null
hbone:
  windowSize: 4194304
  connectionWindowSize: 16777216
  frameSize: 1048576
  poolMaxStreamsPerConn: 100
  poolUnusedReleaseTimeout:
    secs: 300
    nanos: 0
xds:
  address: null
  auth: none
  caCert: Default
  namespace: ''
  gateway: ''
  localConfig: /config/agent-gateway.yaml
ca: null
tracing:
  endpoint: null
  headers: {}
  protocol: grpc
  fields:
    remove: []
    add: {}
  random_sampling: null
  client_sampling: null
logging:
  filter: null
  fields:
    remove: []
    add: {}
  metric_fields:
    add: {}
  excluded_metrics: []
  level: ''
  format: text
dns:
  resolverCfg:
    domain: null
    search:
    - hsd1.ma.comcast.net
    name_servers:
    - socket_addr: 127.0.0.11:53
      protocol: udp
      tls_dns_name: null
      http_endpoint: null
      trust_negative_responses: false
      bind_addr: null
    - socket_addr: 127.0.0.11:53
      protocol: tcp
      tls_dns_name: null
      http_endpoint: null
      trust_negative_responses: false
      bind_addr: null
  resolverOpts:
    ndots: 0
    timeout:
      secs: 5
      nanos: 0
    attempts: 2
    check_names: true
    edns0: true
    validate: false
    ip_strategy: Ipv4thenIpv6
    cache_size: 32
    use_hosts_file: Auto
    positive_min_ttl: null
    negative_min_ttl: null
    positive_max_ttl: null
    negative_max_ttl: null
    num_concurrent_reqs: 2
    preserve_intermediates: true
    try_tcp_on_error: false
    server_ordering_strategy: QueryStatistics
    recursion_desired: true
    avoid_local_udp_ports: []
    os_port_selection: false
    case_randomization: false
    trust_anchor: null
proxyMetadata:
  instanceIp: 1.1.1.1
  podName: ''
  podNamespace: ''
  nodeName: ''
  role: '~'
  nodeId: agentgateway~1.1.1.1~.~.svc.cluster.local
threadingMode: multithreaded
backend:
  keepalives:
    enabled: true
    time: 3m0s
    interval: 3m0s
    retries: 9
  connectTimeout: 10s
  poolIdleTimeout: 1m30s
  poolMaxSize: null
listener:
  maxBufferSize: 2097152
  tlsHandshakeTimeout: 15s
  http1MaxHeaders: null
  http1IdleTimeout: 10m0s
  http2WindowSize: null
  http2ConnectionWindowSize: null
  http2FrameSize: null
  http2KeepaliveInterval: null
  http2KeepaliveTimeout: null

2026-03-20T01:45:07.551323Z     info    management::hyper_helpers       listener established    address=[::]:15021 component="readiness"
2026-03-20T01:45:07.551539Z     info    state_manager   Watching config file: /config/agent-gateway.yaml
2026-03-20T01:45:07.551888Z     info    agent_core::readiness   Task 'agentgateway' complete (1.554587ms), still awaiting 1 tasks
2026-03-20T01:45:07.551897Z     info    agent_core::readiness   Task 'state manager' complete (1.564254ms), marking server ready
Error: protocol HTTP requires 'routes'

The relevant log message:

Error: protocol HTTP requires 'routes'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions