Skip to main content

ProviderKind

Enum ProviderKind 

Source
pub enum ProviderKind {
Show 47 variants Deepseek, DeepseekAnthropic, NvidiaNim, Openai, Atlascloud, WanjieArk, Volcengine, Openrouter, Orcarouter, XiaomiMimo, Novita, Fireworks, Siliconflow, Arcee, SiliconflowCN, Moonshot, Sglang, Vllm, Ollama, OllamaCloud, Huggingface, Together, Qianfan, OpenaiCodex, Anthropic, Openmodel, Zai, Stepfun, Minimax, MinimaxAnthropic, Deepinfra, Sakana, LongCat, OpencodeGo, OpencodeZen, Meta, Xai, Mistral, Telecomjs, ModelstudioTokenPlan, ModelstudioTokenPlanAnthropic, ModelstudioCodingPlan, ModelstudioCodingPlanAnthropic, Antigravity, Google, Edenai, Custom,
}

Variants§

§

Deepseek

§

DeepseekAnthropic

§

NvidiaNim

§

Openai

§

Atlascloud

§

WanjieArk

§

Volcengine

§

Openrouter

§

Orcarouter

§

XiaomiMimo

§

Novita

§

Fireworks

§

Siliconflow

§

Arcee

§

SiliconflowCN

§

Moonshot

§

Sglang

§

Vllm

§

Ollama

§

OllamaCloud

§

Huggingface

§

Together

§

Qianfan

§

OpenaiCodex

§

Anthropic

§

Openmodel

§

Zai

§

Stepfun

§

Minimax

§

MinimaxAnthropic

§

Deepinfra

§

Sakana

§

LongCat

§

OpencodeGo

§

OpencodeZen

§

Meta

§

Xai

§

Mistral

Mistral AI — la Plateforme (OpenAI-compatible Chat Completions).

§

Telecomjs

Jiangsu Telecom TokenHub (OpenAI-compatible).

An AI gateway operated by Jiangsu Telecom that speaks the OpenAI Chat Completions wire protocol and serves a broad model catalog; each API key may access a different subset of models.

§

ModelstudioTokenPlan

Alibaba Cloud Model Studio — Token Plan (OpenAI-compatible Chat Completions).

Token Plan Personal and Team share the same endpoint. Both the OpenAI and Anthropic dialects are available; select the Anthropic dialect via modelstudio-token-plan-anthropic. Pay-as-you-go workspace-id templating is out of scope for v1; use a custom provider for that plan.

§

ModelstudioTokenPlanAnthropic

Alibaba Cloud Model Studio — Token Plan Anthropic-compatible endpoint.

§

ModelstudioCodingPlan

Alibaba Cloud Model Studio — Coding Plan (OpenAI-compatible Chat Completions).

§

ModelstudioCodingPlanAnthropic

Alibaba Cloud Model Studio — Coding Plan Anthropic-compatible endpoint.

§

Antigravity

Google Antigravity (agy CLI) — consent-gated read-only credential import only; the cloud-code wire protocol is not implemented and requests fail closed with an actionable message.

§

Google

Google — Gemini OpenAI-compatible endpoint. Its own backend, not an OpenAI alias: thought signatures on tool calls are captured and replayed per Google’s contract.

§

Edenai

Eden AI — OpenAI-compatible AI gateway (aggregator).

Serves a broad catalog of upstream models under provider/model namespaced wire ids over the OpenAI Chat Completions protocol.

§

Custom

User-defined OpenAI-compatible endpoint (#1519).

A single dynamic identity for arbitrary [providers.<name>] kind="openai-compatible" entries. It speaks the OpenAI Chat Completions wire protocol and carries no built-in base URL/model — the concrete endpoint and model arrive via config (base_url / model) and the route’s base_url_override, never from this static descriptor.

Implementations§

Source§

impl ProviderKind

Source

pub const ALL: [Self; 42]

Catalog / picker surface: one identity per vendor.

Dual-wire dialect kinds (*Anthropic) and Model Studio plan variants stay on the enum for serde and provider_for_kind, but they are not first-class catalog rows. Plan is mode / base_url; dialect is wire = openai|anthropic on the primary provider config.

Source

pub fn all() -> &'static [Self]

Source

pub fn names_hint() -> String

Source

pub fn as_str(self) -> &'static str

Source

pub fn parse(value: &str) -> Option<Self>

Source

pub fn parse_config_identity(value: &str) -> Option<Self>

Parse a provider identifier for config-table identity — the kind used to look up credentials, model, and base URL in the user’s [providers.*] tables.

parse is catalog identity: legacy dual-wire spellings (deepseek-anthropic, minimax-anthropic, the Model Studio plan/dialect kinds) are aliases of the vendor primary and collapse onto it so pickers show one row per vendor. That collapse must not decide which config table holds the user’s credentials: TOML serde keeps the legacy kind for provider = "deepseek-anthropic", so env (CODEWHALE_PROVIDER) and config set provider must resolve the same way or the user’s own named table is orphaned with the key present.

An exact canonical-id or provider_config_key match across the full registry (including legacy dialect/plan kinds) therefore wins over alias collapse; everything else falls back to parse. Wire-endpoint selection is unaffected: it keys off the resolved kind’s wire config, not this parse.

Source

pub fn is_siliconflow(self) -> bool

Source

pub fn secret_store_slot(self) -> &'static str

Canonical durable-credential slot in the local secret store.

Most providers own a slot named after their id. Variants authenticated by the SAME account share one slot so a single saved key (or logout) applies to the whole family:

  • SiliconflowCN shares siliconflow (historical China-endpoint slot, already the TUI/CLI convention).
  • The four Alibaba Cloud Model Studio variants share modelstudio-token-plan: one Model Studio account/key authenticates the Token Plan and Coding Plan endpoints in both wire dialects, so per-variant slots produced three bogus “missing key” rows whenever one variant held the key.
Source

pub fn provider(self) -> &'static dyn Provider

Return the built-in metadata entry for this provider.

This is a metadata foundation only; runtime routing still resolves through crate::ConfigToml::resolve_runtime_options.

Trait Implementations§

Source§

impl Clone for ProviderKind

Source§

fn clone(&self) -> ProviderKind

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 Copy for ProviderKind

Source§

impl Debug for ProviderKind

Source§

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

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

impl Default for ProviderKind

Source§

fn default() -> ProviderKind

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

impl<'de> Deserialize<'de> for ProviderKind

Source§

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

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for ProviderKind

Source§

impl PartialEq for ProviderKind

Source§

fn eq(&self, other: &ProviderKind) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for ProviderKind

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for ProviderKind

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<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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> 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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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