Skip to content

Repository files navigation

Ed

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.

Why it exists

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 runs the model. Ed makes it a feature.

Onde is the inference engine: weights, quantisation, Metal and CPU backends, tokens out. Ed is the part above it your users touch.

See it live

  • 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.

Quick start

[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.

Crates

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.

Copyright

© 2026 Splitfire AB (Onde Inference). Licensed under MIT or Apache-2.0.

About

Embed Ed on your iOS, macOS, or Android apps.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages