koder_ipc (Rust crate)

  • Area: Developer Platform
  • Path: engines/sdk/rust/koder_ipc
  • Kind: Rust crate — KoderIPC binding for Rust applications
  • Version: 0.1.0

Role in the stack

Rust binding for the KoderIPC protocol. Enables Rust-based Koder applications and daemons to participate in inter-app communication via JSON-RPC 2.0 over Unix sockets (Linux/macOS).

Built on Tokio async runtime for non-blocking I/O.

Primary couplings

Module Relationship
meta/docs/stack/specs/ipc/protocol.kmd Normative wire protocol this crate implements
engines/sdk/koder_ipc (Dart) Sibling binding — same protocol, different language
engines/sdk/go/ipc Sibling binding — same protocol, different language

Public API

// Client
let mut client = IpcClient::connect("dek").await?;
let result = client.send("play", Some(json!({"uri": "..."}))).await?;

// Server
let mut srv = IpcServer::new("dek");
srv.handle("greet", |req: Request| async move {
    Ok(json!({"hello": req.params.as_ref()
        .and_then(|p| p["name"].as_str())
        .unwrap_or("world")}))
});
srv.listen().await?;

// Discovery
let apps = discover_services().await?;
let alive = is_running("dek").await;

Error types

Variant Trigger
Error::Io Socket connectreadwrite failure
Error::Json Malformed JSON-RPC message
Error::Remote { code, message } Remote handler returned error
Error::Timeout Request exceeded 10s
Error::Closed Connection closed before response
Error::UnsupportedPlatform Non-LinuxmacOSWindows target

Status

v0.1.0 — builds clean on Linux. Windows named pipe (tokio-named-pipes) and macOS XPC pending.