# SLIM Messaging Glossary

This glossary defines technical terms referenced across the SLIM messaging documentation: core concepts, naming, sessions, routing, configuration, security, integrations (SLIMRPC, A2A, MCP), and deployment tooling. Terms are alphabetized.

______________________________________________________________________

## A

- **Ack (Acknowledgment)**

  A confirmation—explicit or implicit—that a sent message was delivered or processed. In reliable modes, missing acks trigger retries until `max_retries` is reached or a timeout fires.

- **Anycast**

  Routing mode where a message addressed to a 3-component name (`org/namespace/service`) is delivered to exactly one currently reachable instance. Each message may choose a different instance. Used in the discovery phase of point-to-point and group sessions.

______________________________________________________________________

## C

- **Channel (Group Channel)**

  Logical group namespace: the first three SLIM name components (`org/namespace/service`) without the client hash. All joined participants receive each message. Also referred to as a Group.

- **Channel Moderator**

  Manager of a group channel that invites/removes participants and coordinates MLS state.

- **Client (Application Client)**

  Runtime endpoint connected to a SLIM node. Identified by full four-component name: `org/namespace/service/clientHash`.

- **Client Instance ID (Client Hash)**

  Fourth name component, derived from identity material (e.g., hash of public key). Ensures unique, routable unicast identity per instance.

- **Connection (Routing Connection)**

  Configured link (endpoint + parameters) enabling a SLIM node to route traffic to another SLIM node.

- **Controller (SLIM Controller)**

  Central orchestration service offering northbound (administrative) and southbound (node) gRPC interfaces for configuration, topology, and group/channel operations.

______________________________________________________________________

## D

- **Data Plane (Messaging Layer)**

  Operational pipeline for message routing, delivery, encryption (MLS), and session state, implemented in SLIM nodes. It can be used synonymously with "SLIM Node".

- **Discovery (Service Discovery)**

  Initial interaction where packets can be sent to any available instance. This is used at the beginning of a point-to-point session and when a new invite is sent in a group session.

______________________________________________________________________

## E

- **Endpoint**

  Host:port (and scheme) on which a server listens or a client connects. Note that in the configuration the client needs to specify the protocol (e.g. `http://localhost:46357`), but not the server (e.g. localhost:46357)

______________________________________________________________________

## G

- **Group**

  Set of participants joined to a channel. Shares message distribution and optionally an MLS security context. See also: Channel.

______________________________________________________________________

## I

- **Identity**

  Cryptographic or token-based representation of a workload (shared secret, JWT, SPIFFE SVID) determining trust and naming uniqueness.

- **Invitation (Group Invitation)**

  Control message enabling a client to join an existing group.

______________________________________________________________________

## L

- **Local Name**

  The fully qualified SLIM name representing the current application endpoint. See Client (Application Client)

______________________________________________________________________

## M

- **Max Retries (Session Config)**

  Upper limit on retransmission attempts for a single message lacking timely acknowledgment.

- **MLS (Message Layer Security)**

  End-to-end group key agreement and encryption protocol (RFC 9420) providing confidentiality and integrity beyond hop-level TLS termination.

- **Moderator**

  Alias of Channel Moderator.

- **Group Session**

  Session type enabling many-to-many distribution; every message is delivered to all participants in the channel.

______________________________________________________________________

## N

- **Name (SLIM Name)**

  Structured routing identifier: `organization/namespace/service/clientHash` (full) or the first three components for channel addressing. The first component, `organization`, usually represents the top-level administrative or tenant boundary; the second component, `namespace`, can be used to encode environment, region, or an organizational partition; the third component, `service`, specifies the service exposed by the client. When multiple instances of the same service are deployed (such as several pods in a Kubernetes cluster), these first three components remain the same for all instances. The last component, `clientHash`, is generated by SLIM from the client's identity material (e.g., a hash of the public key) and uniquely identifies each specific client instance.

- **Node (SLIM Node)**

  Runtime process implementing the data plane: message routing, session handling, MLS operations, optional control endpoints.

______________________________________________________________________

## P

- **Participant (Group Participant)**

  Client that has accepted an invitation and joined a group, receiving all channel traffic.

______________________________________________________________________

## R

- **Retry**

  Re-attempt of sending a message after a timeout window, capped by `max_retries`.

- **Route (Routing Entry)**

  Controller-managed mapping directing messages for a particular name (or prefix) through a specific connection.

______________________________________________________________________

## S

- **Session**

  Abstraction for interaction context (Point-to-Point, Group). Manages encryption (if MLS enabled), retries, and sequencing.

- **Session Configuration**

  Per-session parameters selected at creation (e.g., mode, `mls_enabled`, metadata). In Python bindings: `PySessionConfiguration.PointToPoint(...)`, etc.

- **Session Layer**

  Middleware that abstracts encryption, invitations, routing resolution, and reliability, offering simple send/receive primitives.

- **Shared Secret Identity**

  Simplest identity bootstrap (common secret) for demos/tests before stronger mechanisms (e.g., JWT) are deployed.

- **Slimctl**

  Command-line tool managing routes, connections, subscriptions, and nodes via Controller or direct node endpoints.

- **SLIM (Secure Low-Latency Interactive Messaging)**

  Framework delivering secure, scalable, low-latency messaging with unified naming, session semantics, encryption, and extensibility.

- **SLIMA2A**

  Integration of A2A agent protocol over SLIM using SLIMRPC-generated stubs.

- **SLIM Controller**

  See Controller.

- **SLIMRPC**

  Protobuf-based RPC framework operating over SLIM transport (unary and streaming patterns). Analogous to gRPC but using SLIM naming and channels.

- **SLIMRPC Compiler (protoc-slimrpc-plugin)**

  Protoc plugin generating Python stubs and servicers for SLIMRPC services defined in `.proto` files.

- **Subscription**

  Binding between a routed name/prefix and a connection so messages destined to that name traverse the appropriate path.

- **Publish**

  Operation that sends a message on a session (context: point-to-point/group). May await acknowledgment depending on reliability mode. In Python bindings: `session.publish(...)` or `session.publish_to(ctx, ...)`.

- **Message Context**

  Metadata accompanying a received message (e.g., routing info). Used to reply (`publish_to`) preserving addressing.

______________________________________________________________________

## T

- **Timeout (Request / Session Timeout)**

  Upper bound for waiting on acknowledgments or RPC responses before retry/failure escalation.

______________________________________________________________________

## U

- **Point-to-Point Session**

  Session mode for communication with a specific client instance. Ensures message affinity to a single endpoint.
