$schema: 'http://json-schema.org/draft-07/schema#' type: object properties: version: type: string enum: - v0.1 - v0.1.0 - 0.1-beta - 0.2.0 - v0.3.0 agents: type: array items: type: object properties: id: type: string url: type: string additionalProperties: false required: - id - url filters: type: array items: type: object properties: id: type: string url: type: string type: type: string enum: - mcp - http transport: type: string enum: - streamable-http tool: type: string additionalProperties: false required: - id - url listeners: oneOf: - type: array additionalProperties: false items: type: object properties: name: type: string port: type: integer address: type: string timeout: type: string router: type: string enum: - plano_orchestrator_v1 max_retries: type: integer type: type: string enum: - model - prompt - agent agents: type: array items: type: object properties: id: type: string description: type: string default: type: boolean filter_chain: type: array items: type: string additionalProperties: false required: - id - description additionalProperties: false required: - type - name - type: object # deprecated legacy format, use list format instead additionalProperties: false properties: ingress_traffic: type: object properties: address: type: string port: type: integer message_format: type: string enum: - openai timeout: type: string additionalProperties: false egress_traffic: type: object properties: address: type: string port: type: integer message_format: type: string enum: - openai timeout: type: string additionalProperties: false endpoints: type: object patternProperties: '^[a-zA-Z][a-zA-Z0-9_]*$': type: object properties: endpoint: type: string pattern: '^.*$' connect_timeout: type: string protocol: type: string enum: - http - https http_host: type: string additionalProperties: false required: - endpoint model_providers: type: array items: type: object properties: name: type: string access_key: type: string model: type: string default: type: boolean base_url: type: string passthrough_auth: type: boolean description: "When true, forwards the client's Authorization header to upstream instead of using the configured access_key. Useful for routing to services like LiteLLM that validate their own virtual keys." http_host: type: string provider_interface: type: string enum: - arch - claude - deepseek - groq - mistral - openai - gemini routing_preferences: type: array items: type: object properties: name: type: string description: type: string additionalProperties: false required: - name - description additionalProperties: false required: - model llm_providers: # deprecated for legacy support, use model_providers instead type: array items: type: object properties: name: type: string access_key: type: string model: type: string default: type: boolean base_url: type: string passthrough_auth: type: boolean description: "When true, forwards the client's Authorization header to upstream instead of using the configured access_key. Useful for routing to services like LiteLLM that validate their own virtual keys." http_host: type: string provider_interface: type: string enum: - arch - claude - deepseek - groq - mistral - openai - gemini routing_preferences: type: array items: type: object properties: name: type: string description: type: string additionalProperties: false required: - name - description additionalProperties: false required: - model model_aliases: type: object patternProperties: '^.*$': type: object properties: target: type: string additionalProperties: false required: - target overrides: type: object properties: prompt_target_intent_matching_threshold: type: number optimize_context_window: type: boolean use_agent_orchestrator: type: boolean system_prompt: type: string prompt_targets: type: array items: type: object properties: name: type: string default: type: boolean description: type: string auto_llm_dispatch_on_response: type: boolean parameters: type: array items: type: object properties: name: type: string additionalProperties: false required: type: boolean default: anyOf: - type: string - type: integer - type: boolean description: type: string type: type: string enum: type: array items: anyOf: - type: string - type: integer - type: boolean in_path: type: boolean format: type: string additionalProperties: false required: - name - description - type endpoint: type: object properties: name: type: string path: type: string http_method: type: string enum: - GET - POST http_headers: type: object additionalProperties: type: string additionalProperties: false required: - name - path system_prompt: type: string additionalProperties: false required: - name - description ratelimits: type: array items: type: object properties: model: type: string selector: type: object properties: key: type: string value: type: string additionalProperties: false required: - key - value limit: type: object properties: tokens: type: integer unit: type: string additionalProperties: false required: - tokens - unit additionalProperties: false required: - model - selector - limit tracing: type: object properties: random_sampling: type: integer trace_arch_internal: type: boolean additionalProperties: false mode: type: string enum: - llm - prompt routing: type: object properties: llm_provider: type: string model: type: string additionalProperties: false state_storage: type: object properties: type: type: string enum: - memory - postgres connection_string: type: string description: Required when type is postgres. Supports environment variable substitution using $VAR or ${VAR} syntax. additionalProperties: false required: - type # Note: connection_string is conditionally required based on type # If type is 'postgres', connection_string must be provided # If type is 'memory', connection_string is not needed allOf: - if: properties: type: const: postgres then: required: - connection_string prompt_guards: type: object properties: input_guards: type: object properties: jailbreak: type: object properties: on_exception: type: object properties: message: type: string additionalProperties: false required: - message additionalProperties: false required: - on_exception additionalProperties: false required: - jailbreak additionalProperties: false required: - version - listeners