Two protocols cover all providers: Anthropic Messages API and OpenAI Chat Completions API implementations handle every major provider. OpenRouter, Ollama, vLLM, etc. are OpenAI-compatible.
Config-driven: Adding a new provider requires only a [providers.xxx] entry in TOML — no code changes.
Pin<Box<dyn Future>>: Provider and Tool traits use Pin<Box<dyn Future>> instead of async fn for dyn compatibility (even in Rust 2024 edition, async fn in traits is not dyn-compatible).
Thin HTTP abstraction: reqwest + eventsource-stream with full control. No heavy framework dependencies.
No Gateway trait: Each platform is an async function, not a trait implementation. Shared via AgentFactory and SessionMap only.
Embedded UI: Web UI is a single HTML file compiled into the binary via include_str!. Zero external assets, zero build step.