2964 lines
85 KiB
JSON
2964 lines
85 KiB
JSON
{
|
|
"$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
|
|
}
|
|
}
|
|
}
|