# Gateway Configuration Example server: bindAddr: ":8443" readTimeout: 30s writeTimeout: 60s idleTimeout: 120s shutdownTimeout: 30s maxHeaderBytes: 1048576 enableHttp2: true tls: enabled: false certFile: "/certs/tls.crt" keyFile: "/certs/tls.key" minVersion: "1.2" rateLimit: enabled: true requestsPerSec: 100 burstSize: 200 perTenant: true perUser: true redisEnabled: true cleanupInterval: 10m cors: allowedOrigins: - "https://app.rag-agent.io" - "https://admin.rag-agent.io" - "http://localhost:3000" allowedMethods: - "GET" - "POST" - "PUT" - "DELETE" - "OPTIONS" allowedHeaders: - "Authorization" - "Content-Type" - "X-Request-ID" - "X-Client-Version" allowCredentials: true maxAge: 3600 auth: jwtSecret: "${JWT_SECRET}" jwtIssuer: "rag-agent" jwtAudience: "api" tokenDuration: 24h opaEnabled: false opaAddr: "http://opa:8181" opaPolicy: "authz/allow" skipPaths: - "/admin/health" - "/admin/metrics" cache: enabled: true redisAddr: "redis:6379" redisPassword: "" redisDb: 0 defaultTtl: 5m maxEntrySize: 1048576 keyPrefix: "rag:gateway:" serviceDiscovery: enabled: false consulAddr: "consul:8500" consulToken: "" serviceRefreshInterval: 30s agentServiceAddr: "agent-server:9090" retrieverServiceAddr: "retriever-server:9091" generatorServiceAddr: "generator-server:9092" memoryServiceAddr: "memory-server:9093" circuitBreaker: maxRequests: 5 interval: 60s timeout: 30s failureThreshold: 3 observability: metricsEnabled: true metricsPath: "/admin/metrics" tracingEnabled: true tracingEndpoint: "jaeger:4317" serviceName: "api-gateway" auditLogEnabled: true websocket: readBufferSize: 1024 writeBufferSize: 1024 pingInterval: 30s pongWait: 60s writeWait: 10s maxMessageSize: 524288