Embed Ed. Your app gets a brain. Your users keep their data.
Ed is the agent layer above Onde. It loads an
open-weights model, keeps the conversation, calls only the host tools you
register and hands back replies. The model runs on the user's device, so there
is no metered inference API and private context stays put. The ed-acp crates
build ACP agents (Onde Code, SplitFire Agent, siGit) on the same base.
Ed doesn't own sessions, persistence, model catalogues or downloads. Those differ per application and stay yours.
cargo add ed-agent # embedded chat
cargo add ed-acp # ACP agentFor Swift, add the package from ondeinference/ed-swift.
use ed_agent::{Ed, GgufModelConfig};
let ed = Ed::new();
ed.load(GgufModelConfig::qwen25_1_5b(), None, None).await?;
let reply = ed.send("Summarise this thread.").await;
println!("{}", reply.reply.unwrap_or_default());Streaming, history, tools and approvals are covered in crates/ed-agent.
- In your app:
ed-agent, plused-agent-taurifor Tauri anded-agent-ffifor Swift. - As an ACP agent:
ed-acpwith aProfile, anded-acp-tuifor a terminal UI. - Inside a Tauri app:
ed-acp-tauriruns an ACP agent in process or an external stdio agent. - With Claude:
ed-claude, a profile on the Anthropic API with the user's key. - With MCP servers:
ed-mcp. Onde accounts:ed-onde-account. Tests:ed-acp-testkit.
smbCloud MailX, Siti AI (the open reference app), Pepak Basa Jawa Komplit and Rumi.
Each crate has its own README:
ed-agent,
ed-agent-tauri,
ed-agent-ffi,
ed-acp,
ed-acp-tui,
ed-acp-tauri,
ed-claude,
ed-mcp,
ed-onde-account,
ed-acp-testkit.
Open pull requests against development. Before you push:
cargo fmt --all -- --check && cargo clippy --locked --workspace --all-targets -- -D warnings && cargo test --locked --workspaceMIT or Apache-2.0, at your option. See LICENSE-MIT and LICENSE-APACHE.
Free the intelligence.
© 2026 Onde Inference.