{ "$schema": "https://json-schema.org/draft/2019-09/schema", "title": "Bifrost Helm Chart Values", "description": "Schema for Bifrost Helm chart values.yaml", "type": "object", "properties": { "replicaCount": { "type": "integer", "minimum": 1, "description": "Number of Bifrost replicas" }, "image": { "type": "object", "properties": { "repository": { "type": "string", "description": "Container image repository" }, "pullPolicy": { "type": "string", "enum": [ "Always", "IfNotPresent", "Never" ], "description": "Image pull policy" }, "tag": { "type": "string", "description": "Image tag (required - validated at template render time)" } } }, "imagePullSecrets": { "type": "array", "items": { "type": "object" } }, "nameOverride": { "type": "string" }, "fullnameOverride": { "type": "string" }, "serviceAccount": { "type": "object", "properties": { "create": { "type": "boolean" }, "automount": { "type": "boolean" }, "annotations": { "type": "object" }, "name": { "type": "string" } } }, "deploymentAnnotations": { "type": "object" }, "deploymentLabels": { "type": "object" }, "podAnnotations": { "type": "object" }, "podLabels": { "type": "object" }, "podSecurityContext": { "type": "object" }, "securityContext": { "type": "object" }, "service": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "ClusterIP", "NodePort", "LoadBalancer" ] }, "port": { "type": "integer", "minimum": 1, "maximum": 65535 }, "annotations": { "type": "object" } } }, "ingress": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "className": { "type": "string" }, "annotations": { "type": "object" }, "hosts": { "type": "array", "items": { "type": "object", "properties": { "host": { "type": "string" }, "paths": { "type": "array", "items": { "type": "object", "properties": { "path": { "type": "string" }, "pathType": { "type": "string", "enum": [ "Prefix", "Exact", "ImplementationSpecific" ] } } } } } } }, "tls": { "type": "array" } } }, "resources": { "type": "object", "properties": { "limits": { "type": "object" }, "requests": { "type": "object" } } }, "livenessProbe": { "type": "object" }, "readinessProbe": { "type": "object" }, "autoscaling": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "minReplicas": { "type": "integer", "minimum": 1 }, "maxReplicas": { "type": "integer", "minimum": 1 }, "targetCPUUtilizationPercentage": { "type": "integer", "minimum": 1, "maximum": 100 }, "targetMemoryUtilizationPercentage": { "type": "integer", "minimum": 1, "maximum": 100 } } }, "volumes": { "type": "array" }, "volumeMounts": { "type": "array" }, "nodeSelector": { "type": "object" }, "tolerations": { "type": "array" }, "affinity": { "type": "object" }, "bifrost": { "type": "object", "description": "Bifrost application configuration", "properties": { "appDir": { "type": "string", "description": "Application data directory" }, "port": { "type": "integer", "minimum": 1, "maximum": 65535 }, "host": { "type": "string" }, "logLevel": { "type": "string", "enum": [ "debug", "info", "warn", "error" ] }, "logStyle": { "type": "string", "enum": [ "json", "text" ] }, "encryptionKey": { "type": "string", "description": "Encryption key for sensitive data" }, "authConfig": { "$ref": "#/$defs/authConfig" }, "client": { "type": "object", "properties": { "dropExcessRequests": { "type": "boolean" }, "initialPoolSize": { "type": "integer", "minimum": 1 }, "allowedOrigins": { "type": "array", "description": "CORS allowed origins (supports \"*\" or URI strings)", "items": { "oneOf": [ { "type": "string", "const": "*" }, { "type": "string", "format": "uri", "not": { "const": "*" } } ] } }, "enableLogging": { "type": "boolean" }, "disableContentLogging": { "type": "boolean" }, "disableDbPingsInHealth": { "type": "boolean" }, "logRetentionDays": { "type": "integer", "minimum": 1 }, "enforceGovernanceHeader": { "type": "boolean" }, "allowDirectKeys": { "type": "boolean" }, "maxRequestBodySizeMb": { "type": "integer", "minimum": 1 }, "enableLitellmFallbacks": { "type": "boolean" }, "prometheusLabels": { "type": "array", "items": { "type": "string" } }, "headerFilterConfig": { "type": "object", "properties": { "allowlist": { "type": "array", "items": { "type": "string" } }, "denylist": { "type": "array", "items": { "type": "string" } } } }, "enforceAuthOnInference": { "type": "boolean", "description": "Require auth (VK, API key, or user token) on inference endpoints" }, "enforceSCIMAuth": { "type": "boolean", "description": "Deprecated: use enforceAuthOnInference" }, "allowedHeaders": { "type": "array", "items": { "type": "string" }, "description": "Additional allowed headers for CORS and WebSocket" }, "mcpAgentDepth": { "type": "integer", "minimum": 1, "description": "Maximum depth for MCP agent mode tool execution" }, "mcpToolExecutionTimeout": { "type": "integer", "minimum": 1, "description": "Timeout for individual MCP tool execution in seconds" }, "mcpCodeModeBindingLevel": { "type": "string", "enum": ["server", "tool"], "description": "Code mode binding level for MCP tools" }, "mcpToolSyncInterval": { "type": "integer", "minimum": 0, "description": "Global tool sync interval in minutes (0 = disabled)" }, "asyncJobResultTTL": { "type": "integer", "minimum": 1, "description": "Default TTL for async job results in seconds" }, "requiredHeaders": { "type": "array", "items": { "type": "string" }, "description": "Headers that must be present on every request" }, "loggingHeaders": { "type": "array", "items": { "type": "string" }, "description": "Headers to capture in log metadata" }, "hideDeletedVirtualKeysInFilters": { "type": "boolean", "description": "When true, deleted virtual keys are omitted from logs and MCP logs filter data" } }, "additionalProperties": false }, "framework": { "type": "object", "properties": { "pricing": { "type": "object", "properties": { "pricingUrl": { "type": "string", "description": "Custom pricing URL (optional, can be empty)" }, "pricingSyncInterval": { "type": "integer", "minimum": 3600 } } } } }, "providers": { "type": "object", "description": "AI provider configurations", "additionalProperties": { "$ref": "#/$defs/provider" } }, "providerSecrets": { "type": "object", "additionalProperties": { "type": "object", "properties": { "existingSecret": { "type": "string" }, "key": { "type": "string" }, "envVar": { "type": "string" } } } }, "mcp": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "clientConfigs": { "type": "array", "items": { "$ref": "#/$defs/mcpClientConfig" } }, "toolManagerConfig": { "type": "object", "properties": { "toolExecutionTimeout": { "type": "integer", "minimum": 1 }, "maxAgentDepth": { "type": "integer", "minimum": 1 }, "codeModeBindingLevel": { "type": "string", "enum": ["server", "tool"], "description": "How tools are exposed in VFS for code execution" } } }, "toolSyncInterval": { "type": "string", "description": "Global default interval for syncing tools from MCP servers (Go duration, e.g. '10m', '1h')" } }, "additionalProperties": false }, "plugins": { "type": "object", "properties": { "telemetry": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "config": { "type": "object", "properties": { "custom_labels": { "type": "array", "items": { "type": "string" }, "description": "Custom labels to add to all metrics" }, "push_gateway": { "type": "object", "description": "Configuration for pushing metrics to a Prometheus Push Gateway for multi-node cluster deployments", "properties": { "enabled": { "type": "boolean", "description": "Whether to enable pushing metrics to the Push Gateway", "default": false }, "push_gateway_url": { "type": "string", "description": "URL of the Prometheus Push Gateway (e.g., http://pushgateway:9091)", "format": "uri" }, "job_name": { "type": "string", "description": "Job label for pushed metrics", "default": "bifrost" }, "instance_id": { "type": "string", "description": "Instance identifier for grouping metrics. If not set, hostname is used automatically." }, "push_interval": { "type": "integer", "description": "How often to push metrics in seconds", "default": 15, "minimum": 1, "maximum": 300 }, "basic_auth": { "type": "object", "description": "Basic authentication credentials for the Push Gateway", "properties": { "username": { "type": "string", "description": "Username for basic authentication" }, "password": { "type": "string", "description": "Password for basic authentication" } }, "required": ["username", "password"] } }, "required": ["push_gateway_url"] } } } } }, "logging": { "$ref": "#/$defs/pluginBase" }, "governance": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "config": { "type": "object", "properties": { "is_vk_mandatory": { "type": "boolean" }, "required_headers": { "type": "array", "items": { "type": "string" }, "description": "Headers that must be present in requests" }, "is_enterprise": { "type": "boolean", "description": "Enable enterprise mode features" } } } } }, "maxim": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "config": { "type": "object", "properties": { "api_key": { "type": "string" }, "log_repo_id": { "type": "string" } } }, "secretRef": { "type": "object", "properties": { "name": { "type": "string" }, "key": { "type": "string" } } } }, "if": { "properties": { "enabled": { "const": true } } }, "then": { "anyOf": [ { "properties": { "config": { "required": [ "api_key" ] } } }, { "properties": { "secretRef": { "required": [ "name" ] } } } ] } }, "semanticCache": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "config": { "type": "object", "properties": { "provider": { "type": "string", "enum": [ "openai", "anthropic", "gemini", "bedrock", "azure", "cohere", "mistral", "groq", "ollama", "openrouter", "vertex", "cerebras", "parasail", "perplexity", "sgl", "huggingface" ] }, "keys": { "type": "array", "items": { "type": "string" }, "description": "API keys for embedding provider (required for semantic caching, not needed for direct caching with dimension: 1)" }, "embedding_model": { "type": "string" }, "dimension": { "type": "integer", "minimum": 1 }, "threshold": { "type": "number", "minimum": 0, "maximum": 1 }, "ttl": { "description": "Time-to-live for cached responses (supports duration strings like '5m', '1h' or seconds as number, default: 5min)", "oneOf": [ { "type": "string", "pattern": "^[0-9]+(ns|us|µs|ms|s|m|h)$" }, { "type": "integer", "minimum": 0 } ] }, "conversation_history_threshold": { "type": "integer", "minimum": 0 }, "cache_by_model": { "type": "boolean" }, "cache_by_provider": { "type": "boolean" }, "exclude_system_prompt": { "type": "boolean" }, "cleanup_on_shutdown": { "type": "boolean" }, "vector_store_namespace": { "type": "string" }, "default_cache_key": { "type": "string", "description": "Default cache key for semantic cache lookups" } } } }, "if": { "properties": { "enabled": { "const": true } } }, "then": { "properties": { "config": { "required": [ "dimension", "keys", "provider" ] } } } }, "otel": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "config": { "type": "object", "properties": { "service_name": { "type": "string", "description": "Service name to be used for tracing", "default": "bifrost" }, "collector_url": { "type": "string", "description": "URL of the OpenTelemetry collector" }, "trace_type": { "type": "string", "enum": [ "otel" ], "description": "Type of trace to use for the OTEL collector" }, "protocol": { "type": "string", "enum": [ "http", "grpc" ], "description": "Protocol to use for the OTEL collector" }, "metrics_enabled": { "type": "boolean", "description": "Enable push-based metrics export via OTLP. Recommended for multi-node cluster deployments.", "default": false }, "metrics_endpoint": { "type": "string", "description": "OTLP metrics endpoint URL (e.g., http://otel-collector:4318/v1/metrics for HTTP or otel-collector:4317 for gRPC)" }, "metrics_push_interval": { "type": "integer", "description": "Metrics push interval in seconds", "default": 15, "minimum": 1, "maximum": 300 }, "headers": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Custom headers for the collector (supports env.VAR_NAME prefix)" }, "tls_ca_cert": { "type": "string", "description": "Path to TLS CA certificate file" }, "insecure": { "type": "boolean", "description": "Skip TLS verification (ignored if tls_ca_cert is set)" } }, "if": { "properties": { "metrics_enabled": { "const": true } }, "required": ["metrics_enabled"] }, "then": { "required": ["metrics_endpoint"] } } }, "if": { "properties": { "enabled": { "const": true } } }, "then": { "properties": { "config": { "required": [ "collector_url", "trace_type", "protocol" ] } } } }, "datadog": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "config": { "type": "object", "properties": { "service_name": { "type": "string" }, "agent_addr": { "type": "string" }, "env": { "type": "string" }, "version": { "type": "string" }, "custom_tags": { "type": "object" }, "enable_traces": { "type": "boolean" } } } } }, "custom": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "enabled": { "type": "boolean" }, "path": { "type": "string" }, "version": { "type": "integer", "minimum": 1 }, "config": { "type": "object" }, "placement": { "type": "string", "enum": ["pre_builtin", "post_builtin"], "default": "post_builtin", "description": "Plugin execution placement relative to built-in plugins" }, "order": { "type": "integer", "default": 0, "description": "Position within placement group. Lower = earlier execution" } }, "required": [ "name", "enabled" ] } } } }, "governance": { "type": "object", "properties": { "budgets": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "max_limit": { "type": "number" }, "reset_duration": { "type": "string" }, "current_usage": { "type": "number" }, "last_reset": { "type": "string", "format": "date-time" } }, "required": [ "id", "max_limit", "reset_duration" ] } }, "rateLimits": { "type": "array", "description": "Rate limit configurations", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Rate limit ID" }, "token_max_limit": { "type": "integer", "description": "Maximum tokens allowed" }, "token_reset_duration": { "type": "string", "description": "Token reset duration (e.g., '30s', '5m', '1h', '1d', '1w', '1M', '1Y')" }, "token_current_usage": { "type": "integer", "description": "Current token usage", "default": 0 }, "token_last_reset": { "type": "string", "format": "date-time", "description": "Last time token counter was reset" }, "request_max_limit": { "type": "integer", "description": "Maximum requests allowed" }, "request_reset_duration": { "type": "string", "description": "Request reset duration (e.g., '30s', '5m', '1h', '1d', '1w', '1M', '1Y')" }, "request_current_usage": { "type": "integer", "description": "Current request usage", "default": 0 }, "request_last_reset": { "type": "string", "format": "date-time", "description": "Last time request counter was reset" } }, "required": [ "id" ], "additionalProperties": false } }, "customers": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "budget_id": { "type": "string" }, "rate_limit_id": { "type": "string" } }, "required": [ "id", "name" ] } }, "teams": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "customer_id": { "type": "string" }, "budget_id": { "type": "string" }, "rate_limit_id": { "type": "string" }, "profile": { "type": "object" }, "config": { "type": "object" }, "claims": { "type": "object" } }, "required": [ "id", "name" ] } }, "virtualKeys": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "description": { "type": "string" }, "value": { "type": "string" }, "is_active": { "type": "boolean" }, "team_id": { "type": "string" }, "customer_id": { "type": "string" }, "budget_id": { "type": "string" }, "rate_limit_id": { "type": "string" }, "provider_configs": { "type": "array", "items": { "$ref": "#/$defs/virtualKeyProviderConfig" } }, "mcp_configs": { "type": "array", "items": { "type": "object", "properties": { "mcp_client_id": { "type": "integer" }, "tools_to_execute": { "type": "array", "items": { "type": "string" } } }, "required": [ "mcp_client_id" ] } } }, "required": [ "id", "name" ] } }, "routingRules": { "type": "array", "description": "Routing rules for dynamic provider/model selection based on CEL expressions", "items": { "type": "object", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "description": { "type": "string" }, "enabled": { "type": "boolean", "default": true }, "cel_expression": { "type": "string" }, "targets": { "type": "array", "minItems": 1, "description": "Weighted routing targets. Weights must sum to 1.", "items": { "type": "object", "properties": { "provider": { "type": "string", "description": "Target provider name" }, "model": { "type": "string", "description": "Target model name" }, "key_id": { "type": "string", "description": "Optional API key UUID to pin for this target" }, "weight": { "type": "number", "description": "Probability weight for this target (must be > 0, all weights must sum to 1)", "exclusiveMinimum": 0, "maximum": 1 } }, "required": ["weight"] } }, "provider": { "type": "string" }, "model": { "type": "string" }, "fallbacks": { "type": "array", "items": { "type": "string" } }, "scope": { "type": "string", "enum": ["global", "team", "customer", "virtual_key"], "default": "global" }, "scope_id": { "type": ["string", "null"] }, "priority": { "type": "integer", "default": 0 }, "query": { "type": "object", "additionalProperties": true } }, "required": ["id", "name", "targets"] } }, "authConfig": { "$ref": "#/$defs/authConfig" }, "modelConfigs": { "type": "array", "description": "Per-model rate limit and budget configurations", "items": { "type": "object", "properties": { "id": { "type": "string" }, "model_name": { "type": "string" }, "provider": { "type": "string" }, "budget_id": { "type": "string" }, "rate_limit_id": { "type": "string" } }, "required": ["id", "model_name"] } }, "providers": { "type": "array", "description": "Provider-level governance configurations", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Provider name" }, "budget_id": { "type": "string" }, "rate_limit_id": { "type": "string" }, "send_back_raw_request": { "type": "boolean" }, "send_back_raw_response": { "type": "boolean" }, "store_raw_request_response": { "type": "boolean" } }, "required": ["name"] } } }, "additionalProperties": false }, "cluster": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "peers": { "type": "array", "items": { "type": "string" } }, "region": { "type": "string", "description": "Region for cluster deployment" }, "gossip": { "type": "object", "properties": { "port": { "type": "integer", "minimum": 1, "maximum": 65535 }, "config": { "type": "object", "properties": { "timeoutSeconds": { "type": "integer", "minimum": 1 }, "successThreshold": { "type": "integer", "minimum": 1 }, "failureThreshold": { "type": "integer", "minimum": 1 } }, "required": [ "timeoutSeconds", "successThreshold", "failureThreshold" ] } }, "required": [ "port", "config" ] }, "discovery": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "type": { "type": "string", "enum": [ "", "kubernetes", "dns", "udp", "consul", "etcd", "mdns" ], "description": "Discovery type (empty when not configured)" }, "allowedAddressSpace": { "type": "array", "items": { "type": "string" } }, "k8sNamespace": { "type": "string" }, "k8sLabelSelector": { "type": "string" }, "dnsNames": { "type": "array", "items": { "type": "string" } }, "udpBroadcastPort": { "type": "integer", "minimum": 0, "maximum": 65535, "description": "UDP broadcast port (0 means not configured)" }, "consulAddress": { "type": "string" }, "etcdEndpoints": { "type": "array", "items": { "type": "string" } }, "mdnsService": { "type": "string" } }, "if": { "properties": { "enabled": { "const": true } } }, "then": { "required": [ "type" ] } } }, "if": { "properties": { "enabled": { "const": true } } }, "then": { "required": [ "gossip" ] } }, "saml": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "provider": { "type": "string", "enum": [ "", "okta", "entra" ], "description": "SAML provider type (empty when not configured)" }, "config": { "type": "object" } }, "allOf": [ { "if": { "properties": { "enabled": { "const": true }, "provider": { "const": "okta" } }, "required": [ "enabled", "provider" ] }, "then": { "properties": { "config": { "type": "object", "properties": { "issuerUrl": { "type": "string", "format": "uri" }, "clientId": { "type": "string" }, "clientSecret": { "type": "string" }, "audience": { "type": "string" }, "userIdField": { "type": "string" }, "teamIdsField": { "type": "string" }, "rolesField": { "type": "string" } }, "required": [ "issuerUrl", "clientId" ] } } } }, { "if": { "properties": { "enabled": { "const": true }, "provider": { "const": "entra" } }, "required": [ "enabled", "provider" ] }, "then": { "properties": { "config": { "type": "object", "properties": { "tenantId": { "type": "string" }, "clientId": { "type": "string" }, "clientSecret": { "type": "string" }, "cloud": { "type": "string", "enum": ["commercial", "gcc-high", "dod"] }, "audience": { "type": "string" }, "appIdUri": { "type": "string", "format": "uri" }, "userIdField": { "type": "string" }, "teamIdsField": { "type": "string" }, "rolesField": { "type": "string" } }, "required": [ "tenantId", "clientId" ] } } } } ] }, "loadBalancer": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "trackerConfig": { "type": "object" }, "bootstrap": { "type": "object" } } }, "guardrails": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "description": { "type": "string" }, "enabled": { "type": "boolean" }, "cel_expression": { "type": "string" }, "apply_to": { "type": "string", "enum": [ "input", "output", "both" ] }, "sampling_rate": { "type": "integer", "minimum": 0, "maximum": 100 }, "timeout": { "type": "integer", "minimum": 0 }, "provider_config_ids": { "type": "array", "items": { "type": "integer" } } }, "required": [ "id", "name", "enabled", "cel_expression", "apply_to" ] } }, "providers": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "provider_name": { "type": "string" }, "policy_name": { "type": "string" }, "enabled": { "type": "boolean" }, "timeout": { "type": "integer", "minimum": 0, "description": "Timeout in milliseconds for provider execution" }, "config": { "type": "object" } }, "required": [ "id", "provider_name", "policy_name", "enabled" ] } } } }, "auditLogs": { "type": "object", "properties": { "disabled": { "type": "boolean" }, "hmacKey": { "type": "string" } } } } }, "storage": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "sqlite", "postgres" ] }, "persistence": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "storageClass": { "type": "string" }, "accessMode": { "type": "string", "enum": [ "ReadWriteOnce", "ReadWriteMany", "ReadOnlyMany" ] }, "size": { "type": "string" }, "existingClaim": { "type": "string" } } }, "configStore": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "type": { "type": "string", "enum": [ "", "sqlite", "postgres" ] }, "maxIdleConns": { "type": "integer", "minimum": 0 }, "maxOpenConns": { "type": "integer", "minimum": 2 } } }, "logsStore": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "type": { "type": "string", "enum": [ "", "sqlite", "postgres" ] }, "maxIdleConns": { "type": "integer", "minimum": 0 }, "maxOpenConns": { "type": "integer", "minimum": 2 } } } } }, "postgresql": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "external": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "host": { "type": "string" }, "port": { "type": "integer", "minimum": 1, "maximum": 65535 }, "user": { "type": "string" }, "password": { "type": "string" }, "database": { "type": "string" }, "sslMode": { "type": "string", "enum": [ "disable", "allow", "prefer", "require", "verify-ca", "verify-full" ] }, "existingSecret": { "type": "string" }, "passwordKey": { "type": "string" } }, "if": { "properties": { "enabled": { "const": true } } }, "then": { "required": [ "host", "port", "user", "database", "sslMode" ] } }, "image": { "type": "object", "properties": { "repository": { "type": "string" }, "tag": { "type": "string" }, "pullPolicy": { "type": "string", "enum": [ "Always", "IfNotPresent", "Never" ] } } }, "auth": { "type": "object", "properties": { "username": { "type": "string" }, "password": { "type": "string" }, "database": { "type": "string" } } }, "primary": { "type": "object", "properties": { "persistence": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "size": { "type": "string" } } }, "resources": { "type": "object" } } }, "metrics": { "type": "object", "properties": { "enabled": { "type": "boolean" } } } } }, "vectorStore": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "type": { "type": "string", "enum": [ "none", "weaviate", "redis", "qdrant", "pinecone" ] }, "weaviate": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "external": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "scheme": { "type": "string", "enum": [ "http", "https" ] }, "host": { "type": "string", "description": "Weaviate server host (host:port)" }, "apiKey": { "type": "string", "description": "API key for Weaviate authentication" }, "grpcHost": { "type": "string", "description": "Weaviate gRPC host (host:port)" }, "grpcSecured": { "type": "boolean", "description": "Whether gRPC connection is secured" }, "timeout": { "type": "string", "pattern": "^[0-9]+(ns|us|µs|ms|s|m|h)$", "description": "Timeout for Weaviate operations (e.g., '5s')" }, "className": { "type": "string", "description": "Class name for Weaviate vector store" }, "existingSecret": { "type": "string" }, "apiKeyKey": { "type": "string" } }, "if": { "properties": { "enabled": { "const": true } } }, "then": { "required": [ "scheme", "host" ] } }, "replicas": { "type": "integer", "minimum": 1 }, "image": { "type": "object" }, "persistence": { "type": "object" }, "resources": { "type": "object" }, "env": { "type": "object" } } }, "redis": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "external": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "host": { "type": "string", "description": "Redis/Valkey server host" }, "port": { "type": "integer", "minimum": 1, "maximum": 65535, "description": "Redis/Valkey server port" }, "username": { "type": "string", "description": "Username for Redis/Valkey AUTH" }, "password": { "type": "string", "description": "Password for Redis/Valkey AUTH" }, "database": { "type": "integer", "minimum": 0, "default": 0, "description": "Redis/Valkey database number" }, "poolSize": { "type": "integer", "description": "Maximum number of socket connections" }, "maxActiveConns": { "type": "integer", "description": "Maximum number of active connections" }, "minIdleConns": { "type": "integer", "description": "Minimum number of idle connections" }, "maxIdleConns": { "type": "integer", "description": "Maximum number of idle connections" }, "connMaxLifetime": { "type": "string", "pattern": "^[0-9]+(ns|us|µs|ms|s|m|h)$", "description": "Connection maximum lifetime (e.g., '30m')" }, "connMaxIdleTime": { "type": "string", "pattern": "^[0-9]+(ns|us|µs|ms|s|m|h)$", "description": "Connection maximum idle time (e.g., '5m')" }, "dialTimeout": { "type": "string", "pattern": "^[0-9]+(ns|us|µs|ms|s|m|h)$", "description": "Timeout for socket connection (e.g., '5s')" }, "readTimeout": { "type": "string", "pattern": "^[0-9]+(ns|us|µs|ms|s|m|h)$", "description": "Timeout for socket reads (e.g., '3s')" }, "writeTimeout": { "type": "string", "pattern": "^[0-9]+(ns|us|µs|ms|s|m|h)$", "description": "Timeout for socket writes (e.g., '3s')" }, "contextTimeout": { "type": "string", "pattern": "^[0-9]+(ns|us|µs|ms|s|m|h)$", "description": "Timeout for Redis/Valkey operations (e.g., '10s')" }, "existingSecret": { "type": "string" }, "passwordKey": { "type": "string" } }, "if": { "properties": { "enabled": { "const": true } } }, "then": { "required": [ "host" ] } }, "image": { "type": "object" }, "auth": { "type": "object" }, "master": { "type": "object" }, "metrics": { "type": "object" } } }, "qdrant": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "external": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "host": { "type": "string", "description": "Qdrant server host" }, "port": { "type": "integer", "minimum": 1, "maximum": 65535, "default": 6334, "description": "Qdrant server port (default: 6334 for gRPC)" }, "apiKey": { "type": "string", "description": "API key for authentication" }, "useTls": { "type": "boolean", "default": false, "description": "Use TLS for connection" }, "existingSecret": { "type": "string" }, "apiKeyKey": { "type": "string" } }, "if": { "properties": { "enabled": { "const": true } } }, "then": { "required": [ "host" ] } }, "image": { "type": "object" }, "persistence": { "type": "object" }, "resources": { "type": "object" } } }, "pinecone": { "type": "object", "description": "Pinecone configuration for vector store", "properties": { "enabled": { "type": "boolean" }, "external": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "apiKey": { "type": "string", "description": "Pinecone API key" }, "indexHost": { "type": "string", "description": "Index host URL from Pinecone console (e.g., your-index.svc.environment.pinecone.io)" }, "existingSecret": { "type": "string", "description": "Name of existing secret containing Pinecone API key" }, "apiKeyKey": { "type": "string", "description": "Key in the secret containing the API key" } }, "if": { "properties": { "enabled": { "const": true } } }, "then": { "required": [ "indexHost" ] } } } } } }, "env": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" }, "valueFrom": { "type": "object" } }, "required": [ "name" ] } }, "envFrom": { "type": "array", "items": { "type": "object" } }, "initContainers": { "type": "array", "items": { "type": "object" } } }, "$defs": { "authConfig": { "type": "object", "properties": { "adminUsername": { "type": "string" }, "adminPassword": { "type": "string" }, "isEnabled": { "type": "boolean" }, "disableAuthOnInference": { "type": "boolean" }, "existingSecret": { "type": "string" }, "usernameKey": { "type": "string" }, "passwordKey": { "type": "string" } } }, "pluginBase": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "config": { "type": "object" } } }, "provider": { "type": "object", "properties": { "keys": { "type": "array", "items": { "$ref": "#/$defs/providerKey" }, "minItems": 1 }, "network_config": { "$ref": "#/$defs/networkConfig" }, "concurrency_and_buffer_size": { "$ref": "#/$defs/concurrencyConfig" }, "proxy_config": { "$ref": "#/$defs/proxyConfig" }, "send_back_raw_request": { "type": "boolean", "description": "Include raw request in BifrostResponse" }, "send_back_raw_response": { "type": "boolean" }, "store_raw_request_response": { "type": "boolean", "description": "Capture raw request/response for plugins only; stripped before returning to client" }, "custom_provider_config": { "type": "object", "description": "Custom provider configuration", "properties": { "is_key_less": { "type": "boolean" }, "base_provider_type": { "type": "string" }, "allowed_requests": { "type": "object", "additionalProperties": { "type": "boolean" } }, "request_path_overrides": { "type": "object", "additionalProperties": { "type": "string" } } }, "required": ["base_provider_type"] }, "pricing_overrides": { "type": "array", "description": "Provider-level pricing overrides", "items": { "type": "object", "properties": { "model_pattern": { "type": "string" }, "match_type": { "type": "string", "enum": ["exact", "wildcard", "regex"] } }, "required": ["model_pattern", "match_type"] } } }, "required": [ "keys" ] }, "providerKey": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": "string" }, "models": { "type": "array", "items": { "type": "string" } }, "weight": { "type": "number", "minimum": 0 }, "use_for_batch_api": { "type": "boolean" }, "azure_key_config": { "type": "object", "properties": { "endpoint": { "type": "string", "description": "Azure endpoint (can use env. prefix)" }, "deployments": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Model to deployment mappings" }, "api_version": { "type": "string", "description": "Azure API version" } }, "required": [ "endpoint", "api_version" ], "additionalProperties": false }, "vertex_key_config": { "type": "object", "properties": { "project_id": { "type": "string", "description": "Google Cloud project ID (can use env. prefix)" }, "project_number": { "type": "string", "description": "Google Cloud project number" }, "region": { "type": "string", "description": "Google Cloud region" }, "auth_credentials": { "type": "string", "description": "Authentication credentials (can use env. prefix)" }, "deployments": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Model to deployment mappings" } }, "required": [ "project_id", "region" ], "additionalProperties": false }, "bedrock_key_config": { "type": "object", "properties": { "access_key": { "type": "string", "description": "AWS access key (can use env. prefix)" }, "secret_key": { "type": "string", "description": "AWS secret key (can use env. prefix)" }, "session_token": { "type": "string", "description": "AWS session token (can use env. prefix)" }, "region": { "type": "string", "description": "AWS region" }, "arn": { "type": "string", "description": "AWS ARN" }, "deployments": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Model to deployment mappings" } }, "required": [ "region" ], "additionalProperties": false }, "vllm_key_config": { "type": "object", "properties": { "url": { "type": "string", "description": "VLLM server base URL (can use env. prefix)" }, "model_name": { "type": "string", "description": "Exact model name served on this VLLM instance" } }, "required": [ "url", "model_name" ], "additionalProperties": false } }, "required": [ "name", "weight" ], "oneOf": [ { "not": { "anyOf": [ { "required": ["azure_key_config"] }, { "required": ["vertex_key_config"] }, { "required": ["bedrock_key_config"] }, { "required": ["vllm_key_config"] } ] } }, { "required": ["azure_key_config"], "not": { "anyOf": [ { "required": ["vertex_key_config"] }, { "required": ["bedrock_key_config"] }, { "required": ["vllm_key_config"] } ] } }, { "required": ["vertex_key_config"], "not": { "anyOf": [ { "required": ["azure_key_config"] }, { "required": ["bedrock_key_config"] }, { "required": ["vllm_key_config"] } ] } }, { "required": ["bedrock_key_config"], "not": { "anyOf": [ { "required": ["azure_key_config"] }, { "required": ["vertex_key_config"] }, { "required": ["vllm_key_config"] } ] } }, { "required": ["vllm_key_config"], "not": { "anyOf": [ { "required": ["azure_key_config"] }, { "required": ["vertex_key_config"] }, { "required": ["bedrock_key_config"] } ] } } ] }, "networkConfig": { "type": "object", "properties": { "base_url": { "type": "string", "format": "uri" }, "extra_headers": { "type": "object", "additionalProperties": { "type": "string" } }, "default_request_timeout_in_seconds": { "type": "integer", "minimum": 1 }, "max_retries": { "type": "integer", "minimum": 0 }, "retry_backoff_initial_ms": { "type": "integer", "minimum": 0 }, "retry_backoff_max_ms": { "type": "integer", "minimum": 0 } } }, "concurrencyConfig": { "type": "object", "properties": { "concurrency": { "type": "integer", "minimum": 1 }, "buffer_size": { "type": "integer", "minimum": 1 } }, "required": [ "concurrency", "buffer_size" ] }, "proxyConfig": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "none", "http", "socks5", "environment" ] }, "url": { "type": "string", "format": "uri" }, "username": { "type": "string" }, "password": { "type": "string" }, "ca_cert_pem": { "type": "string" } }, "required": [ "type" ] }, "mcpClientConfig": { "type": "object", "properties": { "clientId": { "type": "string", "description": "MCP client identifier" }, "name": { "type": "string" }, "isCodeModeClient": { "type": "boolean", "description": "Whether this client is a code mode client" }, "connectionType": { "type": "string", "enum": [ "stdio", "websocket", "http", "sse" ] }, "connectionString": { "type": "string", "description": "HTTP or SSE URL (required for HTTP or SSE connections)" }, "authType": { "type": "string", "enum": ["none", "headers", "oauth"], "description": "Authentication type for MCP connection" }, "oauthConfigId": { "type": "string", "description": "OAuth config ID reference" }, "headers": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Headers for auth" }, "stdioConfig": { "type": "object", "properties": { "command": { "type": "string" }, "args": { "type": "array", "items": { "type": "string" } }, "envs": { "type": "array", "items": { "type": "string" } } }, "required": [ "command" ] }, "websocketConfig": { "type": "object", "properties": { "url": { "type": "string", "format": "uri" } }, "required": [ "url" ] }, "httpConfig": { "type": "object", "properties": { "url": { "type": "string", "format": "uri" } }, "required": [ "url" ] }, "toolsToExecute": { "type": "array", "items": { "type": "string" }, "description": "Include-only list of tools to execute" }, "toolsToAutoExecute": { "type": "array", "items": { "type": "string" }, "description": "Auto-execute list of tools" }, "toolSyncInterval": { "type": "string", "description": "Per-client override for tool sync interval" }, "isPingAvailable": { "type": "boolean", "description": "Whether the MCP server supports ping" }, "toolPricing": { "type": "object", "description": "Tool pricing map (tool name to cost per execution)", "additionalProperties": { "type": "number", "minimum": 0 } } }, "required": [ "name", "connectionType" ], "allOf": [ { "if": { "properties": { "connectionType": { "const": "stdio" } } }, "then": { "required": [ "stdioConfig" ] } }, { "if": { "properties": { "connectionType": { "const": "websocket" } } }, "then": { "required": [ "websocketConfig" ] } }, { "if": { "properties": { "connectionType": { "const": "http" } } }, "then": { "required": [ "httpConfig" ] } }, { "if": { "properties": { "connectionType": { "const": "sse" } } }, "then": { "required": [ "connectionString" ] } } ] }, "virtualKeyProviderConfig": { "type": "object", "description": "Provider configuration for a virtual key", "properties": { "id": { "type": "integer", "description": "Provider config ID" }, "virtual_key_id": { "type": "string", "description": "Associated virtual key ID" }, "provider": { "type": "string", "description": "Provider name" }, "weight": { "type": "number", "description": "Weight for load balancing", "default": 1.0 }, "allowed_models": { "type": "array", "description": "Allowed models for this provider config (empty means all models allowed)", "items": { "type": "string" } }, "budget_id": { "type": "string", "description": "Associated budget ID" }, "rate_limit_id": { "type": "string", "description": "Associated rate limit ID" }, "keys": { "type": "array", "description": "Provider keys for this config (empty means all keys allowed for this provider)", "items": { "type": "object", "properties": { "id": { "type": "integer", "description": "Key database ID (auto-generated)" }, "key_id": { "type": "string", "description": "Key UUID identifier" }, "name": { "type": "string", "description": "Key name (must be unique)" }, "value": { "type": "string", "description": "API key value (can use env. prefix)" }, "models": { "type": "array", "items": { "type": "string" }, "description": "Supported models for this key" }, "weight": { "type": "number", "minimum": 0, "default": 1.0, "description": "Weight for load balancing" }, "azure_key_config": { "type": "object", "properties": { "endpoint": { "type": "string", "description": "Azure endpoint (can use env. prefix)" }, "deployments": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Model to deployment mappings" }, "api_version": { "type": "string", "description": "Azure API version" } }, "required": ["endpoint"], "additionalProperties": false }, "vertex_key_config": { "type": "object", "properties": { "project_id": { "type": "string", "description": "Google Cloud project ID (can use env. prefix)" }, "project_number": { "type": "string", "description": "Google Cloud project number" }, "region": { "type": "string", "description": "Google Cloud region" }, "auth_credentials": { "type": "string", "description": "Authentication credentials (can use env. prefix)" }, "deployments": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Model to deployment mappings" } }, "required": ["project_id", "region"], "additionalProperties": false }, "bedrock_key_config": { "type": "object", "properties": { "access_key": { "type": "string", "description": "AWS access key (can use env. prefix)" }, "secret_key": { "type": "string", "description": "AWS secret key (can use env. prefix)" }, "session_token": { "type": "string", "description": "AWS session token (can use env. prefix)" }, "region": { "type": "string", "description": "AWS region" }, "arn": { "type": "string", "description": "AWS ARN" }, "deployments": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Model to deployment mappings" } }, "additionalProperties": false }, "vllm_key_config": { "type": "object", "properties": { "url": { "type": "string", "description": "VLLM server base URL (can use env. prefix)" }, "model_name": { "type": "string", "description": "Exact model name served on this VLLM instance" } }, "required": [ "url", "model_name" ], "additionalProperties": false } }, "oneOf": [ { "not": { "anyOf": [ { "required": ["azure_key_config"] }, { "required": ["vertex_key_config"] }, { "required": ["bedrock_key_config"] }, { "required": ["vllm_key_config"] } ] } }, { "required": ["azure_key_config"], "not": { "anyOf": [ { "required": ["vertex_key_config"] }, { "required": ["bedrock_key_config"] }, { "required": ["vllm_key_config"] } ] } }, { "required": ["vertex_key_config"], "not": { "anyOf": [ { "required": ["azure_key_config"] }, { "required": ["bedrock_key_config"] }, { "required": ["vllm_key_config"] } ] } }, { "required": ["bedrock_key_config"], "not": { "anyOf": [ { "required": ["azure_key_config"] }, { "required": ["vertex_key_config"] }, { "required": ["vllm_key_config"] } ] } }, { "required": ["vllm_key_config"], "not": { "anyOf": [ { "required": ["azure_key_config"] }, { "required": ["vertex_key_config"] }, { "required": ["bedrock_key_config"] } ] } } ], "required": ["key_id", "name", "value"] } } }, "required": [ "provider" ], "additionalProperties": false } } }