Skip to main content

Crate embacle

Crate embacle 

Source
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 port
  • embacle-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
OpenCode CLI runner
process
Subprocess spawning with safety limits
prompt
Prompt construction from ChatMessage sequences
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 oz CLI runner

Macros§

delegate_provider_base
Generate the boilerplate LlmProvider trait methods.