Skip to content

About

Secure Low-Latency Interactive Messaging Language Bindings

Resources

Code of conduct

Contributing

Security policy

Stars

5 stars

Watchers

0 watching

Forks

SLIM Bindings

OpenSSF Scorecard

Language bindings for SLIM (Secure Low-Latency Interactive Messaging), built on top of UniFFI.

This repository hosts the Rust FFI adapter crate and the per-language wrappers that expose the SLIM data plane to applications written in Python, Go, .NET, Java, Kotlin, Node.js, and React Native.

Layout

Directory Language Distribution
rust/ Rust (UniFFI cdylib; aggregates slim's FFI crates) agntcy-slim-bindings-ffi on crates.io
python/ Python slim-bindings on PyPI
go/ Go (hand-written idiomatic wrappers + setup CLI) Published to agntcy/slim-bindings-go by CI; consumed via go get github.com/agntcy/slim-bindings-go/v3
dotnet/ .NET / C# Agntcy.Slim NuGet package
java/ Java Maven Central
kotlin/ Kotlin Maven Central
node/ Node.js @agntcy/slim-bindings on npm
react-native/ React Native + browser/WebAssembly @agntcy/slim-bindings-react-native on npm

Architecture

The rust/ directory contains agntcy-slim-bindings-ffi, a thin cdylib that re-exports the UniFFI scaffolding of two crates published from agntcy/slim: agntcy-slim-bindings (crates/slim-bindings, the core FFI surface) and agntcy-slim-rpc (crates/rpc, slimrpc). The UniFFI-annotated Rust source that defines the FFI surface lives in those crates. Every other binding consists of:

  1. Code auto-generated by a UniFFI codegen tool (e.g. uniffi-bindgen-go, uniffi-bindgen for Python/Kotlin, uniffi-bindgen-cs for .NET) from the compiled Rust library.
  2. Hand-written idiomatic wrappers (helpers, context-aware APIs, configuration, examples) maintained per-language.

The Rust binding pins exact versions of agntcy-slim-bindings and agntcy-slim-rpc in rust/Cargo.toml; the rest of the SLIM core crates come in transitively from crates.io.

Prerequisites

  • Taskfile for build orchestration
  • Rust toolchain (for building the FFI library)
  • Per-language toolchain for the binding you intend to work on (e.g. Python + uv, Go, .NET, Java, Kotlin/Gradle, Node)

Building

Each binding has its own Taskfile. From the repo root:

# List available tasks
task

# Build the Rust FFI library
(cd rust && task build)

# Build any specific binding (example: Python)
(cd python && task python:bindings:build)

See the README in each binding directory for language-specific instructions.

Releases

All bindings are released together at the same version. Bumping the version in rust/Cargo.toml lets release-plz publish agntcy-slim-bindings-ffi to crates.io and push a slim-bindings-v* tag; that tag triggers release-bindings.yaml, which builds and publishes every language package. The slimrpc compiler (slimrpc-compiler/, crate agntcy-protoc-slimrpc-plugin) is released separately under protoc-slimrpc-plugin-v* tags.

Community & Resources

License

Distributed under Apache 2.0 License. See LICENSE for more information.

Copyright AGNTCY Contributors (https://github.com/agntcy)

About

Secure Low-Latency Interactive Messaging Language Bindings

Resources

Code of conduct

Contributing

Security policy

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages