Skip to main content

SLIM Rust bindings for Python

Project description

SLIM Python Bindings

High-level asynchronous Python bindings for the SLIM data‑plane service (Rust core). They let you embed SLIM directly into your Python application to:

  • Instantiate a local SLIM service (Slim.new)
  • Run a server listener (start / stop a SLIM endpoint)
  • Establish outbound client connections (connect / disconnect)
  • Create, accept, configure, and delete sessions (Point2Point / Group)
  • Publish / receive messages (point‑to‑point or group (channel) based)
  • Manage routing and subscriptions (add / remove routes, subscribe / unsubscribe)
  • Configure identity & trust (shared secret, static JWT, dynamic signing JWT, JWKS auto‑resolve)
  • Integrate tracing / OpenTelemetry

Supported Session Types

Type Description Sticky Peer Metadata MLS (group security)
Point2Point Point-to-point with a fixed destination Yes Yes Yes
Group Many-to-many via channel/topic name (channel moderator can invite/remove participants) N/A Yes Yes

Identity & Authentication

You can choose among multiple identity provider / verifier strategies:

Provider Variant Use Case Notes
IdentityProvider.SharedSecret Local dev / tests Symmetric; not for production
IdentityProvider.StaticJwt Pre-issued token loaded from file No key rotation; simple
IdentityProvider.Jwt Dynamically signed JWT (private key) Supports exp, iss, aud, sub, duration
IdentityVerifier.Jwt Verifies JWT (public key or JWKS auto) Optional claim requirements (require_iss, etc.)
IdentityVerifier.SharedSecret Matches shared secret provider Symmetric validation

JWKS auto‑resolution (when configured in the verifier with autoresolve=True) will:

  1. Try OpenID discovery (/.well-known/openid-configuration) for jwks_uri
  2. Fallback to /.well-known/jwks.json
  3. Cache the key set with a TTL and prefer kid match, else algorithm match.

Quick Start

1. Install

pip install slim-bindings

2. Minimal Receiver Example

import asyncio
import slim_bindings

async def main():
    # 1. Create identity
    provider = slim_bindings.IdentityProvider.SharedSecret(identity="demo", shared_secret="secret")
    verifier = slim_bindings.IdentityVerifier.SharedSecret(identity="demo", shared_secret="secret")

    local_name = slim_bindings.Name("org", "namespace", "demo")
    slim = await slim_bindings.Slim.new(local_name, provider, verifier)

    # 2. (Optionally) connect as a client to a remote endpoint
    # await slim.connect({"endpoint": "http://127.0.0.1:50000", "tls": {"insecure": True}})

    # 3. (Optionally) run a local server (insecure TLS for local dev)
    # await slim.run_server({"endpoint": "127.0.0.1:40000", "tls": {"insecure": True}})

    # 4. Wait for inbound session
    print("Waiting for an inbound session...")
    session = await slim.listen_for_session()

    # 5. Receive one message and reply
    msg_ctx, payload = await session.get_message()
    print("Received:", payload)
    await session.publish_to(msg_ctx, b"echo:" + payload)

    # 6. Clean shutdown
    await slim.delete_session(session)
    await slim.stop_server("127.0.0.1:40000")

asyncio.run(main())

3. Outbound Session (PointToPoint)

remote = slim_bindings.Name("org", "namespace", "peer")
session = await slim.create_session(
    slim_bindings.SessionConfiguration.PointToPoint(
        peer_name=remote,
        mls_enabled=True,
        metadata={"trace_id": "abc123"},
    )
)
await slim.set_route(remote)
await session.publish(b"hello")
ctx, reply = await session.get_message()
print("Reply:", reply)
await slim.delete_session(session)

Tracing / Observability

Initialize tracing (optionally enabling OpenTelemetry export):

await slim_bindings.init_tracing({
    "log_level": "info",
    "opentelemetry": {
        "enabled": True,
        "grpc": {"endpoint": "http://localhost:4317"}
    }
})

Installation

pip install slim-bindings

Include as Dependency

With pyproject.toml

[project]
name = "slim-example"
version = "0.1.0"
description = "Python program using SLIM"
requires-python = ">=3.10"
dependencies = [
    "slim-bindings>=0.6.0"
]

With Poetry

[tool.poetry]
name = "slim-example"
version = "0.1.0"
description = "Python program using SLIM"

[tool.poetry.dependencies]
python = ">=3.10,<3.13"
slim-bindings = ">=0.5.0"

Feature Highlights

Area Capability
Server run_server, stop_server
Client connect, disconnect, automatic subscribe to local name
Routing set_route, remove_route
Subscriptions subscribe, unsubscribe
Sessions create_session, listen_for_session, delete_session, set_session_config
Messaging publish, publish_to, get_message
Identity Shared secret, static JWT, dynamic JWT signing, JWT verification (public key / JWKS)
Tracing Structured logs & optional OpenTelemetry export

Example Programs

Complete runnable examples (point2point, group, server) live in the repository:

https://github.com/agntcy/slim/tree/slim-v0.5.0/data-plane/python/bindings/examples

You can install and invoke them (after building) via:

slim-bindings-examples point2point ...
slim-bindings-examples group ...
slim-bindings-examples slim ...

When to Use Each Session Type

Use Case Recommended Type
Stable peer workflow / stateful Point2Point
Group chat / fan-out Group

Security Notes

  • Prefer asymmetric JWT-based identity in production.
  • Rotate keys periodically and enable require_iss, require_aud, require_sub.
  • Shared secret is only suitable for local tests and prototypes.

License

Apache-2.0 (see repository for full license text).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

slim_bindings-0.7.0.tar.gz (519.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

slim_bindings-0.7.0-cp313-cp313-win_amd64.whl (7.9 MB view details)

Uploaded CPython 3.13Windows x86-64

slim_bindings-0.7.0-cp313-cp313-manylinux_2_38_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.38+ x86-64

slim_bindings-0.7.0-cp313-cp313-manylinux_2_38_aarch64.whl (10.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.38+ ARM64

slim_bindings-0.7.0-cp313-cp313-macosx_11_0_arm64.whl (9.5 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

slim_bindings-0.7.0-cp313-cp313-macosx_10_12_x86_64.whl (9.8 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

slim_bindings-0.7.0-cp312-cp312-win_amd64.whl (7.9 MB view details)

Uploaded CPython 3.12Windows x86-64

slim_bindings-0.7.0-cp312-cp312-manylinux_2_38_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.38+ x86-64

slim_bindings-0.7.0-cp312-cp312-manylinux_2_38_aarch64.whl (10.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.38+ ARM64

slim_bindings-0.7.0-cp312-cp312-macosx_11_0_arm64.whl (9.5 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

slim_bindings-0.7.0-cp312-cp312-macosx_10_12_x86_64.whl (9.8 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

slim_bindings-0.7.0-cp311-cp311-win_amd64.whl (7.9 MB view details)

Uploaded CPython 3.11Windows x86-64

slim_bindings-0.7.0-cp311-cp311-manylinux_2_38_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.38+ x86-64

slim_bindings-0.7.0-cp311-cp311-manylinux_2_38_aarch64.whl (10.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.38+ ARM64

slim_bindings-0.7.0-cp311-cp311-macosx_11_0_arm64.whl (9.5 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

slim_bindings-0.7.0-cp311-cp311-macosx_10_12_x86_64.whl (9.9 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

slim_bindings-0.7.0-cp310-cp310-win_amd64.whl (7.9 MB view details)

Uploaded CPython 3.10Windows x86-64

slim_bindings-0.7.0-cp310-cp310-manylinux_2_38_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.38+ x86-64

slim_bindings-0.7.0-cp310-cp310-manylinux_2_38_aarch64.whl (10.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.38+ ARM64

slim_bindings-0.7.0-cp310-cp310-macosx_11_0_arm64.whl (9.5 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

slim_bindings-0.7.0-cp310-cp310-macosx_10_12_x86_64.whl (9.9 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file slim_bindings-0.7.0.tar.gz.

File metadata

  • Download URL: slim_bindings-0.7.0.tar.gz
  • Upload date:
  • Size: 519.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for slim_bindings-0.7.0.tar.gz
Algorithm Hash digest
SHA256 72f7902f52d02c4611cfcbe9ef9d396ab838ec5d783c1554315005b43893a1c6
MD5 cb63c72cdce0308086e13cf2b2ce1a25
BLAKE2b-256 586b2be58dcfa9f73c453336b926af6d6fe8f63d781846845c757c055d036796

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8a75c28e674a2d643bb3674455435ab152c54102dadb25f2b209e1f310e12d98
MD5 13f9755798c5f61063d973f1786ea3e3
BLAKE2b-256 d177986aa5ad7a7e86a919791ed3890300f4dd7c5ab591fb204fe3b9e7ff693f

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp313-cp313-manylinux_2_38_x86_64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp313-cp313-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 73800d8a7bd08e2d64260e4a03fcf40487124f8d652ddbf8513a7e541811ebf1
MD5 58451ceee764ea09782e0241bef6f0b2
BLAKE2b-256 098e6aa61e5a610f9a25d443c8447931f0ce1f179c694fe2a52ab45637b54c9d

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp313-cp313-manylinux_2_38_aarch64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp313-cp313-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 57fed977a3c2680c948d0017c79baebcada1bd24514f047e98126529ebc9b8a4
MD5 674f999f1518d87d8ec86faeaeaebb81
BLAKE2b-256 d12daa654d352b3b39fef24f58548e60a8e08f511c011902f465db35a812ef43

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 01943332b54130a833a0c719cc80c8d1d5d69bdf5d2520599786e5c53785e95e
MD5 637c1cf8acce93bf097d323eefd43ddf
BLAKE2b-256 d225ac813fdee7c11910639e2fe3ae35cc24ab0347b64159b307ae8316c4db3f

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e49e9120c8270deea130d17c1e61fc40c862dcef4aa37bfeba5505a8b9149d14
MD5 d9da7953df3fa06f99a3a99adf76a3c9
BLAKE2b-256 6b8c9639882ca9458013b75fecb034d2b943d1cf2cee4eb3c2cb64fa1592a7be

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 61e61e62db88fa232c6da45194ed93314cee21a9df9796d4d5dbd1c7bf4a622a
MD5 24cb44d835c4006179405b04f1768abe
BLAKE2b-256 a561904076d746ac8e8d9adf2af07c84c1e7a0bac46262b8b7dd06a559e3735f

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp312-cp312-manylinux_2_38_x86_64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp312-cp312-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 9392946ef24db8ad108c2c2665b43587847f90b449e1355cf98a3235e2087119
MD5 86834caf1979625d7e9f6f9ecba80bb4
BLAKE2b-256 e1fcfd5d0cb461b9f135ad4d03a21dabc150e87b610e89ec6d78c6190cd0ed37

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp312-cp312-manylinux_2_38_aarch64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp312-cp312-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 3d62109320d4408beaeff899d98a015ff402747665bdb7ab01112e7891deb6bf
MD5 ad8c2e158521ba444638b2c87b24ad0c
BLAKE2b-256 876047b13fcfb31b3352a088a49ee8350a1440baa2c5ef47d7f0900690da2f52

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 58b81ffa46e398561eb750c13bbe091797c262c730511f8aa53442c46eeb9a90
MD5 bfe59d9d9a105426d34521484e5b4ac6
BLAKE2b-256 1d747a9bfedefa96eada8ebac589f5b623a47779a6b2a6ca5e2437e3cfacf74d

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 71cad7774081168e011d51b7c319aca90d129c3b3f3e3343ad32587d844fd631
MD5 a73262f07c8f2181b9ef2e8b64d36aae
BLAKE2b-256 281d2de4c777bba9f7e9d885dbba28030d8cb02ded673abe5f5c2fd346af108e

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 72ae47e3c58828c7dc38f611c9640457bc1e9c4798e9bab29a75b6a89c37f7d0
MD5 ee3937467d31cce52ae69abb4252d59c
BLAKE2b-256 c6547e8deb8792561ee1ca4ec839e96c9b34c10b325ae207429338f63566b62e

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp311-cp311-manylinux_2_38_x86_64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp311-cp311-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 9b79d5ebd690c6f11548797ec72fcafc6c67eaa0dda7850af55e3560e8c95c9a
MD5 728f05082a34af440827171e499fe904
BLAKE2b-256 98bc9d4fffcfa0d22d5f65000b78a6620a7bcbda17b808701eaf9bf992ad667c

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp311-cp311-manylinux_2_38_aarch64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp311-cp311-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 c647f69cb448d5f8a0ed48ba084a44cd2cf8bcaae0f0ab27009a559e00d3b828
MD5 609e89f492c909f348c9a938832f69d8
BLAKE2b-256 cb9140749d52f79d15969eb9a62dfd48ea76be01556b50cdd0beecd6f3f01039

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 64f9d7469a4af09149830ec18afa4b481a5446cb9ae2cd1d6f31b9d9607de71d
MD5 fa011c1c6981e5fa5a6c9bcbac11f8d5
BLAKE2b-256 a85f29d20986f569f971d2a621c35f27b77966d6f60c1adc10262279a5a182e7

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5340378ffb85d370ee934a8d1d053175c9085ceede531df89dc4b91294f5fe65
MD5 6b60a7f1831463a3b67135b43c7af6c3
BLAKE2b-256 c99418de86c913b5bb16335d84a36f59ac03232889c5f0116a8f55381fc5ccfd

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4502e7bc2d3731b69b2b1e5ad2f1282b1a0a2b4b5f38cc80988c6cd32f958f9c
MD5 90e98862041102413adea42fd2b22a34
BLAKE2b-256 83e57b9cdac38aae8381f1facddace7e12e0728ed241aa4179921df1d4e9e5a7

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp310-cp310-manylinux_2_38_x86_64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp310-cp310-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 ad8635aa565f527536b47c2178925ea07f682ecaf41421be61bfe8f23ceb910d
MD5 547b1c24698c113279213d25ad9e0c7b
BLAKE2b-256 ec5a40ed17cdd314f4fe32da4ed6771e075a07256281b46473159f15e19b7ce6

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp310-cp310-manylinux_2_38_aarch64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp310-cp310-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 ac11472e80321feda859d8559fd4cd2fbb9ffd4a70868c68ad21aedc0722aa5e
MD5 39164e325e6335153e8da4ff09e9bbfd
BLAKE2b-256 a7baa1c3397675bf20655a930a45d2ab78217e0c8715d0fba0b9b9cf9c69adde

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 916dc1668073c1507a648627fc8bae885d9a0c1beb686a1295a2d5003edfb46f
MD5 15c78b8832e3c5fd94326f9f98a4e380
BLAKE2b-256 143c55d380ac0a3def4ec9b9483e9b00f7a2fd15ea3f57e3d6ffa2310f044074

See more details on using hashes here.

File details

Details for the file slim_bindings-0.7.0-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for slim_bindings-0.7.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 27ba5b25852abf78eabd41a03774c695725d1e1a1b9b527e8c22f894128605bb
MD5 94a2c6c73753a9dc05dd3388babf872b
BLAKE2b-256 6c805d777bdf87cc1af1b2ed3271e4312d666fd942d4c6ba50c29ab0e667b853

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page