Getting Started with SLIM
Installation
SLIM is composed of multiple components, each with its own installation instructions. Choose the components you need based on your use case.
SLIM Node
The SLIM Node is the core component that handles messaging operations.
You can install the SLIM Node using Docker, Cargo, Helm, or the CLI binary. Choose the method that best fits your infrastructure.
Pull the SLIM container image and run it with a configuration file:
docker pull ghcr.io/agntcy/slim:1.0.0
Create a configuration file:
# 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:
dataplane:
servers:
- endpoint: "0.0.0.0:46357"
tls:
insecure: true
clients: []
Run the container:
docker run -it \
-v ./config.yaml:/config.yaml -p 46357:46357 \
ghcr.io/agntcy/slim:1.0.0 /slim --config /config.yaml
Install SLIM using Rust's package manager:
RUSTFLAGS="--cfg mls_build_async" cargo install agntcy-slim
Create a configuration file:
# 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:
dataplane:
servers:
- endpoint: "0.0.0.0:46357"
tls:
insecure: true
clients: []
Run SLIM:
~/.cargo/bin/slim --config ./config.yaml
For Kubernetes deployments, use the official Helm chart:
helm pull oci://ghcr.io/agntcy/slim/helm/slim --version v1.0.0
Configuration
For detailed configuration options, see the values.yaml in the repository.
For local development and testing, use the slimctl binary.
Install the slimctl binary following the instructions below.
Run with default settings:
slimctl slim start
Create a configuration file:
# 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:
dataplane:
servers:
- endpoint: "0.0.0.0:46357"
tls:
insecure: true
clients: []
Start SLIM with the configuration:
slimctl slim start --config ./config.yaml
For more configuration options, see the SLIM Configuration reference.
SLIM Controller
The SLIM Controller manages SLIM Nodes and provides a user-friendly interface for configuration.
Pull the controller image:
docker pull ghcr.io/agntcy/slim/control-plane:1.0.0
Create a configuration file:
# slim-control-plane.yaml
northbound:
httpHost: 0.0.0.0
httpPort: 50051
logging:
level: INFO
southbound:
httpHost: 0.0.0.0
httpPort: 50052
logging:
level: INFO
reconciler:
maxRequeues: 15
maxNumOfParallelReconciles: 1000
logging:
level: INFO
database:
filePath: /db/controlplane.db
Run the controller:
docker run -it \
-v ./slim-control-plane.yaml:/config.yaml -v .:/db \
-p 50051:50051 -p 50052:50052 \
ghcr.io/agntcy/slim/control-plane:1.0.0 \
-config /config.yaml
For Kubernetes deployments:
helm pull oci://ghcr.io/agntcy/slim/helm/slim-control-plane --version v1.0.0
SLIM Bindings
Language bindings allow you to integrate SLIM with your applications.
Install using pip:
pip install slim-bindings
Or add to your pyproject.toml:
[project]
# ...
dependencies = ["slim-bindings~=1.0"]
For more information on the SLIM bindings, see the Messaging Layer Tutorial and the Python Examples.
Install the Go bindings:
go get github.com/agntcy/slim-bindings-go@v1.0.0
Run the setup tool to install native libraries:
go run github.com/agntcy/slim-bindings-go/cmd/slim-bindings-setup
Add to your go.mod:
require github.com/agntcy/slim-bindings-go v1.0.0
C Compiler Required
The Go bindings use native libraries via CGO, so you'll need a C compiler installed on your system.
For more information on the Go bindings, see the Go Examples.
Add the Kotlin bindings to your Gradle project:
Add to your build.gradle.kts:
dependencies {
implementation("io.agntcy.slim:slim-bindings-kotlin:1.2.0")
}
mavenCentral() is the default repository in Gradle, so no additional repository configuration is needed.
Add the GitHub Packages repository and dependency to your build.gradle.kts:
repositories {
maven {
url = uri("https://maven.pkg.github.com/agntcy/slim")
credentials {
username = project.findProperty("gpr.user") as String? ?: System.getenv("GITHUB_ACTOR")
password = project.findProperty("gpr.key") as String? ?: System.getenv("GITHUB_TOKEN")
}
}
}
dependencies {
implementation("io.agntcy.slim:slim-bindings-kotlin:1.2.0")
}
GitHub Token Required
To use GitHub Packages, you need a personal access token with read:packages scope. Set GITHUB_ACTOR (your username) and GITHUB_TOKEN (your token) as environment variables, or use gpr.user and gpr.key in gradle.properties.
JDK 17+ Required
The Kotlin bindings use JNA for native library loading and require JDK 17 or higher.
For more information on the Kotlin bindings, see the Kotlin Examples.
Slimctl
slimctl is a command-line tool for managing SLIM Nodes and Controllers.
Installation
Choose your platform:
curl -LO https://github.com/agntcy/slim/releases/download/slimctl-v1.0.0/slimctl_1.0.0_darwin_arm64.tar.gz
tar -xzf slimctl_1.0.0_darwin_arm64.tar.gz
sudo mv slimctl /usr/local/bin/slimctl
sudo chmod +x /usr/local/bin/slimctl
macOS Security
You may need to allow the binary to run if blocked by Gatekeeper:
sudo xattr -rd com.apple.quarantine /usr/local/bin/slimctl
Alternatively, go to System Settings > Privacy & Security and allow the application when prompted.
curl -LO https://github.com/agntcy/slim/releases/download/slimctl-v1.0.0/slimctl_1.0.0_darwin_amd64.tar.gz
tar -xzf slimctl_1.0.0_darwin_amd64.tar.gz
sudo mv slimctl /usr/local/bin/slimctl
sudo chmod +x /usr/local/bin/slimctl
curl -LO https://github.com/agntcy/slim/releases/download/slimctl-v1.0.0/slimctl_1.0.0_linux_amd64.tar.gz
tar -xzf slimctl_1.0.0_linux_amd64.tar.gz
sudo mv slimctl /usr/local/bin/slimctl
sudo chmod +x /usr/local/bin/slimctl
Download and extract the Windows binary:
# Using PowerShell
Invoke-WebRequest -Uri "https://github.com/agntcy/slim/releases/download/slimctl-v1.0.0/slimctl_1.0.0_windows_amd64.zip" -OutFile "slimctl.zip"
Expand-Archive -Path "slimctl.zip" -DestinationPath "."
# Move to a directory in your PATH (e.g., C:\Program Files\slimctl\)
# Or add the current directory to your PATH
Alternatively, download directly from the releases page.
Check the slimctl documentation for additional installation methods.
Verification
Verify the installation:
slimctl help
This should display help information and available commands.
Building from Source
You can build SLIM from source.
Prerequisites
Install the following tools on your system:
Building SLIM
Once all prerequisites are installed, clone the repository and build the components:
# Clone the SLIM repository
git clone https://github.com/agntcy/slim
cd slim
# Build the data plane (Rust)
task data-plane:build
# Build the control plane (Go)
task control-plane:build
# Build both components
task build
For more information on the build system and development workflow, see the SLIM repository.
Next Steps
You've installed SLIM! Here's what to do next:
- Read the messaging layer documentation
- Explore the example applications
- Learn about configuration options
- Join us on Slack
Need Help?
If you get stuck, check the detailed documentation, ask questions in our community forums, or report issues on GitHub.