Embed Ed. Your app gets a brain. Your users keep their data.
Ed is an agent you drop into an application. 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 — there is no metered inference API and private context does not need to leave the device.
Seven applications needed the same thing: load a model, know whether it's ready, keep a conversation, hand back a reply. Seven times somebody wrote it again. Two of them ended up byte-identical in three files.
None of that code was interesting. It was the wiring between an inference engine
that reports status by polling and a user interface that needs to be told —
plus the flattening of Result<InferenceResult, _> into one payload a view can
render either way. Ed is that layer, written once.
It deliberately doesn't own sessions, persistence, model catalogues, or downloads. Those differ per application and stay yours.
Onde is the inference engine: weights, quantisation, Metal and CPU backends, tokens out. Ed is the part above it your users touch.
- smbCloud MailX — siMail drafts replies, summarises long threads, and helps triage the inbox. The mail never leaves the machine to get read.
- Siti AI — a private assistant for macOS, iOS, and Android, and the open reference app: its source is public, so it's the codebase to read for a full integration.
- Pepak Basa Jawa Komplit — Joko, a Javanese tutor who answers offline, which matters where the app is used.
- Rumi Learn Persian — Rumi, a Persian tutor, same model, same device.
[dependencies]
ed-agent = "0.1"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());Construct with Ed::with_agent to provide the executor for registered tools
and the approval handler for mutating tools. Read-only tools run directly;
mutating tools must receive AllowOnce or AllowForSession first.
| Crate | What it's for |
|---|---|
ed-agent |
The agent. No framework dependency. |
ed-agent-ffi |
UniFFI bridge used by the Swift XCFramework. |
ed-agent-tauri |
Tauri bindings: a sink that emits to the webview, plus the commands it invokes. |
Free the intelligence.
© 2026 Splitfire AB (Onde Inference). Licensed under MIT or Apache-2.0.