Surgewave Documentation
Surgewave is a Kafka-wire-compatible message broker written in .NET 10. It implements the Kafka 4.x protocol, plus a native protocol for first-class .NET clients, and ships an embedded mode for in-process use in tests, CLI tools, and edge runtimes.
This is the technical reference. For a marketing overview, comparison tables, and use-case stories see the Surgewave site.
Migrating from Apache Kafka
Surgewave accepts unmodified Kafka clients on port 9092. Three integration paths cover the typical scenarios:
| Path | Code Changes | Notes | Guide |
|---|---|---|---|
| Wire compatibility | None — point existing Confluent.Kafka at the broker | Kafka protocol baseline | — |
| API Wrapper | Swap NuGet package only | Native protocol under the same producer/consumer API | Migration Guide |
| Native Client | Use Kuestenlogik.Surgewave.Client directly |
Full native-protocol surface | Surgewave.Client Docs |
Quick Start:
// Step 1: Replace NuGet package
// Confluent.Kafka → Kuestenlogik.Surgewave.Compatibility.Confluent.Kafka
// Step 2: Add one config line for low-latency native protocol
var config = new ProducerConfig
{
BootstrapServers = "surgewave:9092",
SurgewaveProtocol = "surgewave" // Enable native protocol
};
// Step 3: Your existing code works unchanged!
Choose Your Path
Application Developers
Build applications that produce and consume messages.
| Guide | Description |
|---|---|
| Quickstart | Get started in 5 minutes |
| .NET Client | Native Surgewave client API |
| Confluent.Kafka Wrapper | Drop-in wrapper for existing Confluent.Kafka call sites |
| Kafka Protocol Compatibility | Use existing Kafka clients unchanged |
| Producer API | Sending messages |
| Consumer API | Receiving messages |
| Streams | Real-time stream processing |
| AI & LLM | AI pipelines, guardrails, agent memory |
| Connectors | Pre-built data integrations |
| Custom Connectors | Build your own connectors |
DevOps / Administrators
Deploy, configure, and operate Surgewave in production.
| Guide | Description |
|---|---|
| Installation | All deployment options |
| Docker | Container deployment |
| Kubernetes | K8s manifests and operators |
| Helm Charts | Helm-based deployment |
| Configuration | All configuration options |
| Storage | Storage backend selection |
| Clustering | Multi-broker setup |
| Security | SASL, TLS, ACLs |
| Monitoring | Metrics, tracing, dashboards |
| Operations | Troubleshooting and maintenance |
| CLI Reference | 65+ administrative commands |
Contributors / Developers
Build Surgewave from source and contribute to the project.
| Guide | Description |
|---|---|
| Building from Source | Clone, build, and run |
| Architecture | System design overview |
| Testing | Running tests and benchmarks |
| Chaos Testing | Resilience and fault injection testing |
| Regression Suite | Automated performance regression detection |
Key Features
| Feature | Description |
|---|---|
| Kafka 4.0 Wire | Accepts unmodified Kafka 4.0 clients on port 9092 |
| Native Protocol | Binary protocol for .NET clients alongside the Kafka wire (target — public benchmarks pending) |
| Multi-Backend Storage | Memory, FileSystem, Arrow, Parquet, RocksDb, Lmdb, DuckDb, Sqlite, NvmeDirect, S3, Tiered |
| Multiple Transports | Kafka protocol, Native binary, gRPC, Shared Memory IPC |
| Transactions & Streams | Exactly-once semantics, Schema Registry, Kafka Streams compatibility |
| Kafka Connect | 10+ built-in connectors for S3, Azure, GCS, databases, MQTT, Redis, HTTP |
| Clustering | Multi-broker with KRaft consensus, automatic failover |
| Security | SASL (PLAIN, SCRAM), TLS, ACL authorization |
| Single Binary | No ZooKeeper, embedded option for in-process tests |
Performance
Surgewave's CI regression harness tracks throughput and transport overhead; latency-percentile measurements (P50/P99) are part of the 1.0 release sign-off and will be published in Benchmarks when available.
A representative throughput run on 100K × 100-byte messages (Surgewave native protocol vs. Apache Kafka, single broker, same hardware) is reproduced below; for the full methodology and per-backend numbers see Benchmarks.
| Metric | Apache Kafka | Surgewave Native |
|---|---|---|
| Producer | 68K msg/s | 1.25M msg/s |
| Consumer | 138K msg/s | 1.28M msg/s |
Architecture Overview
flowchart TB
subgraph Broker["Surgewave Broker"]
subgraph Protocols["Protocols"]
P1[Kafka Wire]
P2[Native Binary]
P3[gRPC]
P4[Shared Memory]
end
subgraph Features["Features"]
F1[Transactions]
F2[Schema Registry]
F3[Kafka Connect]
F4[Kafka Streams]
F5[AI Pipelines]
end
subgraph Storage["Storage"]
S1[Memory]
S2[FileSystem]
S3[Arrow/Parquet]
S4[RocksDb/Lmdb]
S5["Tiered (S3/Azure)"]
end
end
subgraph Clustering["Clustering (KRaft)"]
K1[Leader Election]
K2[Replication]
K3[Automatic Failover]
end
Broker --- Clustering
Getting Help
- Troubleshooting - Common issues and solutions
- Glossary - Key terms and concepts
- GitHub Issues - Bug reports and feature requests
- Roadmap - Development status and plans