{
  "status": "ok",
  "service": "intertrace-agentgateway",
  "brand": "intertrace",
  "mode": "production",
  "host": "intertrace.fly.dev",
  "modelsCookbook": {
    "source": "https://agentgateway.dev/models/",
    "path": "/v1/models",
    "providers": 45,
    "models": 1052
  },
  "planes": {
    "llm": {
      "path": "/v1/chat/completions",
      "status": "live"
    },
    "models": {
      "path": "/v1/models",
      "status": "live"
    },
    "responses": {
      "path": "/v1/responses",
      "status": "live"
    },
    "embeddings": {
      "path": "/v1/embeddings",
      "status": "live"
    },
    "realtime": {
      "path": "/v1/realtime",
      "status": "live"
    },
    "rerank": {
      "path": "/v1/rerank",
      "status": "live"
    },
    "count_tokens": {
      "path": "/anthropic/v1/messages/count_tokens",
      "status": "live"
    },
    "anthropic": {
      "path": "/anthropic/v1/messages",
      "status": "live"
    },
    "openrouter": {
      "path": "/openrouter/v1/chat/completions",
      "status": "live"
    },
    "cohere": {
      "path": "/cohere/v1/chat/completions",
      "status": "live"
    },
    "mistral": {
      "path": "/mistral/v1/chat/completions",
      "status": "live"
    },
    "groq": {
      "path": "/groq/v1/chat/completions",
      "status": "live"
    },
    "deepseek": {
      "path": "/deepseek/v1/chat/completions",
      "status": "live"
    },
    "togetherai": {
      "path": "/togetherai/v1/chat/completions",
      "status": "live"
    },
    "fireworks": {
      "path": "/fireworks/v1/chat/completions",
      "status": "live"
    },
    "xai": {
      "path": "/xai/v1/chat/completions",
      "status": "live"
    },
    "huggingface": {
      "path": "/huggingface/v1/chat/completions",
      "status": "live"
    },
    "baseten": {
      "path": "/baseten/v1/chat/completions",
      "status": "live"
    },
    "cerebras": {
      "path": "/cerebras/v1/chat/completions",
      "status": "live"
    },
    "deepinfra": {
      "path": "/deepinfra/v1/chat/completions",
      "status": "live"
    },
    "perplexity": {
      "path": "/perplexity/v1/chat/completions",
      "status": "live"
    },
    "sambanova": {
      "path": "/sambanova/v1/chat/completions",
      "status": "live"
    },
    "nvidia-nim": {
      "path": "/nvidia-nim/v1/chat/completions",
      "status": "live"
    },
    "moonshot": {
      "path": "/moonshot/v1/chat/completions",
      "status": "live"
    },
    "novita": {
      "path": "/novita/v1/chat/completions",
      "status": "live"
    },
    "nebius": {
      "path": "/nebius/v1/chat/completions",
      "status": "live"
    },
    "lambda": {
      "path": "/lambda/v1/chat/completions",
      "status": "live"
    },
    "hyperbolic": {
      "path": "/hyperbolic/v1/chat/completions",
      "status": "live"
    },
    "ai21": {
      "path": "/ai21/v1/chat/completions",
      "status": "live"
    },
    "github-models": {
      "path": "/github-models/v1/chat/completions",
      "status": "live"
    },
    "scaleway": {
      "path": "/scaleway/v1/chat/completions",
      "status": "live"
    },
    "dashscope": {
      "path": "/dashscope/v1/chat/completions",
      "status": "live"
    },
    "zhipu": {
      "path": "/zhipu/v1/chat/completions",
      "status": "live"
    },
    "ollama": {
      "path": "/ollama/v1/chat/completions",
      "status": "env",
      "hint": "Set INTERTRACE_OLLAMA_BASE_URL on Fly"
    },
    "vllm": {
      "path": "/vllm/v1/chat/completions",
      "status": "env",
      "hint": "Set INTERTRACE_VLLM_BASE_URL on Fly"
    },
    "lmstudio": {
      "path": "/lmstudio/v1/chat/completions",
      "status": "env",
      "hint": "Set INTERTRACE_LMSTUDIO_BASE_URL on Fly"
    },
    "llamacpp": {
      "path": "/llamacpp/v1/chat/completions",
      "status": "env",
      "hint": "Set INTERTRACE_LLAMACPP_BASE_URL on Fly"
    },
    "triton": {
      "path": "/triton/v1/chat/completions",
      "status": "env",
      "hint": "Set INTERTRACE_TRITON_BASE_URL on Fly"
    },
    "custom-llm": {
      "path": "/custom-llm/v1/chat/completions",
      "status": "env",
      "hint": "Set INTERTRACE_CUSTOM_LLM_BASE_URL on Fly"
    },
    "mcp": {
      "path": "/mcp",
      "status": "live"
    },
    "inference": {
      "path": "/inference/v1/chat/completions",
      "status": "live",
      "pools": "Set INTERTRACE_INFERENCE_POOLS_JSON for multi-pool weighted backends; sticky via x-intertrace-inference-pool"
    },
    "service": {
      "path": "/service/api/ping",
      "status": "live"
    },
    "a2a": {
      "path": "/a2a/ping",
      "discovery": "/a2a/_discovery",
      "status": "live"
    }
  },
  "apiSurface": [
    "/v1/chat/completions",
    "/v1/models",
    "/v1/responses",
    "/v1/embeddings",
    "/v1/realtime",
    "/v1/rerank",
    "/anthropic/v1/messages/count_tokens"
  ],
  "observability": {
    "metrics": "/metrics",
    "admin": "/admin/",
    "accessLogFields": [
      "intertrace.org_id",
      "intertrace.asset_id",
      "intertrace.key_source",
      "intertrace.provider",
      "intertrace.edge"
    ]
  },
  "security": {
    "extauthz": "local Intertrace Go enforcer gRPC (fail-closed)",
    "promptGuard": "local Intertrace Go enforcer (fail-closed)",
    "mcpGuardrails": "local Intertrace ExtMCP gRPC (fail-closed)",
    "tenancy": "key-derived from client Bearer runtime API key (itr_rt_*)",
    "auth": "Authorization Bearer required; missing key → 403",
    "byok": "vault → platform_fallback; Anthropic via x-api-key passthrough; cookbook /v1 uses OpenRouter when native OpenAI is unusable or billed out (not an OpenAI credits issue)",
    "authOverlays": {
      "tenancy": "key-derived from client Bearer runtime API key (itr_rt_*) — ExtAuthz SSOT",
      "overlays": {
        "jwt": {
          "status": "off",
          "hint": "Optional user JWT on X-Intertrace-User-Jwt",
          "env": [
            "INTERTRACE_JWT_ISSUER",
            "INTERTRACE_JWT_JWKS_URL"
          ]
        },
        "oidc": {
          "status": "off",
          "hint": "Browser OIDC on dedicated bind (not /v1 API)",
          "env": [
            "INTERTRACE_OIDC_ISSUER",
            "INTERTRACE_OIDC_CLIENT_ID",
            "INTERTRACE_OIDC_CLIENT_SECRET",
            "INTERTRACE_OIDC_REDIRECT_URI"
          ]
        },
        "basic": {
          "status": "off",
          "hint": "htpasswd Basic on X-Intertrace-Basic-Authorization",
          "env": [
            "INTERTRACE_BASIC_AUTH_HTPASSWD_FILE",
            "INTERTRACE_BASIC_AUTH_HTPASSWD"
          ]
        },
        "oauth2_proxy": {
          "status": "off",
          "hint": "/oauth2 → oauth2-proxy; product ExtAuthz unchanged",
          "env": [
            "INTERTRACE_OAUTH2_PROXY_HOST"
          ]
        },
        "tailscale": {
          "status": "fragment_only",
          "hint": "Private compose Tailscale whois (do not replace ExtAuthz on Fly)",
          "env": [
            "INTERTRACE_TAILSCALE_AUTH",
            "INTERTRACE_TAILSCALE_AUTH_SOCKET"
          ]
        },
        "token_exchange": {
          "status": "off",
          "hint": "RFC 8693 / Entra OBO via Service plane proxy",
          "env": [
            "INTERTRACE_OAUTH_EXCHANGE_HOST",
            "INTERTRACE_OAUTH_EXCHANGE_CLIENT_ID",
            "INTERTRACE_OAUTH_EXCHANGE_CLIENT_SECRET"
          ]
        }
      }
    }
  },
  "upstreams": {
    "llm": "OpenRouter (cookbook /v1 fallback)",
    "inference": "OpenAI default; optional multi-pool via INTERTRACE_INFERENCE_POOLS_JSON (Fly InferencePool analogue)",
    "a2a": "per-tenant runtime_a2a_upstreams (real A2A) + optional OpenAI fallback",
    "service": "per-tenant runtime_service_upstreams + builtins",
    "mcp": "intertrace-edge (tools/list|call)"
  }
}