Expand description
§Embacle — LLM Runners
Standalone library providing pluggable LlmProvider
implementations that delegate to CLI tools (Claude Code, Copilot, Cursor Agent,
OpenCode, Gemini, Codex, Goose, Cline, Continue, Warp, Kiro, Kilo Code), an HTTP API client
(OpenAI-compatible), and ACP (Copilot Headless) for LLM completions.
CLI runners wrap a binary, build prompts from ChatMessage
sequences, parse JSON output, and manage session continuity. The Copilot Headless
runner communicates via NDJSON-framed JSON-RPC with copilot --acp.
Two companion binary crates build on this library:
embacle-server— OpenAI-compatible REST API + MCP Streamable HTTP on a single portembacle-mcp— standalone MCP server over stdio or HTTP
§Progress feedback (AG-UI)
With the agui feature enabled, the agui module exposes the
AG-UI protocol event vocabulary
plus an emitter trait so downstream runners, agent loops, and pipelines
can report run/step/tool/text progress to user-facing clients without
coupling to a specific transport.
Re-exports§
pub use agent::AgentExecutor;pub use agent::AgentResult;pub use agent::OnTurnCallback;pub use agent::TurnInfo;pub use auth::ProviderReadiness;pub use cache::CacheConfig;pub use cache::CacheProvider;pub use cache::CacheStats;pub use capability_guard::validate_capabilities;pub use claude_code::ClaudeCodeRunner;pub use cli_common::CliRunnerBase;pub use cline_cli::ClineCliRunner;pub use codex_cli::CodexCliRunner;pub use compat::CliCapabilities;pub use compat::CliFeatureFlags;pub use config::CliRunnerType;pub use config::RunnerConfig;pub use container::ContainerConfig;pub use container::ContainerExecutor;pub use container::NetworkMode;pub use continue_cli::ContinueCliRunner;pub use copilot::copilot_fallback_models;pub use copilot::CopilotRunner;pub use cursor_agent::CursorAgentRunner;pub use discovery::discover_runner;pub use discovery::resolve_binary;pub use factory::create_runner;pub use factory::create_runner_with_config;pub use factory::parse_runner_type;pub use factory::valid_provider_names;pub use factory::ALL_PROVIDERS;pub use fallback::is_empty_completion;pub use fallback::Attempt;pub use fallback::FallThrough;pub use fallback::FallbackObserver;pub use fallback::FallbackProvider;pub use fallback::FallthroughReason;pub use fallback::QuotaCooldowns;pub use fallback::ResponsePolicy;pub use fallback::RetryConfig;pub use fallback::Tier;pub use fallback::DEFAULT_QUOTA_COOLDOWN;pub use fallback::QUOTA_COOLDOWN_SKIP;pub use gemini_cli::GeminiCliRunner;pub use goose_cli::GooseCliRunner;pub use guardrail::ContentLengthGuardrail;pub use guardrail::Guardrail;pub use guardrail::GuardrailProvider;pub use guardrail::GuardrailViolation;pub use guardrail::PiiScrubGuardrail;pub use guardrail::TopicFilterGuardrail;pub use kilo_cli::KiloCliRunner;pub use kiro_cli::KiroCliRunner;pub use mcp_tool_bridge::McpToolDefinition;pub use mcp_tool_bridge::McpToolExecutor;pub use metrics::MetricsProvider;pub use metrics::MetricsReport;pub use opencode::OpenCodeRunner;pub use pricing::calculate_cost;pub use pricing::calculate_cost_for;pub use pricing::is_not_per_token_metered;pub use pricing::ModelPricing;pub use pricing::TokenCounts;pub use pricing::NOT_PER_TOKEN_METERED_PROVIDERS;pub use pricing::PRICING_TABLE;pub use quality_gate::QualityGateProvider;pub use quality_gate::QualityPolicy;pub use structured_output::extract_json_from_response;pub use structured_output::request_structured_output;pub use structured_output::StructuredOutputRequest;pub use warp_cli::WarpCliRunner;pub use types::ImagePart;pub use types::ResponseFormat;pub use types::ToolCallRequest;pub use types::ToolChoice;pub use types::ToolDefinition;pub use turn::ConversationTurnId;pub use tool_simulation::execute_with_text_tools;pub use tool_simulation::format_tool_results_as_text;pub use tool_simulation::generate_tool_catalog;pub use tool_simulation::inject_tool_catalog;pub use tool_simulation::parse_tool_call_blocks;pub use tool_simulation::strip_tool_call_blocks;pub use tool_simulation::FunctionCall;pub use tool_simulation::FunctionDeclaration;pub use tool_simulation::FunctionResponse;pub use tool_simulation::TextToolHandler;pub use tool_simulation::TextToolResponse;pub use agui::AgUiEmitter;pub use agui::AgUiEvent;pub use agui::AgUiEventFilter;pub use agui::AgUiEventKind;pub use agui::NoopEmitter;pub use config_file::build_fallback_from_config;pub use config_file::build_runner_config;pub use config_file::load_config;pub use config_file::load_config_from;pub use config_file::resolve_alias;pub use config_file::DefaultsConfig;pub use config_file::EmbacleConfig;pub use config_file::FallbackConfig;pub use config_file::McpServerConfig;pub use config_file::ProviderConfig;pub use http_api::AnthropicConfig;pub use http_api::AnthropicEffort;pub use http_api::AnthropicProvider;pub use http_api::AnthropicThinking;pub use http_api::CohereConfig;pub use http_api::CohereProvider;pub use http_api::GeminiConfig;pub use http_api::GeminiProvider;pub use http_api::GroqConfig;pub use http_api::GroqProvider;pub use http_api::OpenAiCompatibleConfig;pub use http_api::OpenAiCompatibleProvider;pub use http_api::OpenRouterConfig;pub use http_api::OpenRouterProvider;pub use web_ui::WebProviderConfig;pub use web_ui::WebUiConfig;pub use web_ui::WebUiRunner;pub use copilot_common::HeadlessEventStream;pub use copilot_common::HeadlessStreamEvent;pub use copilot_common::HeadlessToolResponse;pub use copilot_common::HeadlessTurnProvider;pub use copilot_common::ObservedToolCall;pub use copilot_common::PermissionPolicy;pub use copilot_common::DEFAULT_MAX_HISTORY_TURNS;pub use copilot_headless::CopilotHeadlessRunner;pub use copilot_headless_config::CopilotHeadlessConfig;pub use copilot_sdk::CopilotSdkRunner;pub use copilot_sdk_config::CopilotSdkConfig;pub use copilot_sdk_config::CopilotSdkProvider;
Modules§
- agent
- Configurable agent loop with multi-turn tool calling
- agui
- AG-UI protocol event schema (feature-gated).
- auth
- Auth readiness checking for CLI runners
- cache
- Response caching decorator
- capability_
guard - Request/provider capability validation
- claude_
code - Claude Code CLI runner
- cli_
common - Shared base struct and macro for CLI runner boilerplate
- cline_
cli - Cline CLI runner
- codex_
cli - Codex CLI runner
- compat
- Version compatibility and capability detection
- config
- Shared configuration types for CLI runners
- config_
file - TOML-based declarative configuration file loading
- container
- Container-based execution backend
- continue_
cli - Continue CLI runner
- copilot
- GitHub Copilot CLI runner
- copilot_
common - Types and helpers every Copilot provider shares: the permission policy, the turn API, history rendering The turn API both Copilot providers implement.
- copilot_
headless - Configuration for the Copilot Headless (ACP) provider
- copilot_
headless_ config - Configuration types for the Copilot Headless provider
- copilot_
models - Ranked catalog of Copilot-served models for intelligent default selection and self-heal
- copilot_
sdk - The Copilot SDK provider — GitHub’s Rust runtime over stdio GitHub Copilot through its Rust SDK.
- copilot_
sdk_ config - Configuration types for the Copilot SDK provider
- cursor_
agent - Cursor Agent CLI runner
- discovery
- Binary auto-detection and discovery
- factory
- Runner factory, provider parsing, and provider enumeration
- fallback
- Provider fallback chains
- gemini_
cli - Gemini CLI runner
- goose_
cli - Goose CLI runner
- guardrail
- Pluggable guardrail middleware for request/response validation
- http_
api - HTTP API providers: Anthropic, Gemini, Cohere, Groq,
OpenRouter, OpenAI-compatible - kilo_
cli - Kilo Code CLI runner
- kiro_
cli - Kiro CLI runner
- mcp_
tool_ bridge - MCP tool definition to text-tool-simulation bridge
- metrics
- Cost/latency normalization decorator
- opencode
OpenCodeCLI runner- pool
- Credential pools
- pricing
- Per-token price table keyed on each provider’s
name() - process
- Subprocess spawning with safety limits
- prompt
- Prompt construction from
ChatMessagesequences - quality_
gate - Response quality validation with retry
- quota
- Provider quota: snapshots, pluggable checkers, and cooldown policy. Provider quota.
- quota_
http - HTTP quota checkers: the real Anthropic budget, and the GitHub headroom proxy. HTTP quota checkers.
- quota_
store - Where routing state lives, behind a trait so a shared store is a plugin. Routing state storage.
- quota_
store_ redis - Routing state shared through Redis across every instance spending one account.
A
QuotaStorethat several processes share. - router
- Budget-driven routing across several providers, with a pluggable strategy. Budget-driven routing.
- sandbox
- Environment sandboxing and tool policy
- stream
- Stream wrapper for child process lifecycle management
- structured_
output - Schema-enforced JSON output from any provider
- system_
delivery - Per-runner System-message delivery contract. System-message delivery contract.
- tool_
simulation - Text-based tool simulation for CLI runners without native function calling
- turn
- Conversation-turn correlation identifier threaded through a user utterance
- types
- Core types: traits, messages, requests, responses, and errors
- warp_
cli - Warp terminal
ozCLI runner - web_ui
- Browser-driven web-UI provider (drives Claude.ai via a headless profile)
Macros§
- delegate_
provider_ base - Generate the boilerplate
LlmProvidertrait methods.