From bcd417b8fe1344fb2c98e510331821283807a1db Mon Sep 17 00:00:00 2001 From: Aron Kerekes Date: Fri, 25 Jul 2025 17:49:12 +0200 Subject: [PATCH 01/32] feat: add documentation on slim controller Signed-off-by: Aron Kerekes --- docs/assets/slim-container-controller.png | Bin 0 -> 240146 bytes .../assets/slim-system-context-controller.png | Bin 0 -> 356264 bytes docs/messaging/.index | 3 +- docs/messaging/slim-control-plane.md | 108 ----------- docs/messaging/slim-controller.md | 171 ++++++++++++++++++ docs/messaging/slim-core.md | 113 +----------- 6 files changed, 175 insertions(+), 220 deletions(-) create mode 100644 docs/assets/slim-container-controller.png create mode 100644 docs/assets/slim-system-context-controller.png delete mode 100644 docs/messaging/slim-control-plane.md create mode 100644 docs/messaging/slim-controller.md diff --git a/docs/assets/slim-container-controller.png b/docs/assets/slim-container-controller.png new file mode 100644 index 0000000000000000000000000000000000000000..e31598ebebbde080428c32b3b1bbe7ebe4a9b257 GIT binary patch literal 240146 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

-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

l~<+Lhmg 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�Lg{64oD;7{Hpx{ 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
td57hj7D-i?t?{$3;p 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 literal 0 HcmV?d00001 diff --git a/docs/messaging/.index b/docs/messaging/.index index a8c57534..8761aeb2 100644 --- a/docs/messaging/.index +++ b/docs/messaging/.index @@ -1,3 +1,4 @@ nav: - Secure Low-Latency Interactive Messaging (SLIM): slim-core.md - - SLIM MCP: slim-mcp.md \ No newline at end of file + - SLIM MCP: slim-mcp.md + - SLIM Controller: slim-controller.md \ No newline at end of file diff --git a/docs/messaging/slim-control-plane.md b/docs/messaging/slim-control-plane.md deleted file mode 100644 index 26257dc6..00000000 --- a/docs/messaging/slim-control-plane.md +++ /dev/null @@ -1,108 +0,0 @@ -# Control Plane - -The Control Plane is a cloud-based controller that manages and orchestrates the configuration of SLIM nodes networks. It enables administrators to define, control, and interconnect limited domain networks while facilitating peering relationships with external networks. - -## Architecture - -```mermaid -graph TB - subgraph Control Plane - CP[Central Controller] - PM[Policy Manager] - TM[Topology Manager] - PR[Peering Registry] - end - - subgraph Domain Network - SLIM1[SLIM 1] - SLIM2[SLIM 2] - SLIM3[SLIM 3] - end - - subgraph External Networks - EN1[Network 1] - EN2[Network 2] - end - - CP --> PM - CP --> TM - CP --> PR - TM --> SLIM1 - TM --> SLIM2 - TM --> SLIM3 - PR --> EN1 - PR --> EN2 -``` - -## Key Components - -### Central Controller - -- Provides centralized management interface -- Handles network-wide configuration -- Monitors SLIM nodes health and status -- Implements control policies - -### Policy Manager - -- Defines access control policies -- Manages traffic routing rules -- Sets security parameters -- Controls resource allocation - -### Topology Manager - -- Maintains network topology -- Handles SLIM nodes discovery -- Manages SLIM nodes connections -- Optimizes routing paths - -### Peering Registry - -- Manages peering relationships -- Handles cross-network authentication -- Controls inter-network routing -- Maintains peering agreements - -## Features - -1. **Network Configuration** - - SLIM nodes deployment and configuration - - Network topology management - - Policy distribution - - Resource allocation - -2. **Network Peering** - - Automated peering negotiation - - Cross-network routing - - Federation management - - Trust establishment - -3. **Monitoring and Analytics** - - Network health monitoring - - Performance metrics - - Usage analytics - - Anomaly detection - -4. **Security Management** - - Access control - - Network segmentation - - Encryption requirements - - Security policy enforcement - -## Integration - -The control plane integrates with: - -- SLIM node management interfaces -- Security services -- Monitoring systems -- External network controllers - -## Deployment - -The control plane can be deployed as: - -- Managed cloud service -- Private cloud installation -- Hybrid deployment \ No newline at end of file diff --git a/docs/messaging/slim-controller.md b/docs/messaging/slim-controller.md new file mode 100644 index 00000000..c21477ce --- /dev/null +++ b/docs/messaging/slim-controller.md @@ -0,0 +1,171 @@ +# SLIM Controller + +The SLIM Controller is a central management component that orchestrates and manages SLIM nodes in a distributed messaging system. It provides a unified interface for configuring routes, managing node registration, and coordinating communication between nodes. + +The Controller serves as the central coordination point for SLIM infrastructure, offering both northbound and southbound interfaces. The northbound interface allows external systems and administrators to configure and manage the SLIM network. The southbound interface enables SLIM nodes to register and receive configuration updates. + +## Key Features + +- **Centralized Node Management**: Register and manage multiple SLIM nodes from a single control point. +- **Route Configuration**: Set up message routing between nodes through the Controller. +- **Bidirectional Communication**: Supports both northbound and southbound gRPC interfaces. +- **Connection Orchestration**: Manages connections and subscriptions between SLIM nodes. + +## Architecture + +The Controller implements northbound and southbound gRPC interfaces. + +The northbound interface provides management capabilities for external systems and administrators, such as [slimctl](#slimctl). It includes: + +- **Route Management**: Create, list, and manage message routes between nodes. +- **Connection Management**: Set up and monitor connections between SLIM nodes. +- **Node Discovery**: List registered nodes and their status. + +The southbound interface allows SLIM nodes to register with the Controller and receive configuration updates. It includes: + +- **Node Registration**: Nodes can register themselves with the Controller. +- **Node De-registration**: Nodes can unregister when shutting down. +- **Configuration Distribution**: The Controller can push configuration updates to registered nodes. +- **Bidirectional Communication**: Supports real-time communication between the Controller and nodes. + +### System Context Diagram + +![System Context Diagram](/docs/assets/slim-system-context-controller.png) + +### Container Diagram + +![System Context Diagram](/docs/assets/slim-container-controller.png) + +### Configuring the SLIM Controller + +The Controller can be configured through the `config.yaml` file. An example configuration: + +```yaml +northbound: + httpHost: localhost + httpPort: 50051 + logging: + level: DEBUG + +southbound: + httpHost: localhost + httpPort: 50052 + logging: + level: DEBUG +``` + +## Usage + +## Prerequisites + +Go 1.23.6 or later is required for running the SLIM Controller. + +Task runner is recommended for Taskfile commands. + +### Building the Controller + +The Controller can be built buy running the following task: + +``` +# Build all Controller components +task control-plane:build + +# Or build just the Controller binary +task control-plane:control-plane:build +``` + +### Starting the Controller + +The Controller can be started buy running the following task: + +```bash +# Start the Controller service +task control-plane:control-plane:run +``` + +### Managing Nodes + +Nodes register themselves upon startup with the Controller. Once registered, the controller can communicate with nodes using the same connection. + +Nodes can be managed through the slimctl. For more information, see the [slimctl](#slimctl). + +## slimctl + +`slimctl` is the command-line interface for the SLIM controller. + +### Configuring slimctl + +`slimctl` supports configuration through a configuration file, environment variables, or command-line flags. + +By default, `slimctl` looks for a configuration file at `$HOME/.slimctl/config.yaml` or in the current working directory. + +An example `config.yaml`: + +```yaml +server: "127.0.0.1:46358" +timeout: "10s" +tls: + insecure: false + ca_file: "/path/to/ca.pem" + cert_file: "/path/to/client.pem" + key_file: "/path/to/client.key" +``` + +The `server` endpoint should point to a [SLIM Control](https://github.com/agntcy/slim/tree/main/control-plane/control-plane) endpoint which is a central service managing SLIM node configurations. + +### Commands + +List connection on a SLIM instance: + +`slimctl connection list --node-id=` List connection on a SLIM instance. + +List routes on a SLIM instance: + +`slimctl route list --node-id=` + +Add a route to the SLIM instance: + +`slimctl route add via --node-id=` + +Delete a route from the SLIM instance: + +`slimctl route del via --node-id=` + +Print version information: + +`slimctl version` + +Run `slimctl --help` for more details on flags and usage. + +### Example: Create, Delete Route + +```bash +# Add a new route +cat >> connection_config.json <` + +List routes on a SLIM instance: +`slimctl node-connect route list --server=` + +Add a route to the SLIM instance: +`slimctl node-connect route add via --server=` + +Delete a route from the SLIM instance: +`slimctl node-connect route del via --server=` \ No newline at end of file diff --git a/docs/messaging/slim-core.md b/docs/messaging/slim-core.md index d810d193..d4e2b0bd 100644 --- a/docs/messaging/slim-core.md +++ b/docs/messaging/slim-core.md @@ -7,7 +7,7 @@ The main components of SLIM are: - [Security layer](../messaging/slim-security-layer.md) - [Data plane](../messaging/slim-data-plane.md) - [Session layer](../messaging/slim-session-layer.md) -- [Control plane](../messaging/slim-control-plane.md) +- [Controller](../messaging/slim-controller.md) ## Security Layer @@ -218,113 +218,4 @@ The session layer operates between the transport and presentation layers, provid * Secure session initialization. * Stateful communication. * Error handling and recovery. -* Graceful session termination. - -## Control Plane - -The Control Plane is a cloud-based controller that manages and orchestrates the configuration of SLIM nodes networks. It enables administrators to define, control, and interconnect limited domain networks while facilitating peering relationships with external networks. - -### Architecture - -```mermaid -graph TB - subgraph Control Plane - CP[Central Controller] - PM[Policy Manager] - TM[Topology Manager] - PR[Peering Registry] - end - - subgraph Domain Network - SLIM1[SLIM 1] - SLIM2[SLIM 2] - SLIM3[SLIM 3] - end - - subgraph External Networks - EN1[Network 1] - EN2[Network 2] - end - - CP --> PM - CP --> TM - CP --> PR - TM --> SLIM1 - TM --> SLIM2 - TM --> SLIM3 - PR --> EN1 - PR --> EN2 -``` - -### Key Components - -Central Controller - -- Provides centralized management interface -- Handles network-wide configuration -- Monitors SLIM nodes health and status -- Implements control policies - -Policy Manager - -- Defines access control policies -- Manages traffic routing rules -- Sets security parameters -- Controls resource allocation - -Topology Manager - -- Maintains network topology -- Handles SLIM nodes discovery -- Manages SLIM nodes connections -- Optimizes routing paths - -Peering Registry - -- Manages peering relationships -- Handles cross-network authentication -- Controls inter-network routing -- Maintains peering agreements - -### Features - -1. **Network Configuration** - - SLIM nodes deployment and configuration - - Network topology management - - Policy distribution - - Resource allocation - -2. **Network Peering** - - Automated peering negotiation - - Cross-network routing - - Federation management - - Trust establishment - -3. **Monitoring and Analytics** - - Network health monitoring - - Performance metrics - - Usage analytics - - Anomaly detection - -4. **Security Management** - - Access control - - Network segmentation - - Encryption requirements - - Security policy enforcement - -### Integration - -The control plane integrates with: - -- SLIM node management interfaces -- Security services -- Monitoring systems -- External network controllers - -### Deployment - -The control plane can be deployed as: - -- Managed cloud service -- Private cloud installation -- Hybrid deployment \ No newline at end of file +* Graceful session termination. \ No newline at end of file From f45c62ab5c7c7c6acca214eb072500d0dc3fb623 Mon Sep 17 00:00:00 2001 From: Aron Kerekes Date: Fri, 25 Jul 2025 18:17:24 +0200 Subject: [PATCH 02/32] fix: spelling and minor errors Signed-off-by: Aron Kerekes --- docs/messaging/slim-controller.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/messaging/slim-controller.md b/docs/messaging/slim-controller.md index c21477ce..65e66e9c 100644 --- a/docs/messaging/slim-controller.md +++ b/docs/messaging/slim-controller.md @@ -34,7 +34,7 @@ The southbound interface allows SLIM nodes to register with the Controller and r ### Container Diagram -![System Context Diagram](/docs/assets/slim-container-controller.png) +![Container Diagram](/docs/assets/slim-container-controller.png) ### Configuring the SLIM Controller @@ -64,7 +64,7 @@ Task runner is recommended for Taskfile commands. ### Building the Controller -The Controller can be built buy running the following task: +The Controller can be built by running the following task: ``` # Build all Controller components @@ -76,7 +76,7 @@ task control-plane:control-plane:build ### Starting the Controller -The Controller can be started buy running the following task: +The Controller can be started by running the following task: ```bash # Start the Controller service @@ -87,7 +87,7 @@ task control-plane:control-plane:run Nodes register themselves upon startup with the Controller. Once registered, the controller can communicate with nodes using the same connection. -Nodes can be managed through the slimctl. For more information, see the [slimctl](#slimctl). +Nodes can be managed through slimctl. For more information, see the [slimctl](#slimctl). ## slimctl @@ -156,7 +156,7 @@ For full reference of connection_config.json, see the [client-config-schema.json ### Managing SLIM Nodes Directly -SLIM nodes can be configured to expose a Controller endpoint of a SLIM instance, slimctl can connect to this endpoint to manage the SLIM instance directly by using slimctl `node-control` sub-command. In this case, in the configuration file, the server should point to the SLIM instance endpoint. +SLIM nodes can be configured to expose a Controller endpoint of a SLIM instance, slimctl can connect to this endpoint to manage the SLIM instance directly by using slimctl `node-connect` sub-command. In this case, in the configuration file, the server should point to the SLIM instance endpoint. List connection on a SLIM instance: `slimctl node-connect connection list --server=` From 519e5d8da153cb4f95d8c3fdc22a5c1a918ef370 Mon Sep 17 00:00:00 2001 From: Aron Kerekes Date: Mon, 28 Jul 2025 15:36:39 +0200 Subject: [PATCH 03/32] chore: restructuring slim docs and removing traces of agp Signed-off-by: Aron Kerekes --- docs/csit/csit.md | 14 +++++++------- docs/how-to-guides/.index | 1 - docs/index.md | 2 +- docs/messaging/.index | 1 + docs/{how-to-guides => messaging}/slim-howto.md | 8 ++++---- 5 files changed, 13 insertions(+), 13 deletions(-) rename docs/{how-to-guides => messaging}/slim-howto.md (91%) diff --git a/docs/csit/csit.md b/docs/csit/csit.md index 9098eb8c..037df3cc 100644 --- a/docs/csit/csit.md +++ b/docs/csit/csit.md @@ -11,8 +11,8 @@ The directory structure of the CSIT is the following: ``` csit ├── benchmarks # Benchmark tests -│   ├── agntcy-agp # Benchmark tests for AGP -│   │   ├── Taskfile.yml # Tasks for AGP benchmark tests +│   ├── agntcy-slim # Benchmark tests for SLIM +│   │   ├── Taskfile.yml # Tasks for SLIM benchmark tests │   │   └── tests │   ├── agntcy-dir # Benchmark tests for ADS │   │   ├── Taskfile.yml # Tasks for ADS benchmark tests @@ -21,9 +21,9 @@ csit │   ├── go.sum │   └── Taskfile.yml ├── integrations # Integration tests -│   ├── agntcy-agp # Integration tests for [agntcy/agp](https://github.com/agntcy/agp) +│   ├── agntcy-slim # Integration tests for [agntcy/slim](https://github.com/agntcy/slim) │   │   ├── agentic-apps -│   │   ├── Taskfile.yml # Tasks for AGP integration tests +│   │   ├── Taskfile.yml # Tasks for SLIM integration tests │   │   └── tests │   ├── agntcy-apps # Integration tests for [agntcy/agentic-apps](https://github.com/agntcy/agentic-apps) │   │   ├── agentic-apps @@ -74,7 +74,7 @@ The following tasks are defined: ```bash task: Available tasks for this project: * benchmarks:directory:test: All ADS benchmark test -* benchmarks:gateway:test: All AGP benchmark test +* benchmarks:gateway:test: All SLIM benchmark test * integrations:apps:download:wfsm-bin: Get wfsm binary from GitHub * integrations:apps:get-marketing-campaign-cfgs: Populate marketing campaign config file * integrations:apps:init-submodules: Initialize submodules @@ -95,8 +95,8 @@ task: Available tasks for this project: * integrations:gateway:build:agentic-apps: Build agentic containers * integrations:gateway:test-env:cleanup: Remove agent gateway test env * integrations:gateway:test-env:deploy: Deploy agntcy gateway test env -* integrations:gateway:test:mcp-server: Test MCP over AGP -* integrations:gateway:test:mcp-server:agp-native: Test AGP native MCP server +* integrations:gateway:test:mcp-server: Test MCP over SLIM +* integrations:gateway:test:mcp-server:slim-native: Test SLIM native MCP server * integrations:gateway:test:mcp-server:mcp-proxy: Test MCP server via MCP proxy * integrations:gateway:test:sanity: Sanity gateway test * integrations:kind:create: Create kind cluster diff --git a/docs/how-to-guides/.index b/docs/how-to-guides/.index index 9044e9eb..600c312b 100644 --- a/docs/how-to-guides/.index +++ b/docs/how-to-guides/.index @@ -4,7 +4,6 @@ nav: - Creating an Agent Record: agent-record-guide.md - Getting Started with Identity: identity-quickstart.md - Getting Started with API Bridge Agent: bridge-howto.md - - Getting Started with SLIM: slim-howto.md - Build your first app: mas-creation-tutorial - Building Applications with ACP Threads: thread.md - Building Applications with ACP Interrupts: interrupts.md diff --git a/docs/index.md b/docs/index.md index 3fa0f18b..2dde14cc 100644 --- a/docs/index.md +++ b/docs/index.md @@ -52,7 +52,7 @@ The initial set of IoA components and architecture is outlined below. This is a * **API-bridge Agent** to connect an Agent with any API end-point (tools or data sources) * **Human in the Loop Agent** to interface with human input/output seamlessly. (coming soon) 1. **Messaging SDK**: - * **Agent Gateway Protocol (AGP)**: A protocol that defines the standards and guidelines for secure and efficient network-level communication between AI agents. AGP ensures interoperability and seamless data exchange by specifying message formats, transport mechanisms, and interaction patterns. + * **Secure Low-Latency Interactive Messaging (SLIM)**: A protocol that defines the standards and guidelines for secure and efficient network-level communication between AI agents. SLIM ensures interoperability and seamless data exchange by specifying message formats, transport mechanisms, and interaction patterns. * **Agent Gateway**: Offers handy secure (MLS and quantum safe) network-level communication services to a group of agents (typically those of a given multi-agent application) through SDK/Libraries. It extends gRPC to support  pub/sub interactions in addition to request/reply, streaming, fire & forget and more. 1. **Agent Workflow Server**: Deploys and supervises agent workflows written in various frameworks and makes them available through the Agent Connect Protocol. Such workflows could be multi-agent applications including a mix of toolkit agents, local and remote agents. 1. **Agentic Ensemble Observability & Evaluation**: Telemetry collectors, tools and services to enable multi-agent application observability and evaluation diff --git a/docs/messaging/.index b/docs/messaging/.index index 8761aeb2..87423482 100644 --- a/docs/messaging/.index +++ b/docs/messaging/.index @@ -1,4 +1,5 @@ nav: - Secure Low-Latency Interactive Messaging (SLIM): slim-core.md + - Getting Started with SLIM: slim-howto.md - SLIM MCP: slim-mcp.md - SLIM Controller: slim-controller.md \ No newline at end of file diff --git a/docs/how-to-guides/slim-howto.md b/docs/messaging/slim-howto.md similarity index 91% rename from docs/how-to-guides/slim-howto.md rename to docs/messaging/slim-howto.md index d5550b80..1e5868b0 100644 --- a/docs/how-to-guides/slim-howto.md +++ b/docs/messaging/slim-howto.md @@ -54,23 +54,23 @@ instructions in the golang website. For more information, see (https://crates.io/users/artifacts-agntcy). ```bash -cargo install agp-gw +cargo install slim-gw ``` ### Container Images ```bash -docker pull ghcr.io/agntcy/agp/gw:latest +docker pull ghcr.io/agntcy/slim/gw:latest ``` ### Helm Charts ```bash -helm pull ghcr.io/agntcy/agp/helm/agp:latest +helm pull ghcr.io/agntcy/slim/helm/slim:latest ``` ### Pypi Packages ```bash -pip install agp-bindings +pip install slim-bindings ``` \ No newline at end of file From 6f7be15d627b316597bfea75baa05c811adb170d Mon Sep 17 00:00:00 2001 From: Aron Kerekes Date: Mon, 28 Jul 2025 16:56:08 +0200 Subject: [PATCH 04/32] fix: implementing comments by msardara Signed-off-by: Aron Kerekes --- docs/messaging/slim-controller.md | 87 +++++++++++++++++++++++++++---- 1 file changed, 76 insertions(+), 11 deletions(-) diff --git a/docs/messaging/slim-controller.md b/docs/messaging/slim-controller.md index 65e66e9c..ca9f78cf 100644 --- a/docs/messaging/slim-controller.md +++ b/docs/messaging/slim-controller.md @@ -58,7 +58,7 @@ southbound: ## Prerequisites -Go 1.23.6 or later is required for running the SLIM Controller. +Go 1.24 or later is required for running the SLIM Controller. Task runner is recommended for Taskfile commands. @@ -83,9 +83,47 @@ The Controller can be started by running the following task: task control-plane:control-plane:run ``` +Alternatively, start the Controller with the Docker image: + +``` +docker run ghcr.io/agntcy/slim/control-plane:0.0.1 +``` + +Or use the following to also add a configuration file: + +``` +docker run -v ./config.yaml:/config.yaml ghcr.io/agntcy/slim/control-plane:0.0.1 -c /config.yaml +``` + ### Managing Nodes -Nodes register themselves upon startup with the Controller. Once registered, the controller can communicate with nodes using the same connection. +Nodes can register themselves with the Controller upon startup. Once registered, the controller can communicate with nodes using the same connection. + +To enable self-registration, configure the nodes with the Controller address: + +```yaml + tracing: + log_level: info + display_thread_names: true + display_thread_ids: true + + runtime: + n_cores: 0 + thread_name: "slim-data-plane" + drain_timeout: 10s + + services: + slim/1: + pubsub: + servers: [] + clients: [] + controller: + servers: [] + clients: + - endpoint: "http://:50052" + tls: + insecure: true +``` Nodes can be managed through slimctl. For more information, see the [slimctl](#slimctl). @@ -97,12 +135,12 @@ Nodes can be managed through slimctl. For more information, see the [slimctl](#s `slimctl` supports configuration through a configuration file, environment variables, or command-line flags. -By default, `slimctl` looks for a configuration file at `$HOME/.slimctl/config.yaml` or in the current working directory. +By default, `slimctl` looks for a configuration file at `$HOME/.slimctl/config.yaml` or in the current working directory. An example `config.yaml`: ```yaml -server: "127.0.0.1:46358" +server: "127.0.0.1:50001" timeout: "10s" tls: insecure: false @@ -117,7 +155,7 @@ The `server` endpoint should point to a [SLIM Control](https://github.com/agntcy List connection on a SLIM instance: -`slimctl connection list --node-id=` List connection on a SLIM instance. +`slimctl connection list --node-id=` List routes on a SLIM instance: @@ -125,11 +163,11 @@ List routes on a SLIM instance: Add a route to the SLIM instance: -`slimctl route add via --node-id=` +`slimctl route add via --node-id=` Delete a route from the SLIM instance: -`slimctl route del via --node-id=` +`slimctl route del via --node-id=` Print version information: @@ -141,10 +179,11 @@ Run `slimctl --help` for more details on flags and usage. ```bash # Add a new route -cat >> connection_config.json < connection_config.json <` From dc80fcd70f990ee005bfdd41d84132435985d59a Mon Sep 17 00:00:00 2001 From: Aron Kerekes Date: Tue, 29 Jul 2025 16:48:30 +0200 Subject: [PATCH 05/32] chore: removing duplicated duplicate sections and navigation improvements Signed-off-by: Aron Kerekes --- docs/messaging/.index | 3 + docs/messaging/slim-controller.md | 2 +- docs/messaging/slim-core.md | 223 ++------------------------ docs/messaging/slim-data-plane.md | 4 +- docs/messaging/slim-howto.md | 16 +- docs/messaging/slim-mcp.md | 12 +- docs/messaging/slim-security-layer.md | 10 +- docs/messaging/slim-session-layer.md | 4 +- 8 files changed, 38 insertions(+), 236 deletions(-) diff --git a/docs/messaging/.index b/docs/messaging/.index index 87423482..da968ee6 100644 --- a/docs/messaging/.index +++ b/docs/messaging/.index @@ -2,4 +2,7 @@ nav: - Secure Low-Latency Interactive Messaging (SLIM): slim-core.md - Getting Started with SLIM: slim-howto.md - SLIM MCP: slim-mcp.md + - Security Layer: slim-security-layer.md + - Data Plane: slim-data-plane.md + - Session Layer: slim-session-layer.md - SLIM Controller: slim-controller.md \ No newline at end of file diff --git a/docs/messaging/slim-controller.md b/docs/messaging/slim-controller.md index ca9f78cf..bf907a34 100644 --- a/docs/messaging/slim-controller.md +++ b/docs/messaging/slim-controller.md @@ -1,6 +1,6 @@ # SLIM Controller -The SLIM Controller is a central management component that orchestrates and manages SLIM nodes in a distributed messaging system. It provides a unified interface for configuring routes, managing node registration, and coordinating communication between nodes. +The [SLIM](slim-core.md) Controller is a central management component that orchestrates and manages SLIM nodes in a distributed messaging system. It provides a unified interface for configuring routes, managing node registration, and coordinating communication between nodes. The Controller serves as the central coordination point for SLIM infrastructure, offering both northbound and southbound interfaces. The northbound interface allows external systems and administrators to configure and manage the SLIM network. The southbound interface enables SLIM nodes to register and receive configuration updates. diff --git a/docs/messaging/slim-core.md b/docs/messaging/slim-core.md index d4e2b0bd..7a176f35 100644 --- a/docs/messaging/slim-core.md +++ b/docs/messaging/slim-core.md @@ -1,221 +1,20 @@ # Secure Low-Latency Interactive Messaging (SLIM) -Interconnecting these systems at scale requires meeting strict latency and response time requirements. Secure Low-Latency Interactive Messaging (SLIM) aims to provide a secure, scalable, and user-friendly communication framework that unifies state-of-the-art capabilities from all mentioned frameworks into a single implementation. +Secure Low-Latency Interactive Messaging (SLIM) is a secure, scalable, and user-friendly communication framework that unifies state-of-the-art capabilities from various communication frameworks into a single implementation. + +SLIM provides the following features: + +- **Request-Response**: Supports synchronous communication between agents. +- **Publish-Subscribe**: Allows agents to publish messages to topics and subscribe to receive messages from topics. +- **Fire-and-Forget**: Enables agents to send messages without waiting for a response. +- **Streaming**: Supports both unidirectional and bidirectional streaming. +- **Security**: Employs authentication, authorization, and end-to-end encryption to protect data privacy and integrity. The main components of SLIM are: - [Security layer](../messaging/slim-security-layer.md) - [Data plane](../messaging/slim-data-plane.md) - [Session layer](../messaging/slim-session-layer.md) -- [Controller](../messaging/slim-controller.md) - -## Security Layer - -The Security Layer implements secure group communications using the Message Layer Security (MLS) protocol. This layer ensures end-to-end encryption, authentication, and access control across agent groups within the SLIM ecosystem. - -The security layer leverages MLS to provide: - -- Quantum-safe end-to-end encryption (QSE2EE) for group communications -- Dynamic group membership management -- Forward secrecy and post-compromise security -- Scalable key management for large agent groups - -### Key Components - -Group State Management - -- Maintains cryptographic group state -- Handles member additions and removals -- Manages group epoch changes -- Processes key updates - -Key Schedule - -- Derives encryption keys from group secrets -- Implements MLS key schedule -- Manages key rotations -- Ensures forward secrecy - -Message Protection - -- Encrypts group messages -- Provides integrity protection -- Implements sender authentication -- Handles message sequencing - -Authentication - -- Validates group members -- Verifies message signatures -- Manages identity credentials -- Implements access control - -### Security Properties - -- **Forward Secrecy**: Ensures past communications remain secure if keys are compromised -- **Post-Compromise Security**: Provides security guarantees after member compromise -- **Group Authentication**: Verifies message origin within the group -- **Message Confidentiality**: Protects message content from unauthorized access - -### Integration - -The security layer integrates with: - -- Transport layer for secure message delivery -- Session layer for maintaining secure contexts -- Identity services for credential management - -```mermaid -graph TB - %% Services - AS[Authentication Service] - DS[Delivery Service] - - %% Service Connection - AS <--> DS - - %% Clients and Members - Client1[Client 1]:::client - Client2[Client 2]:::client - Client3[Client 3]:::client - - %% Group Definition - subgraph MLSGroup[MLS Group] - Member1[Member 1]:::member - Member2[Member 2]:::member - end - - %% Client Authentication - Client1 --> AS - Client2 --> AS - Client3 --> AS - - %% Client-DS Connections - Client1 -.-> DS - Client2 --> DS - Client3 --> DS - - %% Member Associations - Client2 === Member1 - Client3 === Member2 - - %% Styles - classDef service fill:#ffffff,stroke:#000000,stroke-width:2px - classDef client fill:#f0f0f0,stroke:#000000,stroke-width:2px - classDef member fill:#e0e0e0,stroke:#000000,stroke-width:2px - - class AS,DS service - class Client1,Client2,Client3 client - class Member1,Member2 member -``` - -## Data Plane - -The Secure Low-Latency Interactive Messaging (SLIM) data plane implements an efficient message routing and delivery system between agents. - -### Message Format - -SLIM messages use a channel-based addressing scheme for content routing: - -```protobuf -message SLIMMessage { - string channel_id = 1; - string message_id = 2; - bytes payload = 3; - MessageMetadata metadata = 4; -} -``` - -### Connection Table - -The connection table maintains agent connectivity information by mapping channel IDs to connected agents and tracking connection state and capabilities. - -### Forwarding Table - -The forwarding table implements intelligent message routing by implementing the following: - -- Maps message patterns to delivery strategies. -- Supports content-based routing. -- Maintains routing metrics and preferences. -- Handles multicast and anycast delivery. - -### Message Buffer - -The message buffer provides temporary storage by implementing the following: - -- Caches messages for reliable delivery. -- Implements store-and-forward when needed. -- Supports message deduplication. -- Handles out-of-order delivery. - -### Data Plane Flow - -```mermaid -graph LR - A([Input]) --> B[Buffer] - B --> C{Forwarding} - C --> D[Connection] - D -->|Direct| E([Output]) - D -->|Multicast| E - D -->|Anycast| E - - style B fill:#ffffff,stroke:#000000,stroke-width:2px - style C fill:#f0f0f0,stroke:#000000,stroke-width:2px - style D fill:#e0e0e0,stroke:#000000,stroke-width:2px -``` - -The diagram shows the message flow through the SLIM data plane components: - -1. Messages enter the system and are processed by the Message Buffer. -2. The Message Buffer handles deduplication and store-and-forward. -3. The Forwarding Table determines routing strategy. -4. The Connection Table manages delivery to connected agents. -5. Messages are delivered through direct, multicast, or anycast methods. - -## Session Layer - -The Secure Low-Latency Interactive Messaging (SLIM) Session Layer manages and maintains the communication state between agents and their respective SLIM nodes. It provides essential services for establishing, maintaining, and terminating sessions between communicating entities in the SLIM ecosystem. - -### Flow Diagram - -```mermaid -sequenceDiagram - participant Agent - participant SessionLayer - participant SLIM - - Agent->>SessionLayer: Initialize Session - SessionLayer->>SLIM: Session Request - SLIM->>SessionLayer: Session Acknowledgment - SessionLayer->>Agent: Session Established - - rect rgb(200, 200, 200) - note right of Agent: Active Session - Agent->>SessionLayer: Data Exchange - SessionLayer->>SLIM: Session-managed Communication - SLIM->>SessionLayer: Response - SessionLayer->>Agent: Processed Response - end - - Agent->>SessionLayer: Terminate Session - SessionLayer->>SLIM: Session Closure - SLIM->>SessionLayer: Closure Acknowledgment - SessionLayer->>Agent: Session Terminated -``` - -### Key Features - -- **Session Establishment**: Handles the initial handshake and connection setup. -- **State Management**: Maintains session context and state information. -- **Security**: Implements session-level security measures and token management. -- **Error Recovery**: Provides mechanisms for handling session interruptions and failures. -- **Session Termination**: Manages graceful session closure and cleanup. - -### Architecture - -The session layer operates between the transport and presentation layers, providing a reliable communication framework for higher-level protocol operations. It ensures the following: +- [SLIMController](../messaging/slim-controller.md) -* Secure session initialization. -* Stateful communication. -* Error handling and recovery. -* Graceful session termination. \ No newline at end of file +To get started with SLIM, see the [Getting Started with SLIM](../messaging/slim-howto.md) guide. \ No newline at end of file diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index 6da096fd..df066a5f 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -1,6 +1,6 @@ # Data Plane -The Secure Low-Latency Interactive Messaging (SLIM) data plane implements an efficient message routing and delivery system between agents. +The [SLIM](slim-core.md) Data Plane implements an efficient message routing and delivery system between agents. ## Message Format @@ -21,7 +21,7 @@ The connection table maintains agent connectivity information by mapping channel ## Forwarding Table -The forwarding table implements intelligent message routing by implementing the following: +The forwarding table implements intelligent message routing by providing the following: - Maps message patterns to delivery strategies. - Supports content-based routing. diff --git a/docs/messaging/slim-howto.md b/docs/messaging/slim-howto.md index 1e5868b0..fdfe823b 100644 --- a/docs/messaging/slim-howto.md +++ b/docs/messaging/slim-howto.md @@ -1,6 +1,6 @@ # Getting Started with SLIM -Secure Low-Latency Interactive Messaging (SLIM) aims to provide a secure, scalable, and user-friendly communication framework that unifies state-of-the-art capabilities from all mentioned frameworks into a single implementation. +SLIM is a secure, scalable, and user-friendly communication framework that unifies state-of-the-art capabilities from all mentioned frameworks into a single implementation. For more information on SLIM, see the [detailed documentation](../messaging/slim-core.md). @@ -13,7 +13,7 @@ installed components in your system: Taskfile is required to run all the build operations. Follow the [installation instructions](https://taskfile.dev/installation/) in the Taskfile -documentations to find the best installation method for your system. +documentation to find the best installation method for your system.
with brew @@ -34,7 +34,7 @@ For more information, see [Taskfile](https://taskfile.dev/). ### Rust -The data-plane components are implemented in rust. Install with rustup: +The data-plane components are implemented in Rust. Install with rustup: ```bash curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh @@ -42,16 +42,16 @@ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh For more information, see [Rust](https://rustup.rs/). -### Golang +### Go -The control-plane components are implemented in Golang. Follow the installation -instructions in the golang website. +The control-plane components are implemented in Go. Follow the installation +instructions in the Go website. ## Artifacts distribution ### Crates -For more information, see (https://crates.io/users/artifacts-agntcy). +For more information, see [crates.io](https://crates.io/users/artifacts-agntcy). ```bash cargo install slim-gw @@ -69,7 +69,7 @@ docker pull ghcr.io/agntcy/slim/gw:latest helm pull ghcr.io/agntcy/slim/helm/slim:latest ``` -### Pypi Packages +### PyPI Packages ```bash pip install slim-bindings diff --git a/docs/messaging/slim-mcp.md b/docs/messaging/slim-mcp.md index b7038fc7..5142fc91 100644 --- a/docs/messaging/slim-mcp.md +++ b/docs/messaging/slim-mcp.md @@ -1,6 +1,6 @@ # SLIM MCP -This tutorial demonstrates how to use SLIM (Secure Low-Latency Interactive Messaging) to transport +This tutorial demonstrates how to use SLIM to transport MCP (Model Context Protocol) messages. SLIM offers two primary integration options, depending on whether you're building a new system or integrating with an existing MCP server: @@ -1054,11 +1054,11 @@ local proxy instance: display_thread_names: true display_thread_ids: true - # Runtime configuration - runtime: - n_cores: 0 - thread_name: "slim-data-plae" - drain_timeout: 10s + # Runtime configuration + runtime: + n_cores: 0 + thread_name: "slim-data-plane" + drain_timeout: 10s # Service configuration for connecting to the SLIM node services: diff --git a/docs/messaging/slim-security-layer.md b/docs/messaging/slim-security-layer.md index 080e7840..fa7cdfc7 100644 --- a/docs/messaging/slim-security-layer.md +++ b/docs/messaging/slim-security-layer.md @@ -1,6 +1,6 @@ # Security Layer -The Security Layer implements secure group communications using the Message Layer Security (MLS) protocol. This layer ensures end-to-end encryption, authentication, and access control across agent groups within the SLIM ecosystem. +The [SLIM](slim-core.md) Security Layer implements secure group communications using the Message Layer Security (MLS) protocol. This layer ensures end-to-end encryption, authentication, and access control across agent groups within the SLIM ecosystem. ## Overview @@ -13,28 +13,28 @@ The security layer leverages MLS to provide: ## Key Components -### 1. Group State Management +### Group State Management - Maintains cryptographic group state - Handles member additions and removals - Manages group epoch changes - Processes key updates -### 2. Key Schedule +### Key Schedule - Derives encryption keys from group secrets - Implements MLS key schedule - Manages key rotations - Ensures forward secrecy -### 3. Message Protection +### Message Protection - Encrypts group messages - Provides integrity protection - Implements sender authentication - Handles message sequencing -### 4. Authentication +### Authentication - Validates group members - Verifies message signatures diff --git a/docs/messaging/slim-session-layer.md b/docs/messaging/slim-session-layer.md index 25354f87..bfe56fbf 100644 --- a/docs/messaging/slim-session-layer.md +++ b/docs/messaging/slim-session-layer.md @@ -1,6 +1,6 @@ # Session Layer -The Secure Low-Latency Interactive Messaging (SLIM) Session Layer manages and maintains the communication state between agents and their respective SLIM nodes. It provides essential services for establishing, maintaining, and terminating sessions between communicating entities in the SLIM ecosystem. +The [SLIM](slim-core.md) Session Layer manages and maintains the communication state between agents and their respective SLIM nodes. It provides essential services for establishing, maintaining, and terminating sessions between communicating entities in the SLIM ecosystem. ## Flow Diagram @@ -18,7 +18,7 @@ sequenceDiagram rect rgb(200, 200, 200) note right of Agent: Active Session Agent->>SessionLayer: Data Exchange - SessionLayer->>SLIM: Session-managed Communication + SessionLayer->>SLIM: Session-Managed Communication SLIM->>SessionLayer: Response SessionLayer->>Agent: Processed Response end From 302c724de949a704aa9388e7ff73aa59e68bb213 Mon Sep 17 00:00:00 2001 From: Aron Kerekes Date: Tue, 29 Jul 2025 17:40:34 +0200 Subject: [PATCH 06/32] adding sectiions on group management and encryption Signed-off-by: Aron Kerekes --- docs/messaging/slim-data-plane.md | 31 +++++++++++++++++++++++++++- docs/messaging/slim-session-layer.md | 1 + 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index df066a5f..4d74c03c 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -59,4 +59,33 @@ The diagram shows the message flow through the SLIM data plane components: 2. The Message Buffer handles deduplication and store-and-forward. 3. The Forwarding Table determines routing strategy. 4. The Connection Table manages delivery to connected agents. -5. Messages are delivered through direct, multicast, or anycast methods. \ No newline at end of file +5. Messages are delivered through direct, multicast, or anycast methods. + +## Group Management and Encryption + +Agents can be grouped together to form a group. To create a group, create a session as moderator. + +The following needs to be defined: + +- `remote_organization` +- `remote_namespace` +- `broadcast_topic` + +Encryption can be enabled through a JSON Web Token (JWT) in the session creation request by setting `mls_enable` to `true`. + +To enable group encryption: + +1. Define 'jwt_identity' +2. Define shared secret +3. Set `mls_enable` to `true` + +The group is created by sending a message to the broadcast topic. + +## Authentication + +Authentication can be configured when running `create_pyservice`. The following needs to be defined through `shared_secret_identity`: + +- `PyIdentityProvider` +- `PyIdentityVerifier` + +The provider is JWT and the verifier is a public key. diff --git a/docs/messaging/slim-session-layer.md b/docs/messaging/slim-session-layer.md index bfe56fbf..c63caf42 100644 --- a/docs/messaging/slim-session-layer.md +++ b/docs/messaging/slim-session-layer.md @@ -36,6 +36,7 @@ sequenceDiagram - **Security**: Implements session-level security measures and token management. - **Error Recovery**: Provides mechanisms for handling session interruptions and failures. - **Session Termination**: Manages graceful session closure and cleanup. +- **Embedded MLS Client**: Provides a client for the Message Layer Security (MLS) protocol. ## Architecture From fb741fb44003f356e4f1305b0e725d64d9143815 Mon Sep 17 00:00:00 2001 From: Michele Papalini Date: Thu, 31 Jul 2025 09:57:26 +0200 Subject: [PATCH 07/32] docs: slim data plane Signed-off-by: Michele Papalini --- docs/messaging/slim-data-plane.md | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index 4d74c03c..cf4ef17a 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -1,10 +1,24 @@ # Data Plane -The [SLIM](slim-core.md) Data Plane implements an efficient message routing and delivery system between agents. +The [SLIM](slim-core.md) Data Plane implements an efficient message routing and delivery system between applications. -## Message Format +## Endpoints and Channel Naming -SLIM messages use a channel-based addressing scheme for content routing: +Describe names with ref to the specs + +## SLIM Sessions + +1:1 with unicast/anycast + +N:N using channels + +## Example: Group Communication + +Tutorial using https://github.com/agntcy/slim/blob/main/data-plane/python-bindings/examples/src/slim_bindings_examples/pubsub.py + +------ + +In SLIM all endpoint have a name messages use a channel-based addressing scheme for content routing: ```protobuf message SLIMMessage { From 230e2a7aeade3e20b02aec11576cd6052f90fd1c Mon Sep 17 00:00:00 2001 From: Michele Papalini Date: Thu, 31 Jul 2025 12:19:26 +0200 Subject: [PATCH 08/32] docs(slim): naming and sessions Signed-off-by: Michele Papalini --- docs/messaging/slim-data-plane.md | 52 ++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index cf4ef17a..9bf96e89 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -4,13 +4,57 @@ The [SLIM](slim-core.md) Data Plane implements an efficient message routing and ## Endpoints and Channel Naming -Describe names with ref to the specs +In SLIM, all endpoints are identified by a routable name. To send a message to a specific endpoint, an application +sends the message to its unique name. Client names follow this pattern: +``` +org/namespace(org)/service/key(client) +``` + +- Organization: The first component identifies the organization that deploys the application. +- Namespace: This can be used to segment endpoint deployments. For example, in a multi-region deployment, the namespace might indicate the application's location. It can be adapted to fit other user requirements as well. +- Service: This component specifies the service exposed by the client. When multiple instances of the same client are deployed (such as several pods in a Kubernetes cluster), the organization, namespace, and service components remain the same for all instances. +- Key (Client): The final component is generated by SLIM and is a hash of the client's identity (e.g., a hash of the public key). This uniquely identifies each specific client instance. + +This naming structure supports both Anycast and Unicast message delivery: + +- Anycast: By specifying only the first three components, a message can be sent to any one of the running clients sharing that name. +- Unicast: By including the fourth component, the message is delivered directly to the specified client instance. + +This approach enables efficient client discovery. More details are provided in the next section. + +In addition to client endpoints, SLIM allows messages to be sent to Channels. A Channel acts as a message group, allowing multiple clients to connect and receive all messages exchanged on that channel. The channel name follows the same structure as client names, but the last component is left empty, as it is shared among all connected clients. + +For further details, please refer to the [SLIM Specification](https://spec.slim.agntcy.org/379-internet-draft-version-0-which-covers-all-main-components/draft-agntcy-slim.html) + +## SLIM Sessions Layer + +The SLIM platform includes a session layer that connects application frameworks to the underlying SLIM messaging infrastructure. This layer provides a simple interface that abstracts the complexity of secure messaging and message distribution from the application. + +The session layer offers several functionalities: + +- Security: All messages in SLIM are encrypted by default using the MLS protocol [MLS protocol](https://www.rfc-editor.org/rfc/rfc9420.html), which guarantees end-to-end encryption even when messages traverse intermediate nodes where TLS connections are terminated. The session layer is responsible for MLS group creation and updates, as well as message encryption and decryption. +- Channel Menagment: The session layer enables clients to be invited to or removed from a channel as needed. +- Message Delivery: The session layer abstracts message passing between applications and the SLIM message distribution network. It handles message formatting, routing, and delivery confirmation, while providing simple send and receive primitives to applications. + +The session layer provides two main APIs: a 1:1 session, where two clients communicate directly, and a group session (N:N), where multiple clients exchange messages on a shared channel. + +### 1:1 Session +A one-to-one (1:1) session is used when an application needs to communicate with a single endpoint. It supports several modes: + +- Reliable or Unreliable: Applications can choose whether the session layer implements retransmission mechanisms for reliable communication or disables them for lower overhead. +- Fire-and-Foreget or Requet/Reply: In fire-and-forget mode, the application sends a message to the other endpoint without waiting for a reply. For reliable sessions, retransmissions are handled transparently by the session layer. In request/reply mode, the session layer sets up a timeout for the request, which is cancelled when the other endpoint replies. +- Anycast or Sticky: In anycast mode, each message can be forwarded to a different client exposing the same service name, which is useful for stateless applications. In sticky mode, the first message is sent using anycast to discover an available client; subsequent messages are sent to the same endpoint. + +By default, all sessions are secure using MLS. In a 1:1 session, the group consists of only two clients, which must maintain some state for the MLS protocol. When MLS is enabled, the session is automatically forced to use sticky mode. + +### N:N Session -## SLIM Sessions +In an N:N (group) session, multiple clients can exchange messages on the same channel. There are two types of clients in this session: a standard participant that can only be invited to the channel and participate in messaging, and a moderator. The moderator is a special client that has the has two main functionalities: -1:1 with unicast/anycast +- Invite/Remove clients: The moderator is the only client that can create a channel and can modify the list of client partecipating to the group communincation +- MLS state management: A channel as also an associated MLS group to guaranty security. The moderator performs the functionalities of the MLS delivery service, that routes MLS messages amoung the group participatns in order to keep the state always updated. -N:N using channels +As for the naming more information on the session layer are availbe in the [SLIM Specifications](https://spec.slim.agntcy.org/379-internet-draft-version-0-which-covers-all-main-components/draft-agntcy-slim.html) ## Example: Group Communication From 7f2aa65248f4073ddfb97c92d6727969d30f2e00 Mon Sep 17 00:00:00 2001 From: Michele Papalini Date: Thu, 31 Jul 2025 12:50:37 +0200 Subject: [PATCH 09/32] docs(slim): naming and sessions Signed-off-by: Michele Papalini --- docs/messaging/.index | 11 ++++++----- docs/messaging/slim-core.md | 6 ++---- docs/messaging/slim-mcp.md | 2 +- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/docs/messaging/.index b/docs/messaging/.index index da968ee6..172edf6b 100644 --- a/docs/messaging/.index +++ b/docs/messaging/.index @@ -1,8 +1,9 @@ nav: - Secure Low-Latency Interactive Messaging (SLIM): slim-core.md - Getting Started with SLIM: slim-howto.md - - SLIM MCP: slim-mcp.md - - Security Layer: slim-security-layer.md - - Data Plane: slim-data-plane.md - - Session Layer: slim-session-layer.md - - SLIM Controller: slim-controller.md \ No newline at end of file + - SLIM messaging Layer: slim-data-plane.md + - SLIM Controller: slim-controller.md + - SLIM and MCP Integration: slim-mcp.md + #- Security Layer: slim-security-layer.md + #- Session Layer: slim-session-layer.md + #- SLIM Controller: slim-controller.md \ No newline at end of file diff --git a/docs/messaging/slim-core.md b/docs/messaging/slim-core.md index 7a176f35..9dbe229a 100644 --- a/docs/messaging/slim-core.md +++ b/docs/messaging/slim-core.md @@ -12,9 +12,7 @@ SLIM provides the following features: The main components of SLIM are: -- [Security layer](../messaging/slim-security-layer.md) -- [Data plane](../messaging/slim-data-plane.md) -- [Session layer](../messaging/slim-session-layer.md) -- [SLIMController](../messaging/slim-controller.md) +- [SLIM Messaging Layer](../messaging/slim-data-plane.md) +- [SLIM Controller](../messaging/slim-controller.md) To get started with SLIM, see the [Getting Started with SLIM](../messaging/slim-howto.md) guide. \ No newline at end of file diff --git a/docs/messaging/slim-mcp.md b/docs/messaging/slim-mcp.md index 5142fc91..8873a8a7 100644 --- a/docs/messaging/slim-mcp.md +++ b/docs/messaging/slim-mcp.md @@ -1,4 +1,4 @@ -# SLIM MCP +# SLIM and MCP integration This tutorial demonstrates how to use SLIM to transport MCP (Model Context Protocol) messages. SLIM offers two primary integration From beab7baf5cf4f38126972b4b1a55bef82aad94ce Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Thu, 31 Jul 2025 13:01:59 +0200 Subject: [PATCH 10/32] docs: group example Signed-off-by: Mauro Sardara --- docs/messaging/slim-data-plane.md | 461 ++++++++++++++++++++++++++---- 1 file changed, 399 insertions(+), 62 deletions(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index 9bf96e89..8e47cb9b 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -1,8 +1,9 @@ # Data Plane -The [SLIM](slim-core.md) Data Plane implements an efficient message routing and delivery system between applications. +The [SLIM](slim-core.md) Data Plane implements an efficient message routing and +delivery system between applications. -## Endpoints and Channel Naming +## Endpoints and Channel Naming In SLIM, all endpoints are identified by a routable name. To send a message to a specific endpoint, an application sends the message to its unique name. Client names follow this pattern: @@ -56,94 +57,430 @@ In an N:N (group) session, multiple clients can exchange messages on the same ch As for the naming more information on the session layer are availbe in the [SLIM Specifications](https://spec.slim.agntcy.org/379-internet-draft-version-0-which-covers-all-main-components/draft-agntcy-slim.html) -## Example: Group Communication +## Example: Group Communication + +This tutorial will show how to set up a secure group communication system using +SLIM. The group will be created by defining a pubsub session with a moderator, +which will invite the other members. Messages will be sent to the shared +channel, where every member can read and write. Messages are end-to-end +encrypted using the [MLS +protocol](https://datatracker.ietf.org/doc/html/rfc9420). + +### Key Features + +- **Name-based Addressing**: In SLIM, all endpoints (channels and clients) have a name, and messages + use a name-based addressing scheme for content routing. +- **Session Management**: Allows for the creation and management of sessions + with moderators. +- **Broadcast Messaging**: Facilitates broadcast messaging to multiple + subscribers. +- **End-to-End Encryption**: Ensures secure communication using the [MLS + protocol](https://datatracker.ietf.org/doc/html/rfc9420). + +### Setting up the SLIM instance + +As all the member of the group will be communicating via a SLIM network, we can set +up a SLIM instance representing the SLIM network. We will use the pre-built docker image for this purpose. + +First execute this command to create the SLIM configuration file. Details about +the configuration can be found in the [SLIM +Repo](https://github.com/agntcy/slim/tree/main/data-plane/config). + +```bash +cat << EOF > ./config.yaml +tracing: + log_level: info + display_thread_names: true + display_thread_ids: true + +runtime: + n_cores: 0 + thread_name: "slim-data-plane" + drain_timeout: 10s + +services: + slim/0: + pubsub: + servers: + - endpoint: "0.0.0.0:46357" + tls: + insecure: true + + clients: [] +EOF +``` + +This configuration will start a SLIM instance with a server listening on port +46357, without TLS encryption for simplicity. Messages will be still encrypted +using the MLS protocol, but the connections between SLIM nodes will not use TLS. In a +production environment, it is recommended to always use TLS and +configure proper authentication and authorization mechanisms. -Tutorial using https://github.com/agntcy/slim/blob/main/data-plane/python-bindings/examples/src/slim_bindings_examples/pubsub.py +You can run the SLIM instance using Docker: ------- +```bash +docker run -it \ + -v ./config.yaml:/config.yaml -p 46357:46357 \ + ghcr.io/agntcy/slim:latest /slim --config /config.yaml +``` -In SLIM all endpoint have a name messages use a channel-based addressing scheme for content routing: +If everything goes fine, you should see an output like this one: -```protobuf -message SLIMMessage { - string channel_id = 1; - string message_id = 2; - bytes payload = 3; - MessageMetadata metadata = 4; -} +``` +2025-07-31T09:07:45.859161Z INFO main ThreadId(01) application_lifecycle: slim: Runtime started +2025-07-31T09:07:45.859213Z INFO main ThreadId(01) application_lifecycle: slim: Starting service: slim/0 +2025-07-31T09:07:45.859624Z INFO main ThreadId(01) application_lifecycle: slim_service: starting service +2025-07-31T09:07:45.859683Z INFO main ThreadId(01) application_lifecycle: slim_service: starting server 0.0.0.0:46357 +2025-07-31T09:07:45.859793Z INFO main ThreadId(01) application_lifecycle: slim_service: server configured: setting it up config=ServerConfig { endpoint: 0.0.0.0:46357, tls_setting: TlsServerConfig { config: Config { ca_file: None, ca_pem: None, include_system_ca_certs_pool: false, cert_file: None, cert_pem: None, key_file: None, key_pem: None, tls_version: "tls1.3", reload_interval: None }, insecure: true, client_ca_file: None, client_ca_pem: None, reload_client_ca_file: false }, http2_only: true, max_frame_size: None, max_concurrent_streams: None, max_header_list_size: None, read_buffer_size: None, write_buffer_size: None, keepalive: KeepaliveServerParameters { max_connection_idle: 3600s, max_connection_age: 7200s, max_connection_age_grace: 300s, time: 120s, timeout: 20s }, auth: None } +2025-07-31T09:07:45.861393Z INFO slim-data-plane ThreadId(11) slim_service: running service ``` -## Connection Table +### Configure clients Identity and implementing the SLIM App -The connection table maintains agent connectivity information by mapping channel IDs to connected agents and tracking connection state and capabilities. +Each member of the group will run a local slim app instance that will be used to +communicate with the SLIM network. Also each member will have a unique identity +that will be used to authenticate the member in the SLIM network. -## Forwarding Table +#### Identity -The forwarding table implements intelligent message routing by providing the following: +Each member of the group must have a unique identity. This is a requirement to +setup the end-to-end encryption using the MLS protocol. The identity can be +represented by a JWT, or a shared secret. For simplicity, we will use a shared +secret. You can find examples using JWT in the [SLIM Repo](https://github.com/agntcy/slim/blob/main/data-plane/python-bindings/examples/src/slim_bindings_examples/common.py#L71-L112). -- Maps message patterns to delivery strategies. -- Supports content-based routing. -- Maintains routing metrics and preferences. -- Handles multicast and anycast delivery. +The python objects managing the identity are called `PyIdentityProvider` and +`PyIdentityVerifier`. The `PyIdentityProvider` is responsible for providing the +identity, while the `PyIdentityVerifier` is responsible for verifying the +identity. -## Message Buffer +```python +from slim_bindings import PyIdentityProvider, PyIdentityVerifier + +def shared_secret_identity(identity, secret): + """ + Create a provider and verifier using a shared secret. + + :param identity: A unique string, identifier of the app. + :param secret: A shared secret used for authentication. + :return: A tuple of (provider, verifier). + """ + provider: PyIdentityProvider = PyIdentityProvider.SharedSecret( + identity=identity, shared_secret=secret + ) + verifier: PyIdentityVerifier = PyIdentityVerifier.SharedSecret( + identity=identity, shared_secret=secret + ) + + return provider, verifier +``` -The message buffer provides temporary storage by implementing the following: +#### SLIM App -- Caches messages for reliable delivery. -- Implements store-and-forward when needed. -- Supports message deduplication. -- Handles out-of-order delivery. +The provider and the verifier will be used to create a local SLIM app, that can +be used to exchange messages with other apps via the SLIM network. -## Data Plane Flow +```python +from slim_bindings import PyName -```mermaid -graph LR - A([Input]) --> B[Buffer] - B --> C{Forwarding} - C --> D[Connection] - D -->|Direct| E([Output]) - D -->|Multicast| E - D -->|Anycast| E +async def create_slim_app(secret, local_name): + """ + Create a SLIM app instance with the given shared secret. + This app will be used to communicate with other SLIM nodes in the network. - style B fill:#ffffff,stroke:#000000,stroke-width:2px - style C fill:#f0f0f0,stroke:#000000,stroke-width:2px - style D fill:#e0e0e0,stroke:#000000,stroke-width:2px + :param secret: A shared secret used for authentication. + :param local_name: A unique name for the SLIM app instance. + It will be used to identify the app in the SLIM network. + :return: A SLIM app instance. + """ + + # Create the provider and verifier using the shared secret. + provider, verifier = shared_secret_identity( + identity=f"{local_name}", + secret=secret, + ) + + # Create the SLIM app. This is a in-process SLIM client that can be used to + # exchange messages with other SLIM nodes in the network. + slim_app = await slim_bindings.Slim.new(local_name, provider, verifier) + + # Connect the SLIM app to the SLIM network. + _ = await slim_app.connect({ + "endpoint": "http://127.0.0.1:46357", + "tls": {"insecure": True} + }) + + # Return the SLIM app instance. + return slim_app ``` -The diagram shows the message flow through the SLIM data plane components: +### Implementing the moderator + +The moderator will be responsible for creating the group and inviting other +members. The moderator will create a session and send an invitation message to +the other members. The invitation will contain the session ID and the channel ID +for the group communication. + +The moderator can be implemented as a Python service using the SLIM SDK. We will +explain the steps to create the moderator service. + +#### Creating the Session and inviting members + +The moderator will create a session and invite other members to join the group. +The session will be identified by a unique session ID, and the group +communication will take place over a specific channel ID. The moderator will be +responsible for managing the session lifecycle, including creating, updating, +and terminating the session as needed. + +As each participant is provided with an identity, setting up MLS for end-to-end +encryption is straightforward. The moderator will create a session with the +`mls_enabled` flag set to `True`, which will enable the MLS protocol for the +session. This ensures that all messages exchanged within the session are +end-to-end encrypted, providing confidentiality and integrity for the group +communication. + +```python +import datetime + +from slim_bindings import PyService, PyName, PySessionConfiguration + +async def create_session_and_invite_members(slim_app: PyService, invitees: list[PyName]): + """ + Create a session with the given session ID and channel ID. + + :param slim_app: The SLIM app instance. + :return: The created session. + """ + + # Define the shared channel for group communication. + # This channel will be used by all members of the group to exchange messages. + shared_channel = PyName("agntcy", "namespace", "group_channel") + + # Create a new session. The group session is a bidirectional streaming session. + # Here is where we enable the MLS protocol for end-to-end encryption. + session_info = await slim_app.create_session( + PySessionConfiguration.Streaming( + slim_bindings.PySessionDirection.BIDIRECTIONAL, + topic=shared_channel, # The channel ID for group communication. + moderator=True, # This session is created by the moderator. + max_retries=5, # Maximum number of retries for reliability. + timeout=datetime.timedelta(seconds=5), # Timeout for message delivery. + mls_enabled=True, # Enable MLS for end-to-end encryption. + ) + ) + + # Invite other members to the session. + for invitee in invitees: + await slim_app.set_route(invitee) # Allow messages to be sent to the invitee. + await slim_app.invite(session_info, invitee) # Send an invitation to the invitee. + + # Return the created session. + return session_info + +async def run_moderator(secret): + """ Run the moderator""" + + # Create the moderator SLIM app instance. + moderator_slim_app = await create_slim_app(secret, local_name=PyName("agntcy", "namespace", "moderator")) + + # Define the invitees for the group session. + invitees = [ + PyName("agntcy", "namespace", "participant1"), + PyName("agntcy", "namespace", "participant2"), + PyName("agntcy", "namespace", "participant3"), + ] + + # Create a session and invite the members. + session_info = await create_session_and_invite_members(moderator_slim_app, invite) + + print(f"Session created: {session_info}") +``` -1. Messages enter the system and are processed by the Message Buffer. -2. The Message Buffer handles deduplication and store-and-forward. -3. The Forwarding Table determines routing strategy. -4. The Connection Table manages delivery to connected agents. -5. Messages are delivered through direct, multicast, or anycast methods. +### Implementing the group participants -## Group Management and Encryption +The group participants will be implemented similarly to the moderator, but they +will not create the session. They will create the SLIM service instance and wait +for invites sent by the moderator. Once they receive the invite, they can read +and write on the shared channel. -Agents can be grouped together to form a group. To create a group, create a session as moderator. +```python +async def run_participant(secret): + participant_slim_app = await create_slim_app(secret, local_name=PyName("agntcy", "namespace", "participant1")) -The following needs to be defined: + # Listen for new sessions opened by moderators + recv_session, _ = await participant_slim_app.receive() -- `remote_organization` -- `remote_namespace` -- `broadcast_topic` + # Session is received, now we can read and write on the shared channel. + print(f"Received session: {recv_session}") -Encryption can be enabled through a JSON Web Token (JWT) in the session creation request by setting `mls_enable` to `true`. + # Receive messages from the session + recv_session, msg_rcv = await participant_slim_app.receive( + session=recv_session.id + ) +``` -To enable group encryption: +### Sending Messages -1. Define 'jwt_identity' -2. Define shared secret -3. Set `mls_enable` to `true` +Once the members are invited and the sessions are created, anyone in the group +can send messages to the shared channel. The messages will be end-to-end +encrypted using the MLS protocol, ensuring that only the members of the group +can read the messages. -The group is created by sending a message to the broadcast topic. +Here we will show how any group member can use the SLIM app to send a message to +the group channel. -## Authentication +```python +async def send_message(slim_app: PyService, session_info, message: str): + """ + Send a message to the group channel. -Authentication can be configured when running `create_pyservice`. The following needs to be defined through `shared_secret_identity`: + :param slim_app: The SLIM app instance. + :param session_info: The session information. + :param message: The message to send. + """ -- `PyIdentityProvider` -- `PyIdentityVerifier` + # Send the message to the shared channel. + await local_app.publish( + session_info, + message.encode(), + broadcast_topic, + ) +``` -The provider is JWT and the verifier is a public key. +### Putting all together + +Here is the complete code to run the moderator and the participants in a single +script. You can run this script to see how the group communication works using +SLIM. + +The same example can be found in the [SLIM examples +folder](https://github.com/agntcy/slim/tree/main/data-plane/python-bindings/examples). +In particular this tutorial is based on the +[pubsub.py](https://github.com/agntcy/slim/blob/main/data-plane/python-bindings/examples/src/slim_bindings_examples/pubsub.py) +example + +#### moderator.py + +```python +import asyncio +from slim_bindings import PyName +from slim_bindings import PyService + +from slim_bindings import PyIdentityProvider, PyIdentityVerifier + +def shared_secret_identity(identity, secret): + """ + Create a provider and verifier using a shared secret. + + :param identity: A unique string, identifier of the app. + :param secret: A shared secret used for authentication. + :return: A tuple of (provider, verifier). + """ + provider: PyIdentityProvider = PyIdentityProvider.SharedSecret( + identity=identity, shared_secret=secret + ) + verifier: PyIdentityVerifier = PyIdentityVerifier.SharedSecret( + identity=identity, shared_secret=secret + ) + + return provider, verifier + +async def create_slim_app(secret, local_name): + """ + Create a SLIM app instance with the given shared secret. + This app will be used to communicate with other SLIM nodes in the network. + + :param secret: A shared secret used for authentication. + :param local_name: A unique name for the SLIM app instance. + It will be used to identify the app in the SLIM network. + :return: A SLIM app instance. + """ + + # Create the provider and verifier using the shared secret. + provider, verifier = shared_secret_identity( + identity=f"{local_name}", + secret=secret, + ) + + # Create the SLIM app. This is a in-process SLIM client that can be used to + # exchange messages with other SLIM nodes in the network. + slim_app = await slim_bindings.Slim.new(local_name, provider, verifier) + + # Connect the SLIM app to the SLIM network. + _ = await slim_app.connect({ + "endpoint": "http://127.0.0.1:46357", + "tls": {"insecure": True} + }) + + # Return the SLIM app instance. + return slim_app + +async def create_session_and_invite_members(slim_app: PyService, invitees: list[PyName]): + """ + Create a session with the given session ID and channel ID. + + :param slim_app: The SLIM app instance. + :return: The created session. + """ + + # Define the shared channel for group communication. + # This channel will be used by all members of the group to exchange messages. + shared_channel = PyName("agntcy", "namespace", "group_channel") + + # Create a new session. The group session is a bidirectional streaming session. + # Here is where we enable the MLS protocol for end-to-end encryption. + session_info = await slim_app.create_session( + PySessionConfiguration.Streaming( + slim_bindings.PySessionDirection.BIDIRECTIONAL, + topic=shared_channel, # The channel ID for group communication. + moderator=True, # This session is created by the moderator. + max_retries=5, # Maximum number of retries for reliability. + timeout=datetime.timedelta(seconds=5), # Timeout for message delivery. + mls_enabled=True, # Enable MLS for end-to-end encryption. + ) + ) + + # Invite other members to the session. + for invitee in invitees: + await slim_app.set_route(invitee) # Allow messages to be sent to the invitee. + await slim_app.invite(session_info, invitee) # Send an invitation to the invitee. + + # Return the created session. + return session_info + +async def send_message(slim_app: PyService, session_info, message: str): + """ + Send a message to the group channel. + + :param slim_app: The SLIM app instance. + :param session_info: The session information. + :param message: The message to send. + """ + + # Send the message to the shared channel. + await local_app.publish( + session_info, + message.encode(), + broadcast_topic, + ) + +async def run_moderator(secret): + """ Run the moderator""" + + # Create the moderator SLIM app instance. + moderator_slim_app = await create_slim_app(secret, local_name=PyName("agntcy", "namespace", "moderator")) + + # Define the invitees for the group session. + invitees = [ + PyName("agntcy", "namespace", "participant1"), + PyName("agntcy", "namespace", "participant2"), + PyName("agntcy", "namespace", "participant3"), + ] + + # Create a session and invite the members. + session_info = await create_session_and_invite_members(moderator_slim_app, invitees) + + print(f"Session created: {session_info}") + + # Send a message to the group channel. + await send_message(moderator_slim_app, session_info, "Hello group!") +``` \ No newline at end of file From 72051c2f4e4d15a57491c1d81e700c2afc6418c8 Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Thu, 31 Jul 2025 13:02:50 +0200 Subject: [PATCH 11/32] docs: group example Signed-off-by: Mauro Sardara --- docs/messaging/slim-data-plane.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index 8e47cb9b..5b2bdd3b 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -483,4 +483,5 @@ async def run_moderator(secret): # Send a message to the group channel. await send_message(moderator_slim_app, session_info, "Hello group!") -``` \ No newline at end of file +``` + From 327f5a6e7f718fce719b90d93dfde4f0afb8b9a9 Mon Sep 17 00:00:00 2001 From: Michele Papalini Date: Thu, 31 Jul 2025 13:04:55 +0200 Subject: [PATCH 12/32] docs(slim): naming Signed-off-by: Michele Papalini --- docs/messaging/slim-data-plane.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index 5b2bdd3b..2c92c6c9 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -1,4 +1,4 @@ -# Data Plane +# SLIM messaging Layer The [SLIM](slim-core.md) Data Plane implements an efficient message routing and delivery system between applications. @@ -11,17 +11,18 @@ sends the message to its unique name. Client names follow this pattern: org/namespace(org)/service/key(client) ``` -- Organization: The first component identifies the organization that deploys the application. -- Namespace: This can be used to segment endpoint deployments. For example, in a multi-region deployment, the namespace might indicate the application's location. It can be adapted to fit other user requirements as well. -- Service: This component specifies the service exposed by the client. When multiple instances of the same client are deployed (such as several pods in a Kubernetes cluster), the organization, namespace, and service components remain the same for all instances. -- Key (Client): The final component is generated by SLIM and is a hash of the client's identity (e.g., a hash of the public key). This uniquely identifies each specific client instance. +- **Organization**: The first component identifies the organization that deploys the application. +- **Namespace**: This can be used to segment endpoint deployments. For example, in a multi-region deployment, the namespace might indicate the application's location. It can be adapted to fit other user requirements as well. +- **Service**: This component specifies the service exposed by the client. When multiple instances of the same client are deployed (such as several pods in a Kubernetes cluster), the organization, namespace, and service components remain the same for all instances. +- **Key(Client)**: The final component is generated by SLIM and is a hash of the client's identity (e.g., a hash of the public key). This uniquely identifies each specific client instance. This naming structure supports both Anycast and Unicast message delivery: -- Anycast: By specifying only the first three components, a message can be sent to any one of the running clients sharing that name. -- Unicast: By including the fourth component, the message is delivered directly to the specified client instance. +- **Anycast**: By specifying only the first three components, a message can be sent to any one of the running clients sharing that name. +- **Unicast**: By including the fourth component, the message is delivered directly to the specified client instance. -This approach enables efficient client discovery. More details are provided in the next section. +This approach enables efficient client discovery in fact the message will be deliver by the SLIM network to a client that is able +to process it, even if the real name of the client is unknow. The anycast forwarding is mostily used in this discovery phase. In addition to client endpoints, SLIM allows messages to be sent to Channels. A Channel acts as a message group, allowing multiple clients to connect and receive all messages exchanged on that channel. The channel name follows the same structure as client names, but the last component is left empty, as it is shared among all connected clients. @@ -42,18 +43,18 @@ The session layer provides two main APIs: a 1:1 session, where two clients commu ### 1:1 Session A one-to-one (1:1) session is used when an application needs to communicate with a single endpoint. It supports several modes: -- Reliable or Unreliable: Applications can choose whether the session layer implements retransmission mechanisms for reliable communication or disables them for lower overhead. -- Fire-and-Foreget or Requet/Reply: In fire-and-forget mode, the application sends a message to the other endpoint without waiting for a reply. For reliable sessions, retransmissions are handled transparently by the session layer. In request/reply mode, the session layer sets up a timeout for the request, which is cancelled when the other endpoint replies. -- Anycast or Sticky: In anycast mode, each message can be forwarded to a different client exposing the same service name, which is useful for stateless applications. In sticky mode, the first message is sent using anycast to discover an available client; subsequent messages are sent to the same endpoint. +- **Reliable or Unreliable**: Applications can choose whether the session layer implements retransmission mechanisms for reliable communication or disables them for lower overhead. +- **Fire-and-Foreget or Requet/Reply**: In fire-and-forget mode, the application sends a message to the other endpoint without waiting for a reply. For reliable sessions, retransmissions are handled transparently by the session layer. In request/reply mode, the session layer sets up a timeout for the request, which is cancelled when the other endpoint replies. +- **Anycast or Sticky**: In anycast mode, each message can be forwarded to a different client exposing the same service name, which is useful for stateless applications. In sticky mode, the first message is sent using anycast to discover an available client; subsequent messages are sent to the same endpoint. -By default, all sessions are secure using MLS. In a 1:1 session, the group consists of only two clients, which must maintain some state for the MLS protocol. When MLS is enabled, the session is automatically forced to use sticky mode. +By default, all sessions are secure using MLS. In a 1:1 session, the group consists of only two clients, which must maintain some state for the MLS protocol. When MLS is enabled, the session is automatically forced to use the sticky mode, so that all the messages will be sent to the same client. ### N:N Session In an N:N (group) session, multiple clients can exchange messages on the same channel. There are two types of clients in this session: a standard participant that can only be invited to the channel and participate in messaging, and a moderator. The moderator is a special client that has the has two main functionalities: -- Invite/Remove clients: The moderator is the only client that can create a channel and can modify the list of client partecipating to the group communincation -- MLS state management: A channel as also an associated MLS group to guaranty security. The moderator performs the functionalities of the MLS delivery service, that routes MLS messages amoung the group participatns in order to keep the state always updated. +- **Invite/Remove clients**: The moderator is the only client that can create a channel and can modify the list of client partecipating to the group communincation +- **MLS state management**: A channel as also an associated MLS group to guaranty security. The moderator performs the functionalities of the MLS delivery service, that routes MLS messages amoung the group participatns in order to keep the state always updated. As for the naming more information on the session layer are availbe in the [SLIM Specifications](https://spec.slim.agntcy.org/379-internet-draft-version-0-which-covers-all-main-components/draft-agntcy-slim.html) From 5b829feca07f35e1fe5be17ee8f06bbcb6e06440 Mon Sep 17 00:00:00 2001 From: Michele Papalini Date: Thu, 31 Jul 2025 13:45:12 +0200 Subject: [PATCH 13/32] docs: one to one example Signed-off-by: Michele Papalini --- docs/messaging/slim-data-plane.md | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index 2c92c6c9..e291709b 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -38,9 +38,9 @@ The session layer offers several functionalities: - Channel Menagment: The session layer enables clients to be invited to or removed from a channel as needed. - Message Delivery: The session layer abstracts message passing between applications and the SLIM message distribution network. It handles message formatting, routing, and delivery confirmation, while providing simple send and receive primitives to applications. -The session layer provides two main APIs: a 1:1 session, where two clients communicate directly, and a group session (N:N), where multiple clients exchange messages on a shared channel. +The session layer provides two main APIs: a 1:1 session, where two clients communicate directly, and a group session, where multiple clients exchange messages on a shared channel. -### 1:1 Session +### One-to-one Session A one-to-one (1:1) session is used when an application needs to communicate with a single endpoint. It supports several modes: - **Reliable or Unreliable**: Applications can choose whether the session layer implements retransmission mechanisms for reliable communication or disables them for lower overhead. @@ -49,7 +49,7 @@ A one-to-one (1:1) session is used when an application needs to communicate with By default, all sessions are secure using MLS. In a 1:1 session, the group consists of only two clients, which must maintain some state for the MLS protocol. When MLS is enabled, the session is automatically forced to use the sticky mode, so that all the messages will be sent to the same client. -### N:N Session +### Group Session In an N:N (group) session, multiple clients can exchange messages on the same channel. There are two types of clients in this session: a standard participant that can only be invited to the channel and participate in messaging, and a moderator. The moderator is a special client that has the has two main functionalities: @@ -218,17 +218,16 @@ async def create_slim_app(secret, local_name): The moderator will be responsible for creating the group and inviting other members. The moderator will create a session and send an invitation message to -the other members. The invitation will contain the session ID and the channel ID +the other members. The invitation will contain the session ID and the channel name for the group communication. -The moderator can be implemented as a Python service using the SLIM SDK. We will -explain the steps to create the moderator service. +The moderator can be implemented as a Python service using the SLIM SDK. #### Creating the Session and inviting members -The moderator will create a session and invite other members to join the group. +The moderator creates a session and invites other members to join the group. The session will be identified by a unique session ID, and the group -communication will take place over a specific channel ID. The moderator will be +communication will take place over a specific channel name. The moderator will be responsible for managing the session lifecycle, including creating, updating, and terminating the session as needed. @@ -486,3 +485,10 @@ async def run_moderator(secret): await send_message(moderator_slim_app, session_info, "Hello group!") ``` +## Example: 1:1 Communincation + +The slim repository also includes examples of 1:1 communication sessions. Using the SLIM SDK for 1:1 sessions is very similar to the approach demonstrated in the group communication example. For reference, see the [fire_and_forget.py](https://github.com/agntcy/slim/blob/main/data-plane/python-bindings/examples/src/slim_bindings_examples/fire_and_forget.py) and [request_reply.py](https://github.com/agntcy/slim/blob/main/data-plane/python-bindings/examples/src/slim_bindings_examples/request_reply.py) files. + +1:1 communication is particularly useful when you want to use SLIM as a transport layer for protocols that are inherently point-to-point, such as MCP or A2A. In these cases, you typically need to communicate with a single server, but you can still benefit from the simplicity and security that the SLIM messaging layer provides. + +For a detailed guide on using MCP on top of SLIM, please refer to the [SLIM and MCP Integration](slim-mcp.md) page From e860683ee86e1fc40d39154b6eac73c7dc5166e0 Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Thu, 31 Jul 2025 13:47:40 +0200 Subject: [PATCH 14/32] docs: tutorial working Signed-off-by: Mauro Sardara --- docs/messaging/slim-data-plane.md | 501 +++++++++++++++++++++--------- 1 file changed, 357 insertions(+), 144 deletions(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index e291709b..c76434ca 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -5,58 +5,115 @@ delivery system between applications. ## Endpoints and Channel Naming -In SLIM, all endpoints are identified by a routable name. To send a message to a specific endpoint, an application -sends the message to its unique name. Client names follow this pattern: +In SLIM, all endpoints are identified by a routable name. To send a message to a +specific endpoint, an application sends the message to its unique name. Client +names follow this pattern: + ``` org/namespace(org)/service/key(client) ``` -- **Organization**: The first component identifies the organization that deploys the application. -- **Namespace**: This can be used to segment endpoint deployments. For example, in a multi-region deployment, the namespace might indicate the application's location. It can be adapted to fit other user requirements as well. -- **Service**: This component specifies the service exposed by the client. When multiple instances of the same client are deployed (such as several pods in a Kubernetes cluster), the organization, namespace, and service components remain the same for all instances. -- **Key(Client)**: The final component is generated by SLIM and is a hash of the client's identity (e.g., a hash of the public key). This uniquely identifies each specific client instance. +- **Organization**: The first component identifies the organization that deploys + the application. +- **Namespace**: This can be used to segment endpoint deployments. For example, + in a multi-region deployment, the namespace might indicate the application's + location. It can be adapted to fit other user requirements as well. +- **Service**: This component specifies the service exposed by the client. When + multiple instances of the same client are deployed (such as several pods in a + Kubernetes cluster), the organization, namespace, and service components + remain the same for all instances. +- **Key(Client)**: The final component is generated by SLIM and is a hash of the + client's identity (e.g., a hash of the public key). This uniquely identifies + each specific client instance. This naming structure supports both Anycast and Unicast message delivery: -- **Anycast**: By specifying only the first three components, a message can be sent to any one of the running clients sharing that name. -- **Unicast**: By including the fourth component, the message is delivered directly to the specified client instance. +- **Anycast**: By specifying only the first three components, a message can be + sent to any one of the running clients sharing that name. +- **Unicast**: By including the fourth component, the message is delivered + directly to the specified client instance. -This approach enables efficient client discovery in fact the message will be deliver by the SLIM network to a client that is able -to process it, even if the real name of the client is unknow. The anycast forwarding is mostily used in this discovery phase. +This approach enables efficient client discovery in fact the message will be +deliver by the SLIM network to a client that is able to process it, even if the +real name of the client is unknow. The anycast forwarding is mostily used in +this discovery phase. -In addition to client endpoints, SLIM allows messages to be sent to Channels. A Channel acts as a message group, allowing multiple clients to connect and receive all messages exchanged on that channel. The channel name follows the same structure as client names, but the last component is left empty, as it is shared among all connected clients. +In addition to client endpoints, SLIM allows messages to be sent to Channels. A +Channel acts as a message group, allowing multiple clients to connect and +receive all messages exchanged on that channel. The channel name follows the +same structure as client names, but the last component is left empty, as it is +shared among all connected clients. -For further details, please refer to the [SLIM Specification](https://spec.slim.agntcy.org/379-internet-draft-version-0-which-covers-all-main-components/draft-agntcy-slim.html) +For further details, please refer to the [SLIM +Specification](https://spec.slim.agntcy.org/379-internet-draft-version-0-which-covers-all-main-components/draft-agntcy-slim.html) ## SLIM Sessions Layer -The SLIM platform includes a session layer that connects application frameworks to the underlying SLIM messaging infrastructure. This layer provides a simple interface that abstracts the complexity of secure messaging and message distribution from the application. +The SLIM platform includes a session layer that connects application frameworks +to the underlying SLIM messaging infrastructure. This layer provides a simple +interface that abstracts the complexity of secure messaging and message +distribution from the application. The session layer offers several functionalities: -- Security: All messages in SLIM are encrypted by default using the MLS protocol [MLS protocol](https://www.rfc-editor.org/rfc/rfc9420.html), which guarantees end-to-end encryption even when messages traverse intermediate nodes where TLS connections are terminated. The session layer is responsible for MLS group creation and updates, as well as message encryption and decryption. -- Channel Menagment: The session layer enables clients to be invited to or removed from a channel as needed. -- Message Delivery: The session layer abstracts message passing between applications and the SLIM message distribution network. It handles message formatting, routing, and delivery confirmation, while providing simple send and receive primitives to applications. - -The session layer provides two main APIs: a 1:1 session, where two clients communicate directly, and a group session, where multiple clients exchange messages on a shared channel. +- Security: All messages in SLIM are encrypted by default using the MLS protocol + [MLS protocol](https://www.rfc-editor.org/rfc/rfc9420.html), which guarantees + end-to-end encryption even when messages traverse intermediate nodes where TLS + connections are terminated. The session layer is responsible for MLS group + creation and updates, as well as message encryption and decryption. +- Channel Menagment: The session layer enables clients to be invited to or + removed from a channel as needed. +- Message Delivery: The session layer abstracts message passing between + applications and the SLIM message distribution network. It handles message + formatting, routing, and delivery confirmation, while providing simple send + and receive primitives to applications. + +The session layer provides two main APIs: a 1:1 session, where two clients +communicate directly, and a group session, where multiple clients exchange +messages on a shared channel. ### One-to-one Session -A one-to-one (1:1) session is used when an application needs to communicate with a single endpoint. It supports several modes: -- **Reliable or Unreliable**: Applications can choose whether the session layer implements retransmission mechanisms for reliable communication or disables them for lower overhead. -- **Fire-and-Foreget or Requet/Reply**: In fire-and-forget mode, the application sends a message to the other endpoint without waiting for a reply. For reliable sessions, retransmissions are handled transparently by the session layer. In request/reply mode, the session layer sets up a timeout for the request, which is cancelled when the other endpoint replies. -- **Anycast or Sticky**: In anycast mode, each message can be forwarded to a different client exposing the same service name, which is useful for stateless applications. In sticky mode, the first message is sent using anycast to discover an available client; subsequent messages are sent to the same endpoint. - -By default, all sessions are secure using MLS. In a 1:1 session, the group consists of only two clients, which must maintain some state for the MLS protocol. When MLS is enabled, the session is automatically forced to use the sticky mode, so that all the messages will be sent to the same client. +A one-to-one (1:1) session is used when an application needs to communicate with +a single endpoint. It supports several modes: + +- **Reliable or Unreliable**: Applications can choose whether the session layer + implements retransmission mechanisms for reliable communication or disables + them for lower overhead. +- **Fire-and-Foreget or Requet/Reply**: In fire-and-forget mode, the application + sends a message to the other endpoint without waiting for a reply. For + reliable sessions, retransmissions are handled transparently by the session + layer. In request/reply mode, the session layer sets up a timeout for the + request, which is cancelled when the other endpoint replies. +- **Anycast or Sticky**: In anycast mode, each message can be forwarded to a + different client exposing the same service name, which is useful for stateless + applications. In sticky mode, the first message is sent using anycast to + discover an available client; subsequent messages are sent to the same + endpoint. + +By default, all sessions are secure using MLS. In a 1:1 session, the group +consists of only two clients, which must maintain some state for the MLS +protocol. When MLS is enabled, the session is automatically forced to use the +sticky mode, so that all the messages will be sent to the same client. ### Group Session -In an N:N (group) session, multiple clients can exchange messages on the same channel. There are two types of clients in this session: a standard participant that can only be invited to the channel and participate in messaging, and a moderator. The moderator is a special client that has the has two main functionalities: +In an N:N (group) session, multiple clients can exchange messages on the same +channel. There are two types of clients in this session: a standard participant +that can only be invited to the channel and participate in messaging, and a +moderator. The moderator is a special client that has the has two main +functionalities: -- **Invite/Remove clients**: The moderator is the only client that can create a channel and can modify the list of client partecipating to the group communincation -- **MLS state management**: A channel as also an associated MLS group to guaranty security. The moderator performs the functionalities of the MLS delivery service, that routes MLS messages amoung the group participatns in order to keep the state always updated. +- **Invite/Remove clients**: The moderator is the only client that can create a + channel and can modify the list of client partecipating to the group + communincation +- **MLS state management**: A channel as also an associated MLS group to + guaranty security. The moderator performs the functionalities of the MLS + delivery service, that routes MLS messages amoung the group participatns in + order to keep the state always updated. -As for the naming more information on the session layer are availbe in the [SLIM Specifications](https://spec.slim.agntcy.org/379-internet-draft-version-0-which-covers-all-main-components/draft-agntcy-slim.html) +As for the naming more information on the session layer are availbe in the [SLIM +Specifications](https://spec.slim.agntcy.org/379-internet-draft-version-0-which-covers-all-main-components/draft-agntcy-slim.html) ## Example: Group Communication @@ -69,8 +126,8 @@ protocol](https://datatracker.ietf.org/doc/html/rfc9420). ### Key Features -- **Name-based Addressing**: In SLIM, all endpoints (channels and clients) have a name, and messages - use a name-based addressing scheme for content routing. +- **Name-based Addressing**: In SLIM, all endpoints (channels and clients) have + a name, and messages use a name-based addressing scheme for content routing. - **Session Management**: Allows for the creation and management of sessions with moderators. - **Broadcast Messaging**: Facilitates broadcast messaging to multiple @@ -80,8 +137,9 @@ protocol](https://datatracker.ietf.org/doc/html/rfc9420). ### Setting up the SLIM instance -As all the member of the group will be communicating via a SLIM network, we can set -up a SLIM instance representing the SLIM network. We will use the pre-built docker image for this purpose. +As all the member of the group will be communicating via a SLIM network, we can +set up a SLIM instance representing the SLIM network. We will use the pre-built +docker image for this purpose. First execute this command to create the SLIM configuration file. Details about the configuration can be found in the [SLIM @@ -113,9 +171,9 @@ EOF This configuration will start a SLIM instance with a server listening on port 46357, without TLS encryption for simplicity. Messages will be still encrypted -using the MLS protocol, but the connections between SLIM nodes will not use TLS. In a -production environment, it is recommended to always use TLS and -configure proper authentication and authorization mechanisms. +using the MLS protocol, but the connections between SLIM nodes will not use TLS. +In a production environment, it is recommended to always use TLS and configure +proper authentication and authorization mechanisms. You can run the SLIM instance using Docker: @@ -147,7 +205,8 @@ that will be used to authenticate the member in the SLIM network. Each member of the group must have a unique identity. This is a requirement to setup the end-to-end encryption using the MLS protocol. The identity can be represented by a JWT, or a shared secret. For simplicity, we will use a shared -secret. You can find examples using JWT in the [SLIM Repo](https://github.com/agntcy/slim/blob/main/data-plane/python-bindings/examples/src/slim_bindings_examples/common.py#L71-L112). +secret. You can find examples using JWT in the [SLIM +Repo](https://github.com/agntcy/slim/blob/main/data-plane/python-bindings/examples/src/slim_bindings_examples/common.py#L71-L112). The python objects managing the identity are called `PyIdentityProvider` and `PyIdentityVerifier`. The `PyIdentityProvider` is responsible for providing the @@ -155,9 +214,9 @@ identity, while the `PyIdentityVerifier` is responsible for verifying the identity. ```python -from slim_bindings import PyIdentityProvider, PyIdentityVerifier - -def shared_secret_identity(identity, secret): +def shared_secret_identity( + identity: str, secret: str +) -> tuple[PyIdentityProvider, PyIdentityVerifier]: """ Create a provider and verifier using a shared secret. @@ -181,9 +240,7 @@ The provider and the verifier will be used to create a local SLIM app, that can be used to exchange messages with other apps via the SLIM network. ```python -from slim_bindings import PyName - -async def create_slim_app(secret, local_name): +async def create_slim_app(secret: str, local_name: PyName) -> PyService: """ Create a SLIM app instance with the given shared secret. This app will be used to communicate with other SLIM nodes in the network. @@ -202,13 +259,12 @@ async def create_slim_app(secret, local_name): # Create the SLIM app. This is a in-process SLIM client that can be used to # exchange messages with other SLIM nodes in the network. - slim_app = await slim_bindings.Slim.new(local_name, provider, verifier) + slim_app = await Slim.new(local_name, provider, verifier) # Connect the SLIM app to the SLIM network. - _ = await slim_app.connect({ - "endpoint": "http://127.0.0.1:46357", - "tls": {"insecure": True} - }) + _ = await slim_app.connect( + {"endpoint": "http://127.0.0.1:46357", "tls": {"insecure": True}} + ) # Return the SLIM app instance. return slim_app @@ -218,18 +274,18 @@ async def create_slim_app(secret, local_name): The moderator will be responsible for creating the group and inviting other members. The moderator will create a session and send an invitation message to -the other members. The invitation will contain the session ID and the channel name -for the group communication. +the other members. The invitation will contain the session ID and the channel +name for the group communication. The moderator can be implemented as a Python service using the SLIM SDK. #### Creating the Session and inviting members -The moderator creates a session and invites other members to join the group. -The session will be identified by a unique session ID, and the group -communication will take place over a specific channel name. The moderator will be -responsible for managing the session lifecycle, including creating, updating, -and terminating the session as needed. +The moderator creates a session and invites other members to join the group. The +session will be identified by a unique session ID, and the group communication +will take place over a specific channel name. The moderator will be responsible +for managing the session lifecycle, including creating, updating, and +terminating the session as needed. As each participant is provided with an identity, setting up MLS for end-to-end encryption is straightforward. The moderator will create a session with the @@ -239,11 +295,9 @@ end-to-end encrypted, providing confidentiality and integrity for the group communication. ```python -import datetime - -from slim_bindings import PyService, PyName, PySessionConfiguration - -async def create_session_and_invite_members(slim_app: PyService, invitees: list[PyName]): +async def create_session_and_invite_members( + slim_app: PyService, invitees: list[PyName] +): """ Create a session with the given session ID and channel ID. @@ -259,40 +313,54 @@ async def create_session_and_invite_members(slim_app: PyService, invitees: list[ # Here is where we enable the MLS protocol for end-to-end encryption. session_info = await slim_app.create_session( PySessionConfiguration.Streaming( - slim_bindings.PySessionDirection.BIDIRECTIONAL, - topic=shared_channel, # The channel ID for group communication. - moderator=True, # This session is created by the moderator. - max_retries=5, # Maximum number of retries for reliability. - timeout=datetime.timedelta(seconds=5), # Timeout for message delivery. - mls_enabled=True, # Enable MLS for end-to-end encryption. + PySessionDirection.BIDIRECTIONAL, + topic=shared_channel, # The channel ID for group communication. + moderator=True, # This session is created by the moderator. + max_retries=5, # Maximum number of retries for reliability. + timeout=datetime.timedelta(seconds=5), # Timeout for message delivery. + mls_enabled=True, # Enable MLS for end-to-end encryption. ) ) + print(f"Session created: {session_info}") + # Invite other members to the session. for invitee in invitees: - await slim_app.set_route(invitee) # Allow messages to be sent to the invitee. - await slim_app.invite(session_info, invitee) # Send an invitation to the invitee. + print(f"Inviting {invitee}") + await slim_app.set_route(invitee) # Allow messages to be sent to the invitee. + await slim_app.invite( + session_info, invitee + ) # Send an invitation to the invitee. # Return the created session. return session_info -async def run_moderator(secret): - """ Run the moderator""" +async def run_moderator(secret: str): + local_name = PyName("agntcy", "namespace", "moderator") # Create the moderator SLIM app instance. - moderator_slim_app = await create_slim_app(secret, local_name=PyName("agntcy", "namespace", "moderator")) + moderator_slim_app = await create_slim_app(secret, local_name) # Define the invitees for the group session. invitees = [ PyName("agntcy", "namespace", "participant1"), - PyName("agntcy", "namespace", "participant2"), - PyName("agntcy", "namespace", "participant3"), ] - # Create a session and invite the members. - session_info = await create_session_and_invite_members(moderator_slim_app, invite) + async with moderator_slim_app: + # Create a session and invite the members. + session_info = await create_session_and_invite_members(moderator_slim_app, invitees) - print(f"Session created: {session_info}") + # Wait for a bit to ensure all participants are ready. + await asyncio.sleep(1) + + # Send a message to the group channel. + await send_message(moderator_slim_app, session_info, "Hello group!") + + # Wait for a message from a participant + _, msg = await moderator_slim_app.receive(session=session_info.id) + + # Print message + print(f"Received message from participant: {msg.decode()}") ``` ### Implementing the group participants @@ -303,47 +371,35 @@ for invites sent by the moderator. Once they receive the invite, they can read and write on the shared channel. ```python -async def run_participant(secret): - participant_slim_app = await create_slim_app(secret, local_name=PyName("agntcy", "namespace", "participant1")) - - # Listen for new sessions opened by moderators - recv_session, _ = await participant_slim_app.receive() +async def run_participant(secret: str): + local_name = PyName("agntcy", "namespace", "participant1") - # Session is received, now we can read and write on the shared channel. - print(f"Received session: {recv_session}") + participant_slim_app = await create_slim_app(secret, local_name) - # Receive messages from the session - recv_session, msg_rcv = await participant_slim_app.receive( - session=recv_session.id - ) -``` + print(f"Listening for sessions - locator: {local_name}") -### Sending Messages + async with participant_slim_app: + # Listen for new sessions opened by moderators + recv_session, _ = await participant_slim_app.receive() -Once the members are invited and the sessions are created, anyone in the group -can send messages to the shared channel. The messages will be end-to-end -encrypted using the MLS protocol, ensuring that only the members of the group -can read the messages. + # Session is received, now we can read and write on the shared channel. + print(f"Received session: {recv_session.id}") -Here we will show how any group member can use the SLIM app to send a message to -the group channel. + # Receive messages from the session + recv_session, msg_rcv = await participant_slim_app.receive(session=recv_session.id) -```python -async def send_message(slim_app: PyService, session_info, message: str): - """ - Send a message to the group channel. + # Print the message + print(f"Received: {msg_rcv.decode()}") - :param slim_app: The SLIM app instance. - :param session_info: The session information. - :param message: The message to send. - """ + # Reply with a message + await participant_slim_app.publish( + recv_session, + f"{msg_rcv.decode()} from participant".encode(), + recv_session.destination_name, + ) - # Send the message to the shared channel. - await local_app.publish( - session_info, - message.encode(), - broadcast_topic, - ) + # Wait to ensure message is sent + await asyncio.sleep(1) ``` ### Putting all together @@ -362,12 +418,23 @@ example ```python import asyncio -from slim_bindings import PyName -from slim_bindings import PyService - -from slim_bindings import PyIdentityProvider, PyIdentityVerifier +import datetime -def shared_secret_identity(identity, secret): +from slim_bindings import ( + Slim, + PyName, + PyService, + PyIdentityProvider, + PyIdentityVerifier, + PySessionConfiguration, + PySessionDirection, + init_tracing, +) + + +def shared_secret_identity( + identity: str, secret: str +) -> tuple[PyIdentityProvider, PyIdentityVerifier]: """ Create a provider and verifier using a shared secret. @@ -384,7 +451,8 @@ def shared_secret_identity(identity, secret): return provider, verifier -async def create_slim_app(secret, local_name): + +async def create_slim_app(secret: str, local_name: PyName) -> PyService: """ Create a SLIM app instance with the given shared secret. This app will be used to communicate with other SLIM nodes in the network. @@ -403,18 +471,20 @@ async def create_slim_app(secret, local_name): # Create the SLIM app. This is a in-process SLIM client that can be used to # exchange messages with other SLIM nodes in the network. - slim_app = await slim_bindings.Slim.new(local_name, provider, verifier) + slim_app = await Slim.new(local_name, provider, verifier) # Connect the SLIM app to the SLIM network. - _ = await slim_app.connect({ - "endpoint": "http://127.0.0.1:46357", - "tls": {"insecure": True} - }) + _ = await slim_app.connect( + {"endpoint": "http://127.0.0.1:46357", "tls": {"insecure": True}} + ) # Return the SLIM app instance. return slim_app -async def create_session_and_invite_members(slim_app: PyService, invitees: list[PyName]): + +async def create_session_and_invite_members( + slim_app: PyService, invitees: list[PyName] +): """ Create a session with the given session ID and channel ID. @@ -430,23 +500,29 @@ async def create_session_and_invite_members(slim_app: PyService, invitees: list[ # Here is where we enable the MLS protocol for end-to-end encryption. session_info = await slim_app.create_session( PySessionConfiguration.Streaming( - slim_bindings.PySessionDirection.BIDIRECTIONAL, - topic=shared_channel, # The channel ID for group communication. - moderator=True, # This session is created by the moderator. - max_retries=5, # Maximum number of retries for reliability. - timeout=datetime.timedelta(seconds=5), # Timeout for message delivery. - mls_enabled=True, # Enable MLS for end-to-end encryption. + PySessionDirection.BIDIRECTIONAL, + topic=shared_channel, # The channel ID for group communication. + moderator=True, # This session is created by the moderator. + max_retries=5, # Maximum number of retries for reliability. + timeout=datetime.timedelta(seconds=5), # Timeout for message delivery. + mls_enabled=True, # Enable MLS for end-to-end encryption. ) ) + print(f"Session created: {session_info}") + # Invite other members to the session. for invitee in invitees: - await slim_app.set_route(invitee) # Allow messages to be sent to the invitee. - await slim_app.invite(session_info, invitee) # Send an invitation to the invitee. + print(f"Inviting {invitee}") + await slim_app.set_route(invitee) # Allow messages to be sent to the invitee. + await slim_app.invite( + session_info, invitee + ) # Send an invitation to the invitee. # Return the created session. return session_info + async def send_message(slim_app: PyService, session_info, message: str): """ Send a message to the group channel. @@ -457,38 +533,175 @@ async def send_message(slim_app: PyService, session_info, message: str): """ # Send the message to the shared channel. - await local_app.publish( + await slim_app.publish( session_info, message.encode(), - broadcast_topic, + PyName("agntcy", "namespace", "group_channel"), ) -async def run_moderator(secret): - """ Run the moderator""" + +async def run_moderator(secret: str): + local_name = PyName("agntcy", "namespace", "moderator") # Create the moderator SLIM app instance. - moderator_slim_app = await create_slim_app(secret, local_name=PyName("agntcy", "namespace", "moderator")) + moderator_slim_app = await create_slim_app(secret, local_name) # Define the invitees for the group session. invitees = [ PyName("agntcy", "namespace", "participant1"), - PyName("agntcy", "namespace", "participant2"), - PyName("agntcy", "namespace", "participant3"), ] - # Create a session and invite the members. - session_info = await create_session_and_invite_members(moderator_slim_app, invitees) + async with moderator_slim_app: + # Create a session and invite the members. + session_info = await create_session_and_invite_members( + moderator_slim_app, invitees + ) - print(f"Session created: {session_info}") + # Wait for a bit to ensure all participants are ready. + await asyncio.sleep(1) + + # Send a message to the group channel. + await send_message(moderator_slim_app, session_info, "Hello group!") + + # Wait for a message from a participant + _, msg = await moderator_slim_app.receive(session=session_info.id) + + # Print message + print(f"Received message from participant: {msg.decode()}") + + +def main(): + try: + asyncio.run(run_moderator("shared_secret")) + except KeyboardInterrupt: + print("Client interrupted by user.") - # Send a message to the group channel. - await send_message(moderator_slim_app, session_info, "Hello group!") ``` -## Example: 1:1 Communincation +#### participant.py -The slim repository also includes examples of 1:1 communication sessions. Using the SLIM SDK for 1:1 sessions is very similar to the approach demonstrated in the group communication example. For reference, see the [fire_and_forget.py](https://github.com/agntcy/slim/blob/main/data-plane/python-bindings/examples/src/slim_bindings_examples/fire_and_forget.py) and [request_reply.py](https://github.com/agntcy/slim/blob/main/data-plane/python-bindings/examples/src/slim_bindings_examples/request_reply.py) files. +```python +import asyncio +import datetime + +from slim_bindings import ( + Slim, + PyName, + PyService, + PyIdentityProvider, + PyIdentityVerifier, + PySessionConfiguration, + PySessionDirection, + PySessionInfo, + init_tracing, +) + + +def shared_secret_identity( + identity: str, secret: str +) -> tuple[PyIdentityProvider, PyIdentityVerifier]: + """ + Create a provider and verifier using a shared secret. -1:1 communication is particularly useful when you want to use SLIM as a transport layer for protocols that are inherently point-to-point, such as MCP or A2A. In these cases, you typically need to communicate with a single server, but you can still benefit from the simplicity and security that the SLIM messaging layer provides. + :param identity: A unique string, identifier of the app. + :param secret: A shared secret used for authentication. + :return: A tuple of (provider, verifier). + """ + provider: PyIdentityProvider = PyIdentityProvider.SharedSecret( + identity=identity, shared_secret=secret + ) + verifier: PyIdentityVerifier = PyIdentityVerifier.SharedSecret( + identity=identity, shared_secret=secret + ) + + return provider, verifier + + +async def create_slim_app(secret: str, local_name: PyName) -> PyService: + """ + Create a SLIM app instance with the given shared secret. + This app will be used to communicate with other SLIM nodes in the network. + + :param secret: A shared secret used for authentication. + :param local_name: A unique name for the SLIM app instance. + It will be used to identify the app in the SLIM network. + :return: A SLIM app instance. + """ + + # Create the provider and verifier using the shared secret. + provider, verifier = shared_secret_identity( + identity=f"{local_name}", + secret=secret, + ) + + # Create the SLIM app. This is a in-process SLIM client that can be used to + # exchange messages with other SLIM nodes in the network. + slim_app = await Slim.new(local_name, provider, verifier) + + # Connect the SLIM app to the SLIM network. + _ = await slim_app.connect( + {"endpoint": "http://127.0.0.1:46357", "tls": {"insecure": True}} + ) + + # Return the SLIM app instance. + return slim_app + + +async def run_participant(secret: str): + local_name = PyName("agntcy", "namespace", "participant1") + + participant_slim_app = await create_slim_app(secret, local_name) + + print(f"Listening for sessions - locator: {local_name}") + + async with participant_slim_app: + # Listen for new sessions opened by moderators + recv_session, _ = await participant_slim_app.receive() + + # Session is received, now we can read and write on the shared channel. + print(f"Received session: {recv_session.id}") + + # Receive messages from the session + recv_session, msg_rcv = await participant_slim_app.receive( + session=recv_session.id + ) + + # Print the message + print(f"Received: {msg_rcv.decode()}") + + # Reply with a message + await participant_slim_app.publish( + recv_session, + f"{msg_rcv.decode()} from participant".encode(), + recv_session.destination_name, + ) + + # Wait to ensure message is sent + await asyncio.sleep(1) + + +def main(): + try: + asyncio.run(run_participant("shared_secret")) + except KeyboardInterrupt: + print("Client interrupted by user.") +``` + +## Example: 1:1 Communincation -For a detailed guide on using MCP on top of SLIM, please refer to the [SLIM and MCP Integration](slim-mcp.md) page +The slim repository also includes examples of 1:1 communication sessions. Using +the SLIM SDK for 1:1 sessions is very similar to the approach demonstrated in +the group communication example. For reference, see the +[fire_and_forget.py](https://github.com/agntcy/slim/blob/main/data-plane/python-bindings/examples/src/slim_bindings_examples/fire_and_forget.py) +and +[request_reply.py](https://github.com/agntcy/slim/blob/main/data-plane/python-bindings/examples/src/slim_bindings_examples/request_reply.py) +files. + +1:1 communication is particularly useful when you want to use SLIM as a +transport layer for protocols that are inherently point-to-point, such as MCP or +A2A. In these cases, you typically need to communicate with a single server, but +you can still benefit from the simplicity and security that the SLIM messaging +layer provides. + +For a detailed guide on using MCP on top of SLIM, please refer to the [SLIM and +MCP Integration](slim-mcp.md) page From 48d7ad7c9cffea7c240c5a4f8cb2df23d510e977 Mon Sep 17 00:00:00 2001 From: Michele Papalini Date: Thu, 31 Jul 2025 13:50:26 +0200 Subject: [PATCH 15/32] docs: typo Signed-off-by: Michele Papalini --- docs/messaging/slim-data-plane.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index c76434ca..2770c4b2 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -687,7 +687,7 @@ def main(): print("Client interrupted by user.") ``` -## Example: 1:1 Communincation +## Example: 1:1 Communication The slim repository also includes examples of 1:1 communication sessions. Using the SLIM SDK for 1:1 sessions is very similar to the approach demonstrated in From e410b3bbce4673613e55ec0e9e9be698fbab3aa6 Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Thu, 31 Jul 2025 13:52:24 +0200 Subject: [PATCH 16/32] docs: tutorial working Signed-off-by: Mauro Sardara --- docs/messaging/slim-data-plane.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index 2770c4b2..4d3af377 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -56,8 +56,8 @@ distribution from the application. The session layer offers several functionalities: -- Security: All messages in SLIM are encrypted by default using the MLS protocol - [MLS protocol](https://www.rfc-editor.org/rfc/rfc9420.html), which guarantees +- Security: All messages in SLIM are encrypted by default using the [MLS + protocol](https://www.rfc-editor.org/rfc/rfc9420.html), which guarantees end-to-end encryption even when messages traverse intermediate nodes where TLS connections are terminated. The session layer is responsible for MLS group creation and updates, as well as message encryption and decryption. From df03f072a2f7dc33b6deec20ac88c3892db90d8b Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Thu, 31 Jul 2025 13:52:59 +0200 Subject: [PATCH 17/32] docs: tutorial working Signed-off-by: Mauro Sardara --- docs/messaging/slim-data-plane.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index 4d3af377..73b01bcf 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -61,7 +61,7 @@ The session layer offers several functionalities: end-to-end encryption even when messages traverse intermediate nodes where TLS connections are terminated. The session layer is responsible for MLS group creation and updates, as well as message encryption and decryption. -- Channel Menagment: The session layer enables clients to be invited to or +- Channel Managment: The session layer enables clients to be invited to or removed from a channel as needed. - Message Delivery: The session layer abstracts message passing between applications and the SLIM message distribution network. It handles message From bd716e2d9dd2542a8ff4405591b13966f20bd4b1 Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Thu, 31 Jul 2025 13:53:31 +0200 Subject: [PATCH 18/32] docs: tutorial working Signed-off-by: Mauro Sardara --- docs/messaging/slim-data-plane.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index 73b01bcf..adc13fc5 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -56,14 +56,14 @@ distribution from the application. The session layer offers several functionalities: -- Security: All messages in SLIM are encrypted by default using the [MLS +- **Security**: All messages in SLIM are encrypted by default using the [MLS protocol](https://www.rfc-editor.org/rfc/rfc9420.html), which guarantees end-to-end encryption even when messages traverse intermediate nodes where TLS connections are terminated. The session layer is responsible for MLS group creation and updates, as well as message encryption and decryption. -- Channel Managment: The session layer enables clients to be invited to or +- **Channel Management**: The session layer enables clients to be invited to or removed from a channel as needed. -- Message Delivery: The session layer abstracts message passing between +- **Message Delivery**: The session layer abstracts message passing between applications and the SLIM message distribution network. It handles message formatting, routing, and delivery confirmation, while providing simple send and receive primitives to applications. From 2fa058d5131130c980592ee5b432b8a6a8a44728 Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Thu, 31 Jul 2025 13:54:33 +0200 Subject: [PATCH 19/32] docs: tutorial working Signed-off-by: Mauro Sardara --- docs/messaging/slim-data-plane.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index adc13fc5..6108274c 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -80,7 +80,7 @@ a single endpoint. It supports several modes: - **Reliable or Unreliable**: Applications can choose whether the session layer implements retransmission mechanisms for reliable communication or disables them for lower overhead. -- **Fire-and-Foreget or Requet/Reply**: In fire-and-forget mode, the application +- **Fire-and-Foreget or Request/Reply**: In fire-and-forget mode, the application sends a message to the other endpoint without waiting for a reply. For reliable sessions, retransmissions are handled transparently by the session layer. In request/reply mode, the session layer sets up a timeout for the From 74a945a7730dd35b4d6910d08d617c5b751e6ecb Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Thu, 31 Jul 2025 13:56:08 +0200 Subject: [PATCH 20/32] docs: tutorial working Signed-off-by: Mauro Sardara --- docs/messaging/slim-data-plane.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index 6108274c..d7cd8412 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -80,11 +80,11 @@ a single endpoint. It supports several modes: - **Reliable or Unreliable**: Applications can choose whether the session layer implements retransmission mechanisms for reliable communication or disables them for lower overhead. -- **Fire-and-Foreget or Request/Reply**: In fire-and-forget mode, the application - sends a message to the other endpoint without waiting for a reply. For - reliable sessions, retransmissions are handled transparently by the session - layer. In request/reply mode, the session layer sets up a timeout for the - request, which is cancelled when the other endpoint replies. +- **Fire-and-Foreget or Request/Reply**: In fire-and-forget mode, the + application sends a message to the other endpoint without waiting for a reply. + For reliable sessions, retransmissions are handled transparently by the + session layer. In request/reply mode, a timeout is setup at application level, + which is cancelled when the other endpoint replies. - **Anycast or Sticky**: In anycast mode, each message can be forwarded to a different client exposing the same service name, which is useful for stateless applications. In sticky mode, the first message is sent using anycast to From 0289d37b1181bb13b0e493e3bce3581d151ea6c6 Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Thu, 31 Jul 2025 13:56:44 +0200 Subject: [PATCH 21/32] docs: tutorial working Signed-off-by: Mauro Sardara --- docs/messaging/slim-data-plane.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index d7cd8412..9d85a106 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -91,7 +91,7 @@ a single endpoint. It supports several modes: discover an available client; subsequent messages are sent to the same endpoint. -By default, all sessions are secure using MLS. In a 1:1 session, the group +By default, all sessions are secured using MLS. In a 1:1 session, the group consists of only two clients, which must maintain some state for the MLS protocol. When MLS is enabled, the session is automatically forced to use the sticky mode, so that all the messages will be sent to the same client. From a9e95ec4b3a68231968a0ffeb841e2f049062a84 Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Thu, 31 Jul 2025 13:58:06 +0200 Subject: [PATCH 22/32] docs: tutorial working Signed-off-by: Mauro Sardara --- docs/messaging/slim-data-plane.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index 9d85a106..73ad261b 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -105,7 +105,7 @@ moderator. The moderator is a special client that has the has two main functionalities: - **Invite/Remove clients**: The moderator is the only client that can create a - channel and can modify the list of client partecipating to the group + channel and can modify the list of client participating to the group communincation - **MLS state management**: A channel as also an associated MLS group to guaranty security. The moderator performs the functionalities of the MLS From c4155556d1c73951a953b00257ed38c1a3abf889 Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Thu, 31 Jul 2025 13:58:34 +0200 Subject: [PATCH 23/32] docs: tutorial working Signed-off-by: Mauro Sardara --- docs/messaging/slim-data-plane.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index 73ad261b..2e7db6ec 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -106,7 +106,7 @@ functionalities: - **Invite/Remove clients**: The moderator is the only client that can create a channel and can modify the list of client participating to the group - communincation + communication. - **MLS state management**: A channel as also an associated MLS group to guaranty security. The moderator performs the functionalities of the MLS delivery service, that routes MLS messages amoung the group participatns in From e8245f774abc8594d965035cb793eadb66f6031d Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Thu, 31 Jul 2025 13:59:16 +0200 Subject: [PATCH 24/32] docs: tutorial working Signed-off-by: Mauro Sardara --- docs/messaging/slim-data-plane.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index 2e7db6ec..b30c2716 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -107,7 +107,7 @@ functionalities: - **Invite/Remove clients**: The moderator is the only client that can create a channel and can modify the list of client participating to the group communication. -- **MLS state management**: A channel as also an associated MLS group to +- **MLS state management**: A channel has also an associated MLS group to guaranty security. The moderator performs the functionalities of the MLS delivery service, that routes MLS messages amoung the group participatns in order to keep the state always updated. From 154f20573013df763f76aa8a405444b204542e9a Mon Sep 17 00:00:00 2001 From: Michele Papalini Date: Thu, 31 Jul 2025 14:04:38 +0200 Subject: [PATCH 25/32] docs: name Signed-off-by: Michele Papalini --- docs/messaging/slim-data-plane.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index b30c2716..e7dfbdf9 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -10,7 +10,7 @@ specific endpoint, an application sends the message to its unique name. Client names follow this pattern: ``` -org/namespace(org)/service/key(client) +org/namespace/service/client ``` - **Organization**: The first component identifies the organization that deploys @@ -22,7 +22,7 @@ org/namespace(org)/service/key(client) multiple instances of the same client are deployed (such as several pods in a Kubernetes cluster), the organization, namespace, and service components remain the same for all instances. -- **Key(Client)**: The final component is generated by SLIM and is a hash of the +- **Client**: The final component is generated by SLIM and is a hash of the client's identity (e.g., a hash of the public key). This uniquely identifies each specific client instance. From a256643fdf72ae136f3dc78c0d8a767d029615b1 Mon Sep 17 00:00:00 2001 From: Michele Papalini Date: Thu, 31 Jul 2025 14:06:18 +0200 Subject: [PATCH 26/32] docs: naming Signed-off-by: Michele Papalini --- docs/messaging/slim-data-plane.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index e7dfbdf9..949fa1e8 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -3,7 +3,7 @@ The [SLIM](slim-core.md) Data Plane implements an efficient message routing and delivery system between applications. -## Endpoints and Channel Naming +## Clients and Channels Naming In SLIM, all endpoints are identified by a routable name. To send a message to a specific endpoint, an application sends the message to its unique name. Client From 503c6b0022e7aee5b4bde6e7e43640d861b77ca5 Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Thu, 31 Jul 2025 14:13:48 +0200 Subject: [PATCH 27/32] docs: tutorial working Signed-off-by: Mauro Sardara --- docs/messaging/.index | 5 +- docs/messaging/slim-security-layer.md | 101 -------------------------- docs/messaging/slim-session-layer.md | 48 ------------ 3 files changed, 1 insertion(+), 153 deletions(-) delete mode 100644 docs/messaging/slim-security-layer.md delete mode 100644 docs/messaging/slim-session-layer.md diff --git a/docs/messaging/.index b/docs/messaging/.index index 172edf6b..d3e095e1 100644 --- a/docs/messaging/.index +++ b/docs/messaging/.index @@ -2,8 +2,5 @@ nav: - Secure Low-Latency Interactive Messaging (SLIM): slim-core.md - Getting Started with SLIM: slim-howto.md - SLIM messaging Layer: slim-data-plane.md - - SLIM Controller: slim-controller.md + - SLIM Controller: slim-controller.md - SLIM and MCP Integration: slim-mcp.md - #- Security Layer: slim-security-layer.md - #- Session Layer: slim-session-layer.md - #- SLIM Controller: slim-controller.md \ No newline at end of file diff --git a/docs/messaging/slim-security-layer.md b/docs/messaging/slim-security-layer.md deleted file mode 100644 index fa7cdfc7..00000000 --- a/docs/messaging/slim-security-layer.md +++ /dev/null @@ -1,101 +0,0 @@ -# Security Layer - -The [SLIM](slim-core.md) Security Layer implements secure group communications using the Message Layer Security (MLS) protocol. This layer ensures end-to-end encryption, authentication, and access control across agent groups within the SLIM ecosystem. - -## Overview - -The security layer leverages MLS to provide: - -- Quantum-safe end-to-end encryption (QSE2EE) for group communications -- Dynamic group membership management -- Forward secrecy and post-compromise security -- Scalable key management for large agent groups - -## Key Components - -### Group State Management - -- Maintains cryptographic group state -- Handles member additions and removals -- Manages group epoch changes -- Processes key updates - -### Key Schedule - -- Derives encryption keys from group secrets -- Implements MLS key schedule -- Manages key rotations -- Ensures forward secrecy - -### Message Protection - -- Encrypts group messages -- Provides integrity protection -- Implements sender authentication -- Handles message sequencing - -### Authentication - -- Validates group members -- Verifies message signatures -- Manages identity credentials -- Implements access control - -## Security Properties - -- **Forward Secrecy**: Ensures past communications remain secure if keys are compromised -- **Post-Compromise Security**: Provides security guarantees after member compromise -- **Group Authentication**: Verifies message origin within the group -- **Message Confidentiality**: Protects message content from unauthorized access - -## Integration - -The security layer integrates with: - -- Transport layer for secure message delivery -- Session layer for maintaining secure contexts -- Identity services for credential management - -```mermaid -graph TB - %% Services - AS[Authentication Service] - DS[Delivery Service] - - %% Service Connection - AS <--> DS - - %% Clients and Members - Client1[Client 1]:::client - Client2[Client 2]:::client - Client3[Client 3]:::client - - %% Group Definition - subgraph MLSGroup[MLS Group] - Member1[Member 1]:::member - Member2[Member 2]:::member - end - - %% Client Authentication - Client1 --> AS - Client2 --> AS - Client3 --> AS - - %% Client-DS Connections - Client1 -.-> DS - Client2 --> DS - Client3 --> DS - - %% Member Associations - Client2 === Member1 - Client3 === Member2 - - %% Styles - classDef service fill:#ffffff,stroke:#000000,stroke-width:2px - classDef client fill:#f0f0f0,stroke:#000000,stroke-width:2px - classDef member fill:#e0e0e0,stroke:#000000,stroke-width:2px - - class AS,DS service - class Client1,Client2,Client3 client - class Member1,Member2 member -``` \ No newline at end of file diff --git a/docs/messaging/slim-session-layer.md b/docs/messaging/slim-session-layer.md deleted file mode 100644 index c63caf42..00000000 --- a/docs/messaging/slim-session-layer.md +++ /dev/null @@ -1,48 +0,0 @@ -# Session Layer - -The [SLIM](slim-core.md) Session Layer manages and maintains the communication state between agents and their respective SLIM nodes. It provides essential services for establishing, maintaining, and terminating sessions between communicating entities in the SLIM ecosystem. - -## Flow Diagram - -```mermaid -sequenceDiagram - participant Agent - participant SessionLayer - participant SLIM - - Agent->>SessionLayer: Initialize Session - SessionLayer->>SLIM: Session Request - SLIM->>SessionLayer: Session Acknowledgment - SessionLayer->>Agent: Session Established - - rect rgb(200, 200, 200) - note right of Agent: Active Session - Agent->>SessionLayer: Data Exchange - SessionLayer->>SLIM: Session-Managed Communication - SLIM->>SessionLayer: Response - SessionLayer->>Agent: Processed Response - end - - Agent->>SessionLayer: Terminate Session - SessionLayer->>SLIM: Session Closure - SLIM->>SessionLayer: Closure Acknowledgment - SessionLayer->>Agent: Session Terminated -``` - -## Key Features - -- **Session Establishment**: Handles the initial handshake and connection setup. -- **State Management**: Maintains session context and state information. -- **Security**: Implements session-level security measures and token management. -- **Error Recovery**: Provides mechanisms for handling session interruptions and failures. -- **Session Termination**: Manages graceful session closure and cleanup. -- **Embedded MLS Client**: Provides a client for the Message Layer Security (MLS) protocol. - -## Architecture - -The session layer operates between the transport and presentation layers, providing a reliable communication framework for higher-level protocol operations. It ensures the following: - -* Secure session initialization. -* Stateful communication. -* Error handling and recovery. -* Graceful session termination. \ No newline at end of file From 4e463627e99c6f3c194c3c8e50829e49fb0a010b Mon Sep 17 00:00:00 2001 From: Michele Papalini Date: Thu, 31 Jul 2025 14:22:19 +0200 Subject: [PATCH 28/32] docs: fix Signed-off-by: Michele Papalini --- docs/messaging/slim-data-plane.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index 949fa1e8..91c5935c 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -6,7 +6,7 @@ delivery system between applications. ## Clients and Channels Naming In SLIM, all endpoints are identified by a routable name. To send a message to a -specific endpoint, an application sends the message to its unique name. Client +specific client, an application sends the message to its unique name. Client names follow this pattern: ``` @@ -15,7 +15,7 @@ org/namespace/service/client - **Organization**: The first component identifies the organization that deploys the application. -- **Namespace**: This can be used to segment endpoint deployments. For example, +- **Namespace**: This can be used to segment client deployments. For example, in a multi-region deployment, the namespace might indicate the application's location. It can be adapted to fit other user requirements as well. - **Service**: This component specifies the service exposed by the client. When @@ -112,7 +112,7 @@ functionalities: delivery service, that routes MLS messages amoung the group participatns in order to keep the state always updated. -As for the naming more information on the session layer are availbe in the [SLIM +As for the naming, more information on the session layer are availbe in the [SLIM Specifications](https://spec.slim.agntcy.org/379-internet-draft-version-0-which-covers-all-main-components/draft-agntcy-slim.html) ## Example: Group Communication From dea6225c21a49b3bc97b8a4700b7c5bcf3e206c5 Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Thu, 31 Jul 2025 14:48:36 +0200 Subject: [PATCH 29/32] docs: tutorial working Signed-off-by: Mauro Sardara --- docs/messaging/slim-core.md | 23 ++-- docs/messaging/slim-howto.md | 204 ++++++++++++++++++++++++++++------- 2 files changed, 180 insertions(+), 47 deletions(-) diff --git a/docs/messaging/slim-core.md b/docs/messaging/slim-core.md index 9dbe229a..01c966da 100644 --- a/docs/messaging/slim-core.md +++ b/docs/messaging/slim-core.md @@ -1,18 +1,27 @@ # Secure Low-Latency Interactive Messaging (SLIM) -Secure Low-Latency Interactive Messaging (SLIM) is a secure, scalable, and user-friendly communication framework that unifies state-of-the-art capabilities from various communication frameworks into a single implementation. +Secure Low-Latency Interactive Messaging (SLIM) is a secure, scalable, and +user-friendly communication framework that unifies state-of-the-art capabilities +from various communication frameworks into a single implementation. SLIM provides the following features: -- **Request-Response**: Supports synchronous communication between agents. -- **Publish-Subscribe**: Allows agents to publish messages to topics and subscribe to receive messages from topics. -- **Fire-and-Forget**: Enables agents to send messages without waiting for a response. -- **Streaming**: Supports both unidirectional and bidirectional streaming. -- **Security**: Employs authentication, authorization, and end-to-end encryption to protect data privacy and integrity. +- **Security**: Employs authentication, authorization, and end-to-end encryption + to protect data privacy and integrity. +- **Scalability**: Designed to handle large-scale deployments with high throughput + and low latency. SLIM nodes can be distributed across heterogeneous environments, + allowing for flexible scaling options. +- **Simplicity**: Offers a simple and intuitive API for developers, making + it easy to integrate into applications. SLIM abstracts complex messaging patterns + and provides a consistent interface for various communication needs. +- **Low Latency**: SLIM's architecture is designed to minimize latency while + maintaining high throughput, making it suitable for applications that require + low-latency interactions, such as AI Agents. The main components of SLIM are: - [SLIM Messaging Layer](../messaging/slim-data-plane.md) - [SLIM Controller](../messaging/slim-controller.md) -To get started with SLIM, see the [Getting Started with SLIM](../messaging/slim-howto.md) guide. \ No newline at end of file +To get started with SLIM, see the [Getting Started with +SLIM](../messaging/slim-howto.md) guide. diff --git a/docs/messaging/slim-howto.md b/docs/messaging/slim-howto.md index fdfe823b..f4c6087f 100644 --- a/docs/messaging/slim-howto.md +++ b/docs/messaging/slim-howto.md @@ -1,76 +1,200 @@ # Getting Started with SLIM -SLIM is a secure, scalable, and user-friendly communication framework that unifies state-of-the-art capabilities from all mentioned frameworks into a single implementation. +SLIM is a secure, scalable, and user-friendly communication framework that +unifies state-of-the-art capabilities from all mentioned frameworks into a +single implementation. -For more information on SLIM, see the [detailed documentation](../messaging/slim-core.md). +For more information on SLIM, see the [detailed +documentation](../messaging/slim-core.md). -## Prerequisites +## Installation -To build the project and work with the code, you need the following -installed components in your system: +SLIM is composed of multiple components, each with its own installation +instructions. Below are the main components and how to install them. -### Taskfile +### SLIM Node -Taskfile is required to run all the build operations. Follow the -[installation instructions](https://taskfile.dev/installation/) in the Taskfile -documentation to find the best installation method for your system. +The SLIM Node is the core component that handles messaging operations. It can be +installed either using the provided container image, with +[cargo](https://github.com/rust-lang/cargo) or with [Helm](https://helm.sh/). -
- with brew +#### Using Docker - ```bash - brew install go-task - ``` -
-
- with curl +```bash +docker pull ghcr.io/agntcy/slim:latest + +cat << EOF > ./config.yaml +tracing: + log_level: info + display_thread_names: true + display_thread_ids: true + +runtime: + n_cores: 0 + thread_name: "slim-data-plane" + drain_timeout: 10s + +services: + slim/0: + pubsub: + servers: + - endpoint: "0.0.0.0:46357" + tls: + insecure: true + + clients: [] +EOF + +docker run -it \ + -v ./config.yaml:/config.yaml -p 46357:46357 \ + ghcr.io/agntcy/slim:latest /slim --config /config.yaml +``` - ```bash - sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b ~/.local/bin - ``` -
+#### Using Cargo -For more information, see [Taskfile](https://taskfile.dev/). +```bash +cargo install agntcy-slim + +cat << EOF > ./config.yaml +tracing: + log_level: info + display_thread_names: true + display_thread_ids: true + +runtime: + n_cores: 0 + thread_name: "slim-data-plane" + drain_timeout: 10s + +services: + slim/0: + pubsub: + servers: + - endpoint: "0.0.0.0:46357" + tls: + insecure: true + + clients: [] +EOF + +~/.cargo/bin/slim --config ./config.yaml +``` -### Rust +#### Using Helm -The data-plane components are implemented in Rust. Install with rustup: +We also provide a Helm chart for deploying SLIM in Kubernetes environments. ```bash -curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +helm pull oci://ghcr.io/agntcy/slim/helm/slim --version v0.1.8 ``` -For more information, see [Rust](https://rustup.rs/). +For information about how to use the Helm chart, see the +[values.yaml](https://github.com/agntcy/slim/blob/main/charts/slim/values.yaml) -### Go +### SLIM Controller -The control-plane components are implemented in Go. Follow the installation -instructions in the Go website. +The SLIM Controller is responsible for managing SLIM Nodes and providing a +user-friendly interface for configuration. It can be installed using the +provided container image or with [Helm](https://helm.sh/). -## Artifacts distribution +### Using Docker -### Crates +```bash +docker pull ghcr.io/agntcy/slim/controller:latest + +cat << EOF > ./slim-controller.yaml +northbound: + httpHost: localhost + httpPort: 50051 + logging: + level: DEBUG + +southbound: + httpHost: localhost + httpPort: 50052 + logging: + level: DEBUG +EOF + +docker run -it \ + -v ./slim-controller.yaml:/config.yaml -p 50051:50051 -p 50052:50052 \ + ghcr.io/agntcy/slim/controller:latest -config /config.yaml +``` -For more information, see [crates.io](https://crates.io/users/artifacts-agntcy). +### Using Helm ```bash -cargo install slim-gw +helm pull oci://ghcr.io/agntcy/slim/helm/slim-controller --version v0.1.3 ``` -### Container Images +### SLIM Python Bindings + +SLIM provides Python bindings for easy integration with Python applications. You +can install the bindings using pip, or you can include them into your app's +pyproject.toml: ```bash -docker pull ghcr.io/agntcy/slim/gw:latest +pip install slim-bindings ``` -### Helm Charts +```toml +[project] +... +dependencies = ["slim-bindings>=0.3.6"] +``` + +### Slimctl + +`slimctl` is a command-line tool for managing SLIM Nodes and Controllers. It can +be installed downloaded from the [releases +page](https://github.com/agntcy/slim/releases/tag/slimctl-v0.1.4). ```bash -helm pull ghcr.io/agntcy/slim/helm/slim:latest +curl -LO https://github.com/agntcy/slim/releases/download/slimctl-v0.1.4/slimctl-linux-amd64 +sudo mv slimctl-linux-amd64 /usr/local/bin/slimctl ``` -### PyPI Packages +## Build the code + +To build the project and work with the code, you need the following installed +components in your system: + +### Taskfile + +Taskfile is required to run all the build operations. Follow the [installation +instructions](https://taskfile.dev/installation/) in the Taskfile documentation +to find the best installation method for your system. + +
+ with brew ```bash -pip install slim-bindings -``` \ No newline at end of file +brew install go-task +``` + +
+
+ with curl + +```bash +sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b ~/.local/bin +``` + +
+ +For more information, see [Taskfile](https://taskfile.dev/). + +### Rust + +The data-plane components are implemented in Rust. Install with rustup: + +```bash +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh +``` + +For more information, see [Rust](https://rustup.rs/). + +### Go + +The control-plane components are implemented in Go. Follow the installation +instructions in the Go website. From 5cdc05384cf250d19ac324ab24cbacf90e7a5dda Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Thu, 31 Jul 2025 14:49:45 +0200 Subject: [PATCH 30/32] docs: tutorial working Signed-off-by: Mauro Sardara --- docs/messaging/slim-howto.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/messaging/slim-howto.md b/docs/messaging/slim-howto.md index f4c6087f..917a805b 100644 --- a/docs/messaging/slim-howto.md +++ b/docs/messaging/slim-howto.md @@ -15,7 +15,7 @@ instructions. Below are the main components and how to install them. ### SLIM Node The SLIM Node is the core component that handles messaging operations. It can be -installed either using the provided container image, with +installed using the provided container image, with [cargo](https://github.com/rust-lang/cargo) or with [Helm](https://helm.sh/). #### Using Docker From 15406332533f0f29f400c7a6e94914b2f17d20f5 Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Thu, 31 Jul 2025 14:53:43 +0200 Subject: [PATCH 31/32] docs: tutorial working Signed-off-by: Mauro Sardara --- docs/messaging/slim-core.md | 4 ++-- docs/messaging/slim-howto.md | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/messaging/slim-core.md b/docs/messaging/slim-core.md index 01c966da..0aec2906 100644 --- a/docs/messaging/slim-core.md +++ b/docs/messaging/slim-core.md @@ -20,8 +20,8 @@ SLIM provides the following features: The main components of SLIM are: -- [SLIM Messaging Layer](../messaging/slim-data-plane.md) -- [SLIM Controller](../messaging/slim-controller.md) +- [SLIM Messaging Layer](./slim-data-plane.md) +- [SLIM Controller](./slim-controller.md) To get started with SLIM, see the [Getting Started with SLIM](../messaging/slim-howto.md) guide. diff --git a/docs/messaging/slim-howto.md b/docs/messaging/slim-howto.md index 917a805b..0900396a 100644 --- a/docs/messaging/slim-howto.md +++ b/docs/messaging/slim-howto.md @@ -143,11 +143,15 @@ pip install slim-bindings dependencies = ["slim-bindings>=0.3.6"] ``` +A tutorial on how use the bindings in an application can be found in the [data-plane +documentation](./slim-data-plane.md). Otherwise examples are available in the +[SLIM Repository](https://github.com/agntcy/slim/tree/main/data-plane/python-bindings/examples). + ### Slimctl `slimctl` is a command-line tool for managing SLIM Nodes and Controllers. It can -be installed downloaded from the [releases -page](https://github.com/agntcy/slim/releases/tag/slimctl-v0.1.4). +be downloaded downloaded from the [releases +page](https://github.com/agntcy/slim/releases/tag/slimctl-v0.1.4) in the SLIM repo. ```bash curl -LO https://github.com/agntcy/slim/releases/download/slimctl-v0.1.4/slimctl-linux-amd64 From 2c9fe0d191e34bd65abb314baba8f2528b77e859 Mon Sep 17 00:00:00 2001 From: Aron Kerekes Date: Thu, 31 Jul 2025 16:10:14 +0200 Subject: [PATCH 32/32] chore: editorial review Signed-off-by: Aron Kerekes --- docs/messaging/slim-data-plane.md | 39 +++++++++++++++---------------- docs/messaging/slim-howto.md | 8 +++---- docs/messaging/slim-mcp.md | 4 ++-- 3 files changed, 25 insertions(+), 26 deletions(-) diff --git a/docs/messaging/slim-data-plane.md b/docs/messaging/slim-data-plane.md index 91c5935c..9466c5b5 100644 --- a/docs/messaging/slim-data-plane.md +++ b/docs/messaging/slim-data-plane.md @@ -1,9 +1,9 @@ -# SLIM messaging Layer +# SLIM Messaging Layer -The [SLIM](slim-core.md) Data Plane implements an efficient message routing and +The [SLIM](slim-core.md) Messaging Layer implements an efficient message routing and delivery system between applications. -## Clients and Channels Naming +## Client and Channel Naming In SLIM, all endpoints are identified by a routable name. To send a message to a specific client, an application sends the message to its unique name. Client @@ -34,8 +34,8 @@ This naming structure supports both Anycast and Unicast message delivery: directly to the specified client instance. This approach enables efficient client discovery in fact the message will be -deliver by the SLIM network to a client that is able to process it, even if the -real name of the client is unknow. The anycast forwarding is mostily used in +delivered by the SLIM network to a client that is able to process it, even if the +real name of the client is unknown. The anycast forwarding is mostly used in this discovery phase. In addition to client endpoints, SLIM allows messages to be sent to Channels. A @@ -80,7 +80,7 @@ a single endpoint. It supports several modes: - **Reliable or Unreliable**: Applications can choose whether the session layer implements retransmission mechanisms for reliable communication or disables them for lower overhead. -- **Fire-and-Foreget or Request/Reply**: In fire-and-forget mode, the +- **Fire-and-Forget or Request/Reply**: In fire-and-forget mode, the application sends a message to the other endpoint without waiting for a reply. For reliable sessions, retransmissions are handled transparently by the session layer. In request/reply mode, a timeout is setup at application level, @@ -101,24 +101,23 @@ sticky mode, so that all the messages will be sent to the same client. In an N:N (group) session, multiple clients can exchange messages on the same channel. There are two types of clients in this session: a standard participant that can only be invited to the channel and participate in messaging, and a -moderator. The moderator is a special client that has the has two main -functionalities: +moderator. The moderator is a special client that has the following functionalities: - **Invite/Remove clients**: The moderator is the only client that can create a - channel and can modify the list of client participating to the group + channel and can modify the list of clients participating in the group communication. - **MLS state management**: A channel has also an associated MLS group to - guaranty security. The moderator performs the functionalities of the MLS - delivery service, that routes MLS messages amoung the group participatns in + guarantee security. The moderator performs the functionalities of the MLS + delivery service, that routes MLS messages among the group participants in order to keep the state always updated. -As for the naming, more information on the session layer are availbe in the [SLIM +As for the naming, for more information on the session layer, see the [SLIM Specifications](https://spec.slim.agntcy.org/379-internet-draft-version-0-which-covers-all-main-components/draft-agntcy-slim.html) ## Example: Group Communication This tutorial will show how to set up a secure group communication system using -SLIM. The group will be created by defining a pubsub session with a moderator, +SLIM. The group will be created by defining a pub-sub session with a moderator, which will invite the other members. Messages will be sent to the shared channel, where every member can read and write. Messages are end-to-end encrypted using the [MLS @@ -135,9 +134,9 @@ protocol](https://datatracker.ietf.org/doc/html/rfc9420). - **End-to-End Encryption**: Ensures secure communication using the [MLS protocol](https://datatracker.ietf.org/doc/html/rfc9420). -### Setting up the SLIM instance +### Setting up the SLIM Instance -As all the member of the group will be communicating via a SLIM network, we can +As all members of the group will be communicating via a SLIM network, we can set up a SLIM instance representing the SLIM network. We will use the pre-built docker image for this purpose. @@ -194,7 +193,7 @@ If everything goes fine, you should see an output like this one: 2025-07-31T09:07:45.861393Z INFO slim-data-plane ThreadId(11) slim_service: running service ``` -### Configure clients Identity and implementing the SLIM App +### Configure Client Identity and Implementing the SLIM App Each member of the group will run a local slim app instance that will be used to communicate with the SLIM network. Also each member will have a unique identity @@ -270,7 +269,7 @@ async def create_slim_app(secret: str, local_name: PyName) -> PyService: return slim_app ``` -### Implementing the moderator +### Implementing the Moderator The moderator will be responsible for creating the group and inviting other members. The moderator will create a session and send an invitation message to @@ -279,7 +278,7 @@ name for the group communication. The moderator can be implemented as a Python service using the SLIM SDK. -#### Creating the Session and inviting members +#### Creating the Session and Inviting Members The moderator creates a session and invites other members to join the group. The session will be identified by a unique session ID, and the group communication @@ -363,7 +362,7 @@ async def run_moderator(secret: str): print(f"Received message from participant: {msg.decode()}") ``` -### Implementing the group participants +### Implementing the Group Participants The group participants will be implemented similarly to the moderator, but they will not create the session. They will create the SLIM service instance and wait @@ -402,7 +401,7 @@ async def run_participant(secret: str): await asyncio.sleep(1) ``` -### Putting all together +### Putting All Together Here is the complete code to run the moderator and the participants in a single script. You can run this script to see how the group communication works using diff --git a/docs/messaging/slim-howto.md b/docs/messaging/slim-howto.md index 0900396a..9d7cf762 100644 --- a/docs/messaging/slim-howto.md +++ b/docs/messaging/slim-howto.md @@ -5,7 +5,7 @@ unifies state-of-the-art capabilities from all mentioned frameworks into a single implementation. For more information on SLIM, see the [detailed -documentation](../messaging/slim-core.md). +documentation](./slim-core.md). ## Installation @@ -143,14 +143,14 @@ pip install slim-bindings dependencies = ["slim-bindings>=0.3.6"] ``` -A tutorial on how use the bindings in an application can be found in the [data-plane -documentation](./slim-data-plane.md). Otherwise examples are available in the +A tutorial on how to use the bindings in an application can be found in the [messaging layer +documentation](./slim-messaging-layer.md). Otherwise examples are available in the [SLIM Repository](https://github.com/agntcy/slim/tree/main/data-plane/python-bindings/examples). ### Slimctl `slimctl` is a command-line tool for managing SLIM Nodes and Controllers. It can -be downloaded downloaded from the [releases +be downloaded from the [releases page](https://github.com/agntcy/slim/releases/tag/slimctl-v0.1.4) in the SLIM repo. ```bash diff --git a/docs/messaging/slim-mcp.md b/docs/messaging/slim-mcp.md index 8873a8a7..03eb5d94 100644 --- a/docs/messaging/slim-mcp.md +++ b/docs/messaging/slim-mcp.md @@ -1,4 +1,4 @@ -# SLIM and MCP integration +# SLIM and MCP Integration This tutorial demonstrates how to use SLIM to transport MCP (Model Context Protocol) messages. SLIM offers two primary integration @@ -981,7 +981,7 @@ uv run llamaindex-time-agent \ --city 'New York' ``` -The agent connects to the MCP server through SLIM, send a time query for the +The agent connects to the MCP server through SLIM, sends a time query for the specified city, and display the response. ## Using SLIM with a Proxy Server for SSE-based MCP Servers