pub struct EndpointConfig {Show 20 fields
pub endpoint_type: EndpointType,
pub url: Option<String>,
pub model: Option<String>,
pub api_key: Option<String>,
pub headers: HashMap<String, String>,
pub pricing: Option<PricingConfig>,
pub pricing_source: Option<String>,
pub default_for: Vec<String>,
pub command: Option<String>,
pub args: Vec<String>,
pub vision: bool,
pub max_attempts: Option<u32>,
pub fallbacks: Vec<String>,
pub provider: Provider,
pub deployment: Option<String>,
pub api_version: Option<String>,
pub auth: AuthConfig,
pub header_commands: HashMap<String, String>,
pub aws: AwsConfig,
pub cache: Option<bool>,
}Expand description
A named endpoint definition with pricing.
Fields§
§endpoint_type: EndpointTypeEndpoint type: llm, mcp, or a2a.
url: Option<String>Base URL for the endpoint.
model: Option<String>Model name (LLM endpoints only).
api_key: Option<String>API key / bearer token.
headers: HashMap<String, String>Custom HTTP headers as JSON key-value pairs.
pricing: Option<PricingConfig>Pricing configuration.
pricing_source: Option<String>Automatically fetch exact per-token pricing for this endpoint at
startup from a provider’s public pricing API, filling in any pricing
fields left unset (explicit pricing values win). Defaults to
"auto": Bedrock endpoints use the AWS Price List and openrouter.ai
URLs use the OpenRouter models API; other providers are a no-op.
Force a source with "bedrock" / "openrouter", or disable the
lookup with "off" / "none" / "disabled".
default_for: Vec<String>Task types this endpoint serves by default
(e.g. ["targeting", "assertion"]).
command: Option<String>Command to launch an MCP server subprocess (stdio transport).
args: Vec<String>Arguments for the MCP server command.
vision: boolWhether this LLM endpoint accepts image parts (vision) in addition
to text. assert steps with screenshot = true require a vision
endpoint.
max_attempts: Option<u32>How often a single chat completion against this endpoint is retried
on transient failures (HTTP 429/5xx, empty 200 bodies, network
errors) before the fallback chain is tried. Default: 3 (override
globally with HARNESS_LLM_CALL_ATTEMPTS).
fallbacks: Vec<String>Ordered names of other endpoints to try when this endpoint exhausts its attempts. Only LLM endpoints are eligible. Useful for pairing a cheap primary model with a more powerful/expensive fallback.
provider: ProviderLLM provider protocol: openai (default, OpenAI-compatible chat
completions), azure (Azure OpenAI), or bedrock (AWS Bedrock
Converse API; requires the aws cargo feature).
deployment: Option<String>Azure OpenAI deployment name (provider = "azure"). Defaults to
model when unset.
api_version: Option<String>Azure OpenAI API version (provider = "azure"). Defaults to
2024-10-21.
auth: AuthConfigAuthentication configuration for LLM endpoints (API key, token command, Entra ID client credentials / managed identity).
header_commands: HashMap<String, String>Extra HTTP headers produced by running a command per call, keyed by header name. The command’s stdout (first line) becomes the header value. Provider-agnostic — applies to every LLM provider.
aws: AwsConfigAWS credential settings (provider = "bedrock").
cache: Option<bool>Send provider-side prompt-cache markers from this endpoint
(default true). Only providers that require explicit markers are
affected: AWS Bedrock gets a cachePoint block, and Anthropic-style
OpenAI-compatible models (model name contains claude/anthropic,
e.g. via OpenRouter) get a cache_control: ephemeral block on the
system message. OpenAI, Azure, Groq, xAI and DeepSeek cache
automatically and need no markers. Set to false to disable.