IonStream is a high-performance distributed streaming platform with Raft-based consensus, gRPC-native protocol, and append-only log storage — delivered as a single native binary.
IonStream replaces complex multi-service deployments with a single self-contained broker — no JVM, no ZooKeeper, no external coordination.
Built from the ground up for modern .NET workloads with no compromises on performance or correctness.
Full Raft implementation for leader election and log replication. No ZooKeeper, no external coordinator — just the algorithm, built-in.
First-class gRPC with HTTP/2 multiplexing. Bidirectional streaming, typed contracts, and a full REST proxy — no custom binary protocol.
Memory-mapped log segments with sparse offset indexes, configurable size-based rolling, time-based retention, and compaction.
Complete consumer group protocol: join, sync, heartbeat, rebalance, offset commit and fetch — with durable offset tracking per group.
Built-in Prometheus exporter, operation-level duration histograms, Raft consensus metrics, and pre-built Grafana dashboards.
Mirror topics across clusters with REPLICA_N_* environment variables. Loop prevention via cluster naming — built for geo-redundancy.
Per-topic retry pipelines with configurable backoff stages and dead letter queues. Consumers ack or nack each message; failed messages auto-route through staged retries into the DLQ. Full DLQ management API and dashboard.
Compiles to a self-contained native binary for win-x64 and linux-x64. Instant startup, minimal memory, no runtime required.
Automatic certificate generation with shared cluster CA derivation. Bring your own PFX or let IonStream self-manage — zero-config TLS for dev and prod.
Add nodes to a running cluster without restarts. Odd-count additions trigger automatic Raft quorum promotion. Even-count joins as read-only mirrors.
IonStream's .NET client wraps System.Threading.Channels for natural async/await produce and consume patterns. No callbacks, no polling.
await using var client = new IonStreamClient("localhost", 9000); // Produce await client.SendAsync(new ProducerMessage( topic: "events", value: Encoding.UTF8.GetBytes("hello"), key: Encoding.UTF8.GetBytes("key-1") )); // Consume with Channels API ChannelReader<StreamMessage> reader = client.CreateConsumerChannel("events", "my-group"); await foreach (var msg in reader.ReadAllAsync()) { var text = Encoding.UTF8.GetString(msg.Value.Span); Console.WriteLine($"offset {msg.Offset}: {text}"); }
Official client libraries for the languages your team already uses. Client libraries are MIT-licensed — free forever.
Free for individuals, education, and companies under $10M annual revenue. $5,000/year flat for larger enterprises — no per-seat, no per-node. Client libraries are always free under MIT.
Purpose-built for .NET ecosystems with modern primitives and a dramatically simpler operational model.
| Feature | Kafka | Redpanda | NATS JetStream | IonStream |
|---|---|---|---|---|
| Runtime | JVM | C++ | Go | .NET 10 AOT |
| External Dependencies | ZooKeeper (legacy) | ✓ None | ✓ None | ✓ None |
| Wire Protocol | Custom TCP | Kafka Protocol | NATS Protocol | gRPC / HTTP/2 |
| Consensus | KRaft / Raft | Raft | Raft | Raft |
| Native .NET Client | Confluent SDK | Kafka-compat | ✓ | ✓ Optimized |
| Channels API | ✗ | ✗ | ✗ | ✓ |
| Browser / gRPC-Web | ✗ | ✗ | Partial | ✓ REST + gRPC-Web |
| Prometheus / OTel | Via plugin | ✓ | ✓ | ✓ Built-in |
| Admin UI | External (Kafdrop) | ✓ Built-in | ✓ Built-in | ✓ Dashboard |
| Grafana Dashboards | Community | ✓ Built-in | Community | ✓ Included |
Single binary. One command. Up and running in under a minute.