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.
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
npx skills add clustron/zaris
2 · Then just ask
Install Clustron Zaris and set it up so I can connect to a store.
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.
# Add the Clustron Zaris SDK to your project
dotnet add package Clustron.Zaris.SDK
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();
Self-host anywhere — your data never leaves your environment. Pull from Docker Hub, or install the Windows package. Pick your platform:
# 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).
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"
# Point your app at the store — the path segment is the store name
zaris://localhost:7861/demo
# One command: 4 nodes at RF 2 (2 partitions x 2 copies), store auto-attached.
helm install zaris oci://registry-1.docker.io/clustron/zaris -n zaris --create-namespace
The store is auto-attached on deploy — no manual registration. Resize with --set node.replicas / --set node.replicationFactor (keep replicas a multiple of the replication factor: RF 2 → 4, 6, …).
# Open the console (private port-forward — works on any cluster):
kubectl -n zaris port-forward svc/zaris-manager-console 8080:7810
# -> http://localhost:8080
# Connect from inside the cluster
zaris://zaris-client.zaris.svc.cluster.local:7861/zaris-k8s
Securing the workspace, exposing the console over HTTPS, dedicated cache node pools, and cloud-specific steps for AKS / EKS / GKE / OpenShift are all in the guides below.
# In the extracted folder, in a terminal running as Administrator
# (or right-click install.cmd -> Run as administrator)
.\install.cmd
Registers the Management Service & Web Console as Windows services, plus the PowerShell modules.
# 1) Point a workspace at the local Management Service (:7801) and activate it
New-ZrWorkspace -Name local -Managers "localhost:7801" -Activate
# 2) Create the store — supervisor mode forks the node processes.
# BaseClientPort is the port your app connects to.
New-ZrStore -Name orders -ReplicationFactor 2 `
-BaseClusterPort 7811 -BaseClientPort 7861
Or do it all in the web console at http://localhost:7810 (no workspace cmdlet needed — add the manager in the UI).
# Connect to the store you created (BaseClientPort 7861 above)
zaris://localhost:7861/orders
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.
When your app runs alongside the store — another Compose service, or a pod in the same cluster — reach it directly on the internal 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
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.
# 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.
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.
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");
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
Browse every release, or read the versioning and compatibility policy.