Skip to main content

EndpointConfig

Struct EndpointConfig 

Source
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: EndpointType

Endpoint 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: bool

Whether 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: Provider

LLM 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: AuthConfig

Authentication 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: AwsConfig

AWS 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.

Trait Implementations§

Source§

impl Clone for EndpointConfig

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for EndpointConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for EndpointConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for EndpointConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more