Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions docs/slim/slim-a2a.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@ SLIMRPC is a framework that enables Protocol Buffers (protobuf) Remote Procedure

To compile a protobuf file and generate the clients and service stub you can use the [SLIMRPC compiler](./slim-slimrpc-compiler.md). This works in a similar way to the protoc compiler.

For SLIM A2A we compiled the [a2a.proto](https://github.com/a2aproject/A2A/blob/main/specification/grpc/a2a.proto) file using the SLIM RPC compiler. The generated code is in [a2a_pb2_slimrpc.py](https://github.com/agntcy/slim/tree/slim-v0.6.0/data-plane/python/integrations/slima2a/examples/travel_planner_agent).
For SLIM A2A we compiled the [a2a.proto](https://github.com/a2aproject/A2A/blob/main/specification/grpc/a2a.proto) file using the SLIM RPC compiler. The generated code is in [a2a_pb2_slimrpc.py](https://github.com/agntcy/slim/tree/slim-v1.0.0/data-plane/python/integrations/slima2a/examples/travel_planner_agent).

## How to use SLIMA2A

Using SLIMA2A is very similar to using the standard A2A implementation. As a reference example here we use the [travel planner agent](https://github.com/a2aproject/a2a-samples/tree/main/samples/python/agents/travel_planner_agent) available on the A2A samples repository. The version adapted to use SLIM A2A can be found in [travel_planner_agent](https://github.com/agntcy/slim/tree/slim-v0.6.0/data-plane/python/integrations/slima2a/examples/travel_planner_agent) folder. In the following section, we highlight and explain the key difference between the standard and SLIM A2A implementations.
Using SLIMA2A is very similar to using the standard A2A implementation. As a reference example here we use the [travel planner agent](https://github.com/a2aproject/a2a-samples/tree/main/samples/python/agents/travel_planner_agent) available on the A2A samples repository. The version adapted to use SLIM A2A can be found in [travel_planner_agent](https://github.com/agntcy/slim/tree/slim-v1.0.0/data-plane/python/integrations/slima2a/examples/travel_planner_agent) folder. In the following section, we highlight and explain the key difference between the standard and SLIM A2A implementations.

### Travel Planner: Server

In this section we highlight the main differences between the SLIM A2A [server](https://github.com/agntcy/slim/blob/slim-v0.6.0/data-plane/python/integrations/slima2a/examples/travel_planner_agent/server.py) implementation with respect to the original implementation in the A2A repository.
In this section we highlight the main differences between the SLIM A2A [server](https://github.com/agntcy/slim/blob/slim-v1.0.0/data-plane/python/integrations/slima2a/examples/travel_planner_agent/server.py) implementation with respect to the original implementation in the A2A repository.

1. Import the SLIMRPC package.
```python
Expand Down Expand Up @@ -76,7 +76,7 @@ Your A2A server is now ready to run on SLIM.

### Travel Planner: Client

These are the main differences between the [client](https://github.com/agntcy/slim/blob/slim-v0.6.0/data-plane/python/integrations/slima2a/examples/travel_planner_agent/client.py) using SLIM A2A and the standard one.
These are the main differences between the [client](https://github.com/agntcy/slim/blob/slim-v1.0.0/data-plane/python/integrations/slimrpc/slimrpc/examples/simple/client.py) using SLIM A2A and the standard one.

1. Create a channel. This requires a configuration that is similar to the server
```python
Expand Down
4 changes: 2 additions & 2 deletions docs/slim/slim-authentication.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ SLIM supports JWT (JSON Web Tokens) for identity management. Tokens can come
from an external identity provider or can be generated by the SLIM nodes
directly if you provide the necessary private key for signing the tokens and
public key for verification. Check the [Identity
Test](https://github.com/agntcy/slim/blob/slim-v0.7.0/data-plane/python/bindings/tests/test_identity.py)
Test](https://github.com/agntcy/slim/blob/slim-v1.0.0/data-plane/python/bindings/tests/test_identity.py)
for an example of how to use JWT tokens with SLIM if you have your own keys.

If you are running your SLIM clients in a Kubernetes environment, using
Expand Down Expand Up @@ -41,7 +41,7 @@ This section shows how to use SPIRE with SLIM to manage client identities. The f
If you already have a Kubernetes cluster or an existing SPIRE deployment, you
can adapt only the relevant subsections.

This tutorial is based on the [SLIM examples](https://github.com/agntcy/slim/blob/slim-v0.7.0/data-plane/python/bindings/examples).
This tutorial is based on the [SLIM examples](https://github.com/agntcy/slim/blob/slim-v1.0.0/data-plane/python/bindings/examples).

### Prerequisites

Expand Down
4 changes: 2 additions & 2 deletions docs/slim/slim-controller.md
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ tls:
key_file: "/path/to/client.key"
```

The `server` endpoint should point to a [SLIM Control](https://github.com/agntcy/slim/tree/slim-v0.7.0/control-plane/control-plane) endpoint which is a central service managing SLIM node configurations.
The `server` endpoint should point to a [SLIM Control](https://github.com/agntcy/slim/tree/slim-v1.0.0/control-plane/control-plane) endpoint which is a central service managing SLIM node configurations.

### Commands

Expand Down Expand Up @@ -398,7 +398,7 @@ slimctl controller route add org/default/alice/0 via connection_config.json
slimctl controller route del org/default/alice/0 via http://localhost:46367
```

For full reference of connection_config.json, see the [client-config-schema.json](https://github.com/agntcy/slim/blob/slim-v0.7.0/data-plane/core/config/src/grpc/schema/client-config.schema.json).
For full reference of connection_config.json, see the [client-config-schema.json](https://github.com/agntcy/slim/blob/slim-v1.0.0/data-plane/core/config/src/grpc/schema/client-config.schema.json).

### Managing SLIM Nodes Directly

Expand Down
30 changes: 15 additions & 15 deletions docs/slim/slim-group-tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ participants. Messages are sent to a shared channel where every member can read
and write. All messages are end-to-end encrypted using the
[MLS protocol](https://datatracker.ietf.org/doc/html/rfc9420). This tutorial is
based on the
[group.py](https://github.com/agntcy/slim/blob/slim-v0.7.0/data-plane/python/bindings/examples/src/slim_bindings_examples/group.py)
[group.py](https://github.com/agntcy/slim/blob/slim-v1.0.0/data-plane/python/bindings/examples/src/slim_bindings_examples/group.py)
example in the SLIM repo.

## Key Features
Expand All @@ -26,7 +26,7 @@ Every participant in a group requires a unique identity for authentication and f

### Identity

Each participant must have a unique identity. This is required to set up end-to-end encryption using the MLS protocol. The identity can be a JWT or shared secret. For simplicity, this example uses a shared secret. For JWT-based identity, see the [tutorial](https://github.com/agntcy/slim/tree/slim-v0.7.0/data-plane/python/bindings/examples#running-in-kubernetes-spire--jwt) in the SLIM repository.
Each participant must have a unique identity. This is required to set up end-to-end encryption using the MLS protocol. The identity can be a JWT or shared secret. For simplicity, this example uses a shared secret. For JWT-based identity, see the [tutorial](https://github.com/agntcy/slim/tree/slim-v1.0.0/data-plane/python/bindings/examples#running-in-kubernetes-spire--jwt) in the SLIM repository.

The Python objects managing the identity are called `IdentityProvider` and `IdentityVerifier`. The `IdentityProvider` provides the identity, while the `IdentityVerifier` verifies it:

Expand All @@ -45,12 +45,12 @@ def shared_secret_identity(identity: str, secret: str):
```

This is a helper function defined in
[common.py](https://github.com/agntcy/slim/blob/slim-v0.7.0/data-plane/python/bindings/examples/src/slim_bindings_examples/common.py#L85)
[common.py](https://github.com/agntcy/slim/blob/slim-v1.0.0/data-plane/python/bindings/examples/src/slim_bindings_examples/common.py#L85)
that can be used to create a `IdentityProvider` and `IdentityVerifier` from two input strings.

### SLIM App

The provider and verifier are used to create a local SLIM application that can exchange messages with other participants via the SLIM network. To create the SLIM app, use the helper function defined in [common.py](https://github.com/agntcy/slim/blob/slim-v0.7.0/data-plane/python/bindings/examples/src/slim_bindings_examples/common.py#L289):
The provider and verifier are used to create a local SLIM application that can exchange messages with other participants via the SLIM network. To create the SLIM app, use the helper function defined in [common.py](https://github.com/agntcy/slim/blob/slim-v1.0.0/data-plane/python/bindings/examples/src/slim_bindings_examples/common.py#L289):

```python
async def create_local_app(
Expand Down Expand Up @@ -195,7 +195,7 @@ In this example, we use the shared secret option.

Now that you know how to set up a SLIM application, we can see how to create a group where multiple participants can exchange messages. We start by showing how to create a group session using the Python bindings.

In this setting, one participant acts as moderator: it creates the group session and invites participants by sending invitation control messages. A detailed description of group sessions and the invitation process is available [here](https://github.com/agntcy/slim/blob/slim-v0.7.0/data-plane/python/bindings/SESSION.md).
In this setting, one participant acts as moderator: it creates the group session and invites participants by sending invitation control messages. A detailed description of group sessions and the invitation process is available [here](https://github.com/agntcy/slim/blob/slim-v1.0.0/data-plane/python/bindings/SESSION.md).

### Creating the Group Session and Inviting Members

Expand Down Expand Up @@ -271,10 +271,10 @@ if chat_channel and invites:
```

This code comes from the
[group.py](https://github.com/agntcy/slim/blob/slim-v0.7.0/data-plane/python/bindings/examples/src/slim_bindings_examples/group.py)
[group.py](https://github.com/agntcy/slim/blob/slim-v1.0.0/data-plane/python/bindings/examples/src/slim_bindings_examples/group.py)
example. The local application is created using the helper function shown earlier.
The channel name (the logical group topic) is produced via the
[split_id](https://github.com/agntcy/slim/blob/slim-v0.7.0/data-plane/python/bindings/examples/src/slim_bindings_examples/common.py#L63)
[split_id](https://github.com/agntcy/slim/blob/slim-v1.0.0/data-plane/python/bindings/examples/src/slim_bindings_examples/common.py#L63)
helper by parsing the `remote` parameter.

A new group session is created by calling `local_app.create_session(...)` with two parameters:
Expand Down Expand Up @@ -346,7 +346,7 @@ The moderator already holds this information and therefore reuses the existing

Participants (including the moderator) then call `ctx, payload = await session.get_message()` to receive
messages. `payload` contains the raw message bytes and `ctx` is a
[MessageContext](https://github.com/agntcy/slim/blob/slim-v0.7.0/data-plane/python/bindings/slim_bindings/session.py)
[MessageContext](https://github.com/agntcy/slim/blob/slim-v1.0.0/data-plane/python/bindings/slim_bindings/session.py)
with source, destination, message type, and metadata.

### Publish Messages to the Session
Expand Down Expand Up @@ -414,7 +414,7 @@ only its local session is closed.

Now we will show how to run a new group session and
how to enable group communication on top of SLIM. The full code can be found in
[group.py](https://github.com/agntcy/slim/blob/slim-v0.7.0/data-plane/python/bindings/examples/src/slim_bindings_examples/group.py)
[group.py](https://github.com/agntcy/slim/blob/slim-v1.0.0/data-plane/python/bindings/examples/src/slim_bindings_examples/group.py)
in the SLIM repo. To run the example, follow the steps listed here:

#### Run SLIM
Expand All @@ -424,7 +424,7 @@ up a SLIM instance representing the SLIM network. We use the pre-built
docker image for this purpose.

First execute this command to create the SLIM configuration file. Details about
the [configuration](https://github.com/agntcy/slim/tree/slim-v0.7.0/data-plane/config)
the [configuration](https://github.com/agntcy/slim/tree/slim-v1.0.0/data-plane/config)
can be found in the SLIM repo.

```bash
Expand Down Expand Up @@ -464,7 +464,7 @@ You can run the SLIM instance using Docker:
```bash
docker run -it \
-v ./config.yaml:/config.yaml -p 46357:46357 \
ghcr.io/agntcy/slim:0.7.0 /slim --config /config.yaml
ghcr.io/agntcy/slim:1.0.0 /slim --config /config.yaml
```

If everything goes fine, you should see an output like this one:
Expand Down Expand Up @@ -566,7 +566,7 @@ With the controller, you do not need to set up a moderator in your application.
### Run the Group Communication Example

Now we will show how to set up a group using the SLIM Controller. The reference code for the
application is still [group.py](https://github.com/agntcy/slim/blob/slim-v0.7.0/data-plane/python/bindings/examples/src/slim_bindings_examples/group.py). To run this example, follow the steps listed here.
application is still [group.py](https://github.com/agntcy/slim/blob/slim-v1.0.0/data-plane/python/bindings/examples/src/slim_bindings_examples/group.py). To run this example, follow the steps listed here.

#### Run the SLIM Controller

Expand Down Expand Up @@ -608,7 +608,7 @@ Start the controller with Docker:
```bash
docker run -it \
-v ./config-controller.yaml:/config.yaml -v .:/db -p 50051:50051 -p 50052:50052 \
ghcr.io/agntcy/slim/control-plane:0.7.0 --config /config.yaml
ghcr.io/agntcy/slim/control-plane:1.0.0 --config /config.yaml
```

If everything goes fine, you should see an output like this:
Expand Down Expand Up @@ -669,7 +669,7 @@ This starts a SLIM node that connects to the controller:
```bash
docker run -it \
-v ./config-slim.yaml:/config.yaml -p 46357:46357 \
ghcr.io/agntcy/slim:0.7.0 /slim --config /config.yaml
ghcr.io/agntcy/slim:1.0.0 /slim --config /config.yaml
```

If everything goes fine, you should see an output like this one:
Expand Down Expand Up @@ -769,7 +769,7 @@ if [ "$OS" != "linux" ] && [ "$OS" != "darwin" ]; then
fi

# Construct the download URL
VERSION="v0.7.0"
VERSION="v1.0.0"
COMMIT_HASH="35c37ab"
ARCHIVE_NAME="slimctl_slimctl-${VERSION}-SNAPSHOT-${COMMIT_HASH}_${OS}_${ARCH}.tar.gz"
DOWNLOAD_URL="https://github.com/agntcy/slim/releases/download/slimctl-${VERSION}/${ARCHIVE_NAME}"
Expand Down
2 changes: 1 addition & 1 deletion docs/slim/slim-group.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ of the application logic) or serve solely as a channel moderator.

This section provides the basic
steps to follow, along with Python code snippets, for setting up a group session.
The full code is available in the [group.py](https://github.com/agntcy/slim/blob/slim-v0.7.0/data-plane/python/bindings/examples/src/slim_bindings_examples/group.py) example in the SLIM repository.
The full code is available in the [group.py](https://github.com/agntcy/slim/blob/slim-v1.0.0/data-plane/python/bindings/examples/src/slim_bindings_examples/group.py) example in the SLIM repository.

### Create the Channel

Expand Down
24 changes: 12 additions & 12 deletions docs/slim/slim-howto.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ installed using the provided container image, with
#### Using Docker

```bash
docker pull ghcr.io/agntcy/slim:v0.7.0
docker pull ghcr.io/agntcy/slim:v1.0.0

cat << EOF > ./config.yaml
tracing:
Expand All @@ -47,7 +47,7 @@ EOF

docker run -it \
-v ./config.yaml:/config.yaml -p 46357:46357 \
ghcr.io/agntcy/slim:v0.7.0 /slim --config /config.yaml
ghcr.io/agntcy/slim:v1.0.0 /slim --config /config.yaml
```

#### Using Cargo
Expand Down Expand Up @@ -85,11 +85,11 @@ EOF
We also provide a Helm chart for deploying SLIM in Kubernetes environments.

```bash
helm pull oci://ghcr.io/agntcy/slim/helm/slim --version v0.7.0
helm pull oci://ghcr.io/agntcy/slim/helm/slim --version v1.0.0
```

For information about how to use the Helm chart, see the
[values.yaml](https://github.com/agntcy/slim/blob/slim-v0.7.0/charts/slim/values.yaml)
[values.yaml](https://github.com/agntcy/slim/blob/slim-v1.0.0/charts/slim/values.yaml)

### SLIM Controller

Expand All @@ -100,7 +100,7 @@ provided container image or with [Helm](https://helm.sh/).
### Using Docker

```bash
docker pull ghcr.io/agntcy/slim/control-plane:v0.7.0
docker pull ghcr.io/agntcy/slim/control-plane:v1.0.0

cat << EOF > ./slim-control-plane.yaml
northbound:
Expand Down Expand Up @@ -129,14 +129,14 @@ EOF
docker run -it \
-v ./slim-control-plane.yaml:/config.yaml -v .:/db \
-p 50051:50051 -p 50052:50052 \
ghcr.io/agntcy/slim/control-plane:v0.7.0 \
ghcr.io/agntcy/slim/control-plane:v1.0.0 \
-config /config.yaml
```

### Using Helm

```bash
helm pull oci://ghcr.io/agntcy/slim/helm/slim-control-plane --version v0.7.0
helm pull oci://ghcr.io/agntcy/slim/helm/slim-control-plane --version v1.0.0
```

### SLIM Bindings
Expand All @@ -154,18 +154,18 @@ pip install slim-bindings
```toml
[project]
...
dependencies = ["slim-bindings>=0.7.0"]
dependencies = ["slim-bindings>=1.0.0"]
```

A tutorial on how to use the bindings in an application can be found in the [messaging layer
documentation](./slim-data-plane.md). Otherwise examples are available in the
[SLIM Repository](https://github.com/agntcy/slim/tree/slim-v0.7.0/data-plane/python/bindings/examples/src/slim_bindings_examples).
[SLIM Repository](https://github.com/agntcy/slim/tree/slim-v1.0.0/data-plane/python/bindings/examples/src/slim_bindings_examples).

### Slimctl

`slimctl` is a command-line tool for managing SLIM Nodes and Controllers. It can
be downloaded from the [releases
page](https://github.com/agntcy/slim/releases/tag/slimctl-v0.7.0) in the SLIM repo.
page](https://github.com/agntcy/slim/releases/tag/slimctl-v1.0.0) in the SLIM repo.

#### Installation

Expand All @@ -174,7 +174,7 @@ Choose the appropriate installation method for your operating system:
=== "macOS (Apple Silicon)"

```bash
curl -LO https://github.com/agntcy/slim/releases/download/slimctl-v0.7.0/slimctl_slimctl-v0.7.0-SNAPSHOT-35c37ab_darwin_arm64.tar.gz
curl -LO https://github.com/agntcy/slim/releases/download/slimctl-v1.0.0/slimctl_slimctl-v1.0.0-SNAPSHOT-35c37ab_darwin_arm64.tar.gz
sudo mv slimctl-darwin-arm64 /usr/local/bin/slimctl
sudo chmod +x /usr/local/bin/slimctl
```
Expand All @@ -191,7 +191,7 @@ Choose the appropriate installation method for your operating system:
=== "Linux (AMD64)"

```bash
curl -LO https://github.com/agntcy/slim/releases/download/slimctl-v0.7.0/slimctl_slimctl-v0.7.0-SNAPSHOT-35c37ab_linux_amd64.tar.gz
curl -LO https://github.com/agntcy/slim/releases/download/slimctl-v1.0.0/slimctl_slimctl-v1.0.0-SNAPSHOT-35c37ab_linux_amd64.tar.gz
sudo mv slimctl-linux-amd64 /usr/local/bin/slimctl
sudo chmod +x /usr/local/bin/slimctl
```
Expand Down
4 changes: 2 additions & 2 deletions docs/slim/slim-mcp.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ architecture.
In this section of the tutorial, we implement and deploy two sample
applications:

- A [LlamaIndex agent](https://github.com/agntcy/slim/tree/slim-v0.7.0/data-plane/python/integrations/slim-mcp/slim_mcp/examples/llamaindex_time_agent)
- A [LlamaIndex agent](https://github.com/agntcy/slim/tree/slim-v1.0.0/data-plane/python/integrations/slim-mcp/slim_mcp/examples/llamaindex_time_agent)
that communicates with an MCP server over SLIM to perform time queries and timezone conversions.
- An [MCP time
server](https://github.com/agntcy/slim/tree/slim-v0.7.0/data-plane/python/integrations/slim-mcp/slim_mcp/examples/mcp_server_time) that implements SLIM as its transport protocol and processes requests from the LlamaIndex agent.
server](https://github.com/agntcy/slim/tree/slim-v1.0.0/data-plane/python/integrations/slim-mcp/slim_mcp/examples/mcp_server_time) that implements SLIM as its transport protocol and processes requests from the LlamaIndex agent.

### Prerequisites

Expand Down
Loading
Loading