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::FallbackProvider;pub use fallback::RetryConfig;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::default_pricing_table;pub use metrics::MetricsProvider;pub use metrics::MetricsReport;pub use metrics::PricingTable;pub use metrics::TokenPricing;pub use opencode::OpenCodeRunner;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::ProviderConfig;pub use openai_api::OpenAiApiConfig;pub use openai_api::OpenAiApiRunner;pub use copilot_headless::CopilotHeadlessRunner;pub use copilot_headless::HeadlessEventStream;pub use copilot_headless::HeadlessStreamEvent;pub use copilot_headless::HeadlessToolResponse;pub use copilot_headless::ObservedToolCall;pub use copilot_headless_config::CopilotHeadlessConfig;pub use copilot_headless_config::PermissionPolicy;pub use copilot_headless_config::DEFAULT_MAX_HISTORY_TURNS;
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_
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
- 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
- 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
- openai_
api - OpenAI-compatible HTTP API client runner
- opencode
OpenCodeCLI runner- process
- Subprocess spawning with safety limits
- prompt
- Prompt construction from
ChatMessagesequences - quality_
gate - Response quality validation with retry
- sandbox
- Environment sandboxing and tool policy
- stream
- Stream wrapper for child process lifecycle management
- structured_
output - Schema-enforced JSON output from any provider
- 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
Macros§
- delegate_
provider_ base - Generate the boilerplate
LlmProvidertrait methods.