Architecture
SLIM separates message delivery from infrastructure management across three network layers, with an independent control plane that configures the network without participating in message routing.
Network Stack
The three layers that carry messages between applications:
graph LR
app["Applications\nRust / Python / Go / .NET / JavaScript / Java / Kotlin bindings"]
session["Session Layer (Rust)\nMLS encryption · reliable delivery · group communication"]
dataplane["Data Plane (Rust)\nhierarchical name-based message routing · TLS/mTLS/auth"]
app --> session --> dataplane
style session fill:#4a90e2,stroke:#2e5c8a,stroke-width:2px,color:#fff
style dataplane fill:#f39c12,stroke:#d68910,stroke-width:2px,color:#fff
-
Applications and Bindings: Your agents and services communicate through language-native bindings (Python, Go, .NET, JavaScript). The bindings expose a simple API for sending and receiving messages, establishing sessions, and managing groups without needing to deal directly with the underlying protocols.
-
Session Layer: Sits inside each application node. Provides end-to-end encryption using the MLS protocol, handles session setup and teardown, manages group membership, and ensures reliable message delivery. The session layer is invisible to intermediate routing nodes — only the communicating endpoints hold the session keys.
-
Data Plane: The routing and forwarding engine. SLIM nodes run the data plane and forward messages based on hierarchical names. Routing nodes do not participate in application sessions and never see plaintext message content, keeping the infrastructure lightweight and the architecture zero-trust.
Control Plane
The Control Plane sits alongside the network stack as a separate management component — it is not a layer that messages pass through. The SLIM Controller configures data plane nodes, manages route tables, and handles node registration. Operators interact with it via the slimctl CLI and its northbound gRPC API; data plane nodes receive configuration updates via the southbound gRPC interface.
The data plane operates independently and can run without any control plane deployed. The control plane becomes valuable at scale — particularly for multi-cluster deployments where routing topology needs to be managed centrally.
Component Topology
The diagram below shows how components are distributed across application and routing nodes in a typical SLIM deployment:
graph TB
subgraph "Application Node (Agent A)"
A1[Session Layer 1]
A2[Session Layer 2]
A3[Data Plane Client]
A1 --> A3
A2 --> A3
end
subgraph "Intermediate SLIM Node 1"
I1[Data Plane]
end
subgraph "Intermediate SLIM Node 2"
I2[Data Plane]
end
subgraph "Application Node (Agent B)"
B1[Session Layer 1]
B2[Session Layer 2]
B3[Data Plane Client]
B1 --> B3
B2 --> B3
end
subgraph "Control Plane"
CP[Configuration & Monitoring]
end
A3 -.->|encrypted messages| I1
I1 -.->|route| I2
I2 -.->|encrypted messages| B3
CP -.->|manages| I1
CP -.->|manages| I2
style A1 fill:#4a90e2,stroke:#2e5c8a,stroke-width:2px,color:#fff
style A2 fill:#4a90e2,stroke:#2e5c8a,stroke-width:2px,color:#fff
style A3 fill:#f39c12,stroke:#d68910,stroke-width:2px,color:#fff
style B1 fill:#4a90e2,stroke:#2e5c8a,stroke-width:2px,color:#fff
style B2 fill:#4a90e2,stroke:#2e5c8a,stroke-width:2px,color:#fff
style B3 fill:#f39c12,stroke:#d68910,stroke-width:2px,color:#fff
style I1 fill:#f39c12,stroke:#d68910,stroke-width:2px,color:#fff
style I2 fill:#f39c12,stroke:#d68910,stroke-width:2px,color:#fff
style CP fill:#7f8c8d,stroke:#5a6970,stroke-width:2px,color:#fff
Component Distribution
Pure Data Plane Nodes
SLIM routing nodes run only the data plane. Because they never participate in application sessions, they require no session layer code. This makes routing nodes lightweight, fast, and straightforward to deploy at scale — whether in a single data center or across multiple regions.
Application Nodes with Bindings
Application nodes use the language bindings, which bundle both the data plane client and the session layer. This gives applications the full stack: name-based routing, end-to-end encryption, reliable delivery, and group communication through a simple API.
Control Plane Separation
The control plane manages the routing infrastructure independently from message traffic. Operators use slimctl to configure routes, monitor nodes, and manage deployments without touching the data plane nodes directly.
Key Design Principles
Zero-trust encryption: MLS end-to-end encryption is applied at the session layer inside each application node. Intermediate routing nodes see only ciphertext and routing headers — they cannot read message content even if compromised.
Hierarchical naming: All endpoints are identified by a routable name (org/namespace/service/clientId). The naming scheme enables anycast discovery and unicast delivery without requiring a separate service registry.
Separation of concerns: Data plane, session layer, and control plane are independently deployable and scalable. You can run a global routing network without deploying any control plane, and add centralized management when needed.
Architecture Sub-topics
- Naming — Client and channel naming conventions, anycast vs. unicast
- Sessions — Point-to-point and group session types
- Authentication — Identity management with JWT, shared secrets, and SPIRE