Skip to content

Rust SDK Overview

ai-lib-rust (v1.2.0) is the Rust runtime for AI-Protocol. The published crate is a facade over two workspace crates:

CrateRole
ai-lib-coreExecution: AiClient, pipeline, protocol, transport, types, structured
ai-lib-contactPolicy: resilience, cache, routing, plugins, guardrails, batch, telemetry

For chat, AiClient does not call ProviderDriver. It:

  1. Loads a provider manifest (ProtocolLoader)
  2. Builds a Pipeline from manifest operators
  3. Sends HTTP via HttpTransport
  4. Emits unified StreamingEvent values

Provider-specific logic still exists (SSE decoders, optional drivers, standalone service clients), but the default integration path is manifest + pipeline.

Always exported from ai_lib_rust:

  • AiClient, AiClientBuilder, ChatBatchRequest, CancelHandle, CallStats
  • Message, MessageRole, StreamingEvent, ToolCall
  • StandardErrorCode, Error, Result
  • structured (JSON mode / schema validation)
  • Text-tool helpers: StandardTextToolParser, ToolCallingPolicy, …
  • Policy modules: cache, context, plugins, resilience

Feature-gated (see Feature flags):

  • Core: embeddings, mcp, computer_use, multimodal, stt, tts, rerank
  • Contact: batch, guardrails, telemetry, tokens, routing_mvp, interceptors
  • Manifest loading: V1 + V2 paths (dist/v2/providers/*.json, v2/providers/*.yaml, …)
  • Standard error codes: 13-variant StandardErrorCode (E1001–E9999)
  • Structured output: JsonModeConfig, OutputValidator (always available)
  • Text-tool / TTC: StandardTextToolParser and policy types at crate root
  • Capability registry: registry::CapabilityRegistry (feature-gap detection)
AreaIn the crateNot included
MCP (mcp feature)McpToolBridge format conversionMCP server transport wired into AiClient
Computer Use (computer_use)ComputerAction, SafetyPolicy validationScreenshot / input execution environment
Embeddings / STT / TTS / RerankStandalone HTTP clientsFull pipeline operators for every modality
Hot reloadManifest in-memory cacheFile watching / automatic reload
ProviderDriverPublic drivers moduleDefault AiClient chat path
  • AiClient — entry point ("provider/model" id)
  • ChatRequestBuilder.messages(), .stream(), .execute(), .execute_stream()
  • chat_batch / chat_batch_smart — always on AiClient (not behind batch feature)

Protocol (crates/ai-lib-core/src/protocol/)

Section titled “Protocol (crates/ai-lib-core/src/protocol/)”
  • ProtocolLoader, ProtocolManifest, validators
  • V2 types under protocol::v2

Pipeline (crates/ai-lib-core/src/pipeline/)

Section titled “Pipeline (crates/ai-lib-core/src/pipeline/)”

Decoder → Selector → Accumulator → FanOut → EventMapper (configured from manifests).

Transport (crates/ai-lib-core/src/transport/)

Section titled “Transport (crates/ai-lib-core/src/transport/)”

HttpTransport, credential resolution (keyring or <PROVIDER>_API_KEY).

Opt-in modules — import and wire beside AiClient; not auto-enabled by AiClient::new.

FeatureEnables
embeddingsEmbeddingClient
stt / tts / rerankingSttClient, TtsClient, RerankerClient
mcpMcpToolBridge
computer_useComputerAction, SafetyPolicy
multimodalMultimodalCapabilities
batchBatchExecutor (contact); chat_batch is always available
guardrailsContent filters
telemetryAdvanced feedback sinks
routing_mvpCustomModelManager, ModelArray
fullAll of the above
ai-lib-rust = { version = "1.2.0", features = ["embeddings"] }
  • AiClient: max_inflight backpressure (AI_LIB_MAX_INFLIGHT)
  • ai_lib_rust::resilience: retry, rate limiter, circuit breaker — configure explicitly
  • Not built into default client: automatic breaker / rate limit on every AiClient::new
VariablePurpose
AI_PROTOCOL_DIR / AI_PROTOCOL_PATHLocal or remote manifest root
<PROVIDER>_API_KEYAPI key (e.g. OPENAI_API_KEY)
AI_LIB_MAX_INFLIGHTConcurrent request cap
AI_LIB_BATCH_CONCURRENCYBatch worker count
AI_HTTP_TIMEOUT_SECSHTTP timeout
AI_PROXY_URLExplicit proxy override

Source of truth: ai-lib-rust README.