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) and SDKs (Copilot SDK) for LLM completions.
CLI runners wrap a binary, build prompts from ChatMessage
sequences, parse JSON output, and manage session continuity. The Copilot SDK
runner maintains a persistent copilot --headless server via JSON-RPC.
§Quick Start
use std::path::PathBuf;
use embacle::{ClaudeCodeRunner, RunnerConfig};
use embacle::types::{ChatMessage, ChatRequest, LlmProvider};
let config = RunnerConfig::new(PathBuf::from("claude"));
let runner = ClaudeCodeRunner::new(config);
let request = ChatRequest::new(vec![ChatMessage::user("Hello!")]);
let response = runner.complete(&request).await?;
println!("{}", response.content);§Modules
types— Core types:LlmProvidertrait, messages, requests, errorsconfig— Runner types and configurationagent— Configurable agent loop with multi-turn tool callingfallback— Provider fallback chains (try providers in order)mcp_tool_bridge— MCP tool definition to text-tool-simulation bridgemetrics— Cost/latency normalization decoratorquality_gate— Response quality validation with retrystructured_output— Schema-enforced JSON output from any providercompat— Version compatibility and capability detectioncontainer— Container-based execution backenddiscovery— Automatic binary detection on the hostcapability_guard— Request/provider capability validationauth— Readiness and authentication checkingprocess— Subprocess spawning with timeout and output limitssandbox— Environment variable whitelisting and working directory controlprompt— Prompt building fromChatMessageslicesclaude_code— Claude Code CLI runnercopilot— GitHub Copilot CLI runnercursor_agent— Cursor Agent CLI runneropencode—OpenCodeCLI runnergemini_cli— Gemini CLI runnercodex_cli— Codex CLI runnergoose_cli— Goose CLI runnercline_cli— Cline CLI runnercontinue_cli— Continue CLI runner- [
copilot_sdk_runner] — GitHub Copilot SDK runner (requirescopilot-sdkfeature)
Re-exports§
pub use agent::AgentExecutor;pub use agent::AgentResult;pub use agent::OnTurnCallback;pub use agent::TurnInfo;pub use auth::ProviderReadiness;pub use capability_guard::validate_capabilities;pub use claude_code::ClaudeCodeRunner;pub use cline_cli::ClineCliRunner;pub use codex_cli::CodexCliRunner;pub use compat::CliCapabilities;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::CopilotRunner;pub use cursor_agent::CursorAgentRunner;pub use discovery::discover_runner;pub use discovery::resolve_binary;pub use fallback::FallbackProvider;pub use gemini_cli::GeminiCliRunner;pub use goose_cli::GooseCliRunner;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 quality_gate::QualityGateProvider;pub use quality_gate::QualityPolicy;pub use structured_output::request_structured_output;pub use structured_output::StructuredOutputRequest;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;
Modules§
- agent
- Configurable agent loop with multi-turn tool calling
- auth
- Auth readiness checking for CLI runners
- capability_
guard - Request/provider capability validation
- claude_
code - Claude Code CLI runner
- cline_
cli - Cline CLI runner
- codex_
cli - Codex CLI runner
- compat
- Version compatibility and capability detection
- config
- Shared configuration types for CLI runners
- container
- Container-based execution backend
- continue_
cli - Continue CLI runner
- copilot
- GitHub Copilot CLI runner
- cursor_
agent - Cursor Agent CLI runner
- discovery
- Binary auto-detection and discovery
- fallback
- Provider fallback chains
- gemini_
cli - Gemini CLI runner
- goose_
cli - Goose CLI runner
- mcp_
tool_ bridge - MCP tool definition to text-tool-simulation bridge
- metrics
- Cost/latency normalization decorator
- 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
- types
- Core types: traits, messages, requests, responses, and errors