Skip to main content
Install

Get Clustron Zaris running

Embed it in your .NET app in seconds, or run a server or cluster with Docker, Compose, or Kubernetes — the same client and connection string reach all of them.

Install with AI

Recommended

Let your AI coding agent install and verify Zaris for you. It detects your environment — in-process, Docker, Kubernetes, or Windows — and runs the right path end-to-end.

1 · Add the Zaris skill to your agent

Terminal
npx skills add clustron/zaris

2 · Then just ask

Your AI agent
Install Clustron Zaris and set it up so I can connect to a store.
Works with Claude Code, Cursor & other skill-aware agents.

Embed in your app

Fastest

Add the .NET SDK and run a full store inside your own process — ideal for development and tests. The same client also connects to any Zaris cluster, with no code changes.

Terminal
# Add the Clustron Zaris SDK to your project
dotnet add package Clustron.Zaris.SDK
Program.cs
using Clustron.Zaris.Client.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;

// An embedded, in-process store — no servers, no install.
// In-process is just a connection string: zaris://inproc/demo
var sp = new ServiceCollection()
.AddClustronZaris("demo", "zaris://inproc/demo")
.BuildServiceProvider();

Run a server or cluster

Self-host anywhere — your data never leaves your environment. Pull from Docker Hub, or install the Windows package. Pick your platform:

Start a 4-node cluster + web console
# Pull the compose file and start a 4-node cluster + web console
curl -fL https://clustron.io/quick-start.yml | docker compose -f - up -d

Default is 4 nodes at RF 2 (2 partitions, each replicated — survives a node loss). Need a different size? Save the file (curl -fL https://clustron.io/quick-start.yml -o quick-start.yml) and edit the node list — keep the node count a multiple of the replication factor (even for RF 2).

Verify it's running

Open http://localhost:7810 — the demo store appears with its 3 nodes going healthy. Or prove the data plane from the shell:

# Prove the data plane: put a key and read it back (runs inside the manager container)
docker exec $(docker ps -qf name=manager) pwsh -Command "Connect-ZrStore -ConnectionString 'zaris://zaris-0:7861/demo'; Set-ZrItem hello world; Get-ZrItem hello"
Connect your app
# Point your app at the store — the path segment is the store name
zaris://localhost:7861/demo
Full Docker guide →
Connect from your app

This is the connection string to use

Point your app at the store with one connection string. Which hosts you use depends on where your app runs — inside the same network or cluster, or outside it.

Inside the network or cluster

Simplest

When your app runs alongside the store — another Compose service, or a pod in the same cluster — reach it directly on the internal network.

Connection string — in-network
# Docker Compose — app on the same network
zaris://zaris-0:7861,zaris-1:7861,zaris-2:7861/demo

# Kubernetes — in-cluster
zaris://zaris-client.zaris.svc.cluster.local:7861/zaris-k8s

# Local quick-start — from your host (Docker quick-start)
zaris://localhost:7861/demo

From outside the network

By default the cluster advertises in-network addresses. To reach it from outside, enable external access — each node also advertises an externally-reachable address on a second listener, secured with TLS.

Connection string — external
# Docker Compose or Kubernetes — external access (TLS + cluster CA)
zariss://node-1.example.com:7863,node-2.example.com:7863/zaris-k8s?ca=/path/ca.pem

Needs external access turned on (advertised addresses). Use zariss:// with the cluster CA — and ?token=env:VAR if token auth is on.

In your app

Same code, whichever string you use

Drop the connection string into DI or appsettings.json. The path segment is the store name — it equals the cluster id; the DI key is just a local label. Comma-separated hosts are a seed list with automatic failover.

Connecting a client → the full guide
Program.cs
using Clustron.Zaris.Client.DependencyInjection;

// The store name in the path IS the cluster id — set it in one place.
services.AddClustronZaris(
"demo", "zaris://localhost:7861/demo");

// …or from appsettings.json:
// "ConnectionStrings": { "demo": "zaris://localhost:7861/demo" }
services.AddClustronZarisFromConnectionStrings(configuration);

// Resolve and use it:
var provider = sp.GetRequiredService<IZarisClientProvider>();
var client = await provider.GetAsync("demo");
await client.PutAsync("k", "v");
.NET 8+
to run a store (host / cluster)
netstandard2.0
client SDK — .NET Framework 4.8 & .NET 8+
Free to build
production use is licensed
Self-hosted
Windows · Docker · Kubernetes
Clustron Nodus

Just need the clustering core?

Nodus — peer-to-peer membership, leader election and typed messaging — is a single NuGet package you embed in your .NET service. No package to host, no server to run.

dotnet add package Clustron.Nodus.Client

Looking for a specific version?

Browse every release, or read the versioning and compatibility policy.