Skip to content

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.

For more information on SLIM, see the detailed documentation.

Installation

SLIM is composed of multiple components, each with its own installation 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 using the provided container image, with cargo or with Helm.

Using Docker

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

Using Cargo

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

Using Helm

We also provide a Helm chart for deploying SLIM in Kubernetes environments.

helm pull oci://ghcr.io/agntcy/slim/helm/slim --version v0.1.8

For information about how to use the Helm chart, see the values.yaml

SLIM Controller

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.

Using Docker

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

Using Helm

helm pull oci://ghcr.io/agntcy/slim/helm/slim-controller --version v0.1.3

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:

pip install slim-bindings
[project]
...
dependencies = ["slim-bindings>=0.3.6"]

A tutorial on how to use the bindings in an application can be found in the messaging layer documentation. Otherwise examples are available in the SLIM Repository.

Slimctl

slimctl is a command-line tool for managing SLIM Nodes and Controllers. It can be downloaded from the releases page in the SLIM repo.

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

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 in the Taskfile documentation to find the best installation method for your system.

with brew
brew install go-task
with curl
sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b ~/.local/bin

For more information, see Taskfile.

Rust

The data-plane components are implemented in Rust. Install with rustup:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

For more information, see Rust.

Go

The control-plane components are implemented in Go. Follow the installation instructions in the Go website.