Http Passthrough

The strict-HTTP acceptance test for pinned Codex CLI for GitHub issue #870 drives the proxy over POST /v1/responses and any other Responses API paths the client may probe

Category: Setup-dependent integration
Task: The strict-HTTP acceptance test for pinned Codex CLI for GitHub issue #870 drives the proxy over POST /v1/responses and any other Responses API paths the client may probe

Prerequisites: The external service, credentials, or certificates referenced by this configuration.

Run it: Use ghcr.io/praxis-proxy/ai:0.5.0 and follow the container quickstart to mount and start the configuration.

This configuration comes from the selected release. The example has not been run here; external services are not bundled.

Download the source file.

# HTTP-only Responses API passthrough
#
# The strict-HTTP acceptance test for pinned Codex CLI
# for GitHub issue #870 drives the proxy over
# `POST /v1/responses` and any other Responses API paths the
# client may probe. This pipeline does the minimum work required
# to classify and route the traffic:
#
#   1. `openai_responses_format` classifies the request and
#      promotes `x-praxis-ai-format: openai_responses` for the
#      router. `on_invalid: continue` lets non-Responses traffic
#      reach the router without being rejected.
#   2. The router sends every `/v1/responses*` request to the
#      `inference-backend` cluster.
#   3. The load balancer points at the test backend (and any
#      additional inference endpoints the test wires up).
#
# No state, persistence, or WebSocket is enabled. WebSocket upgrades
# fail at the listener because the test config does not register
# a WebSocket-aware filter chain. The acceptance test asserts that
# the pinned Codex client never attempts a WebSocket upgrade when
# configured with `wire_api = "responses"` and no `supports_websockets`
# flag.
#
# Example request:
#
#   curl -N http://localhost:8080/v1/responses \
#     -H "Content-Type: application/json" \
#     -H "Authorization: Bearer token" \
#     -d '{"model":"gpt-4.1","input":"Hello","stream":true}'
#
# Build:

listeners:
  - name: ai-gateway
    address: "127.0.0.1:8080"
    filter_chains: [responses-pipeline]

filter_chains:
  - name: responses-pipeline
    filters:
      - filter: openai_responses_format
        on_invalid: continue
        headers:
          format: x-praxis-ai-format
          model: x-praxis-ai-model
          stream: x-praxis-ai-stream
          mode: x-praxis-responses-mode

      - filter: router
        routes:
          - path_prefix: "/v1/responses"
            cluster: "inference-backend"

      - filter: load_balancer
        clusters:
          - name: "inference-backend"
            endpoints:
              - "127.0.0.1:3001"

insecure_options:
  allow_private_endpoints: true # example proxies to local backends