{"id":50260943,"url":"https://github.com/kuestenlogik/surgewave","last_synced_at":"2026-05-30T10:01:03.922Z","repository":{"id":360091735,"uuid":"1232032982","full_name":"Kuestenlogik/Surgewave","owner":"Kuestenlogik","description":"Drop-in Kafka replacement on .NET 10 — single binary, no JVM, Kafka-wire-compatible, runtime plugin system.","archived":false,"fork":false,"pushed_at":"2026-05-27T08:42:22.000Z","size":8353,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T10:26:05.960Z","etag":null,"topics":["broker","csharp","distributed-systems","dotnet","event-driven","event-streaming","high-performance","iot","kafka","kafka-alternative","kafka-compatible","low-latency","message-broker","mqtt","pubsub","realtime","redpanda-alternative","streaming-platform"],"latest_commit_sha":null,"homepage":"https://surgewave.io/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Kuestenlogik.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":"MAINTAINERS.md","copyright":null,"agents":null,"dco":null,"cla":".github/CLA.md"}},"created_at":"2026-05-07T14:21:02.000Z","updated_at":"2026-05-27T08:42:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Kuestenlogik/Surgewave","commit_stats":null,"previous_names":["kuestenlogik/surgewave"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Kuestenlogik/Surgewave","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuestenlogik%2FSurgewave","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuestenlogik%2FSurgewave/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuestenlogik%2FSurgewave/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuestenlogik%2FSurgewave/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kuestenlogik","download_url":"https://codeload.github.com/Kuestenlogik/Surgewave/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuestenlogik%2FSurgewave/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33687722,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["broker","csharp","distributed-systems","dotnet","event-driven","event-streaming","high-performance","iot","kafka","kafka-alternative","kafka-compatible","low-latency","message-broker","mqtt","pubsub","realtime","redpanda-alternative","streaming-platform"],"created_at":"2026-05-27T10:02:44.146Z","updated_at":"2026-05-30T10:01:03.886Z","avatar_url":"https://github.com/Kuestenlogik.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CI](https://github.com/Kuestenlogik/Surgewave/actions/workflows/ci.yml/badge.svg)](https://github.com/Kuestenlogik/Surgewave/actions/workflows/ci.yml)\n[![.NET 10](https://img.shields.io/badge/.NET-10.0-512BD4)](https://dotnet.microsoft.com/)\n[![Kafka Compatible](https://img.shields.io/badge/Kafka-4.0%20Compatible-231F20)](https://kafka.apache.org/)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)\n\n# Surgewave\n\n**The complete event streaming platform for .NET 10.**\n\nSurgewave is a complete event streaming platform built end-to-end on .NET 10 — native low-latency transport, signed plugin marketplace, built-in AI pipeline nodes, embedded broker for tests and edge. Full Kafka 4.0 wire compatibility ships in the box, so any existing Kafka client (Confluent.Kafka, librdkafka, kafka-go, …) connects on day one. Adopt Surgewave as your streaming platform; keep your existing Kafka producers and consumers working unchanged.\n\n## What Surgewave Does\n\nSurgewave connects your services, devices, and data in real time. It distributes events reliably, processes streams on the fly, and stores them durably.\n\n- Decouple microservices with pub/sub and request/reply\n- Ingest IoT data from edge devices to the cloud\n- Replicate database changes with built-in Change Data Capture (CDC)\n- Transform, filter, join, and aggregate streams in real time. Use a fluent .NET API or SQL.\n- Store events with configurable retention. Choose the storage engine for your use case: file-based, in-memory, shared-memory, database, or bring your own.\n- Implement CQRS and event sourcing with ordered, replayable event logs\n- Built-in dashboards and materialized views. Integrate into your existing monitoring via OpenTelemetry (OTEL).\n\n## Why Surgewave?\n\n**Easy to adopt**\n- Wire-compatible with Kafka 4.0. Run alongside Kafka or replace it entirely.\n- Your existing clients, tools, and monitoring keep working.\n- Just swap the broker and keep your Kafka clients. Or use Surgewave's .NET client, which switches protocols at runtime.\n- Migrate service by service, in either direction.\n\n**Easy to operate**\n- Pure .NET, no JVM, no ZooKeeper. One technology stack, one team.\n- Run embedded in your app, as a standalone broker, or scaled out across a cluster.\n- Your .NET team can build, deploy, and troubleshoot everything with the skills they already have.\n\n**Built for performance**\n- Designed from scratch on .NET 10 with zero-copy and io_uring.\n- Lower latency, higher throughput, less hardware.\n\n**Built for extensibility**\n- Add storage engines, protocol adapters, or connectors as plugins.\n- Package as `.swpkg` files, install at runtime, no fork required.\n\n## Quick Start\n\n**Start the broker:**\n```bash\ndocker run -p 9092:9092 -p 5050:5050 ghcr.io/kuestenlogik/surgewave\n```\n\nOpen the **Control UI** at [localhost:5050](http://localhost:5050). See the [Control UI guide](docs/quickstart/) for a walkthrough.\n\n\u003e No Docker? See [Building from Source](#building-from-source) below.\n\n**Connect with any Kafka client:**\n```csharp\nvar config = new ProducerConfig { BootstrapServers = \"localhost:9092\" };\n```\n\n## Learn More\n\n| | |\n|---|---|\n| [Getting Started](docs/quickstart/) | Install, configure, and run your first producer/consumer |\n| [.NET Client](docs/clients/dotnet.md) | Producer, consumer, and admin APIs with Source Link debugging |\n| [Kafka Conformance](CONFORMANCE.md) | Per-RPC and per-KIP status table — what's wired, stubbed, and out of scope |\n| [Schema Registry](docs/features/schema-registry.md) | 12 serialization formats with compatibility checking |\n| [Stream Processing](docs/features/streams.md) | Real-time transforms, joins, aggregations, and SQL |\n| [Plugin Development](docs/features/plugin-development.md) | Build and package your own storage engines, connectors, or protocol adapters |\n| [CLI Reference](docs/tools/cli-reference.md) | Manage topics, groups, schemas, and plugins from the command line |\n\n## Building from Source\n\nRequires [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0).\n\n```bash\ngit clone https://github.com/Kuestenlogik/Surgewave.git\ncd Surgewave\ndotnet build Kuestenlogik.Surgewave.slnx -c Release\ndotnet run --project src/Kuestenlogik.Surgewave.Broker\n```\n\nFor the full step-by-step guide — build, publish, and run in all variants (development, self-contained executables, Docker containers) — see [docs/setup/building.md](docs/setup/building.md).\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md). All contributions require signing a [CLA](.github/CLA.md).\n\n## License\n\n[Apache License 2.0](LICENSE). Free for any use, including commercial. Premium extensions (Surgewave.Ai, Surgewave.Replication, Surgewave.Governance, Surgewave.Functions, Surgewave.Fleet, Surgewave.Edge and Surgewave.Storage.Tiering.* among others) live in separate repositories under the Business Source License 1.1. For commercial licensing of those extensions: [licensing@kuestenlogik.com](mailto:licensing@kuestenlogik.com).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuestenlogik%2Fsurgewave","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkuestenlogik%2Fsurgewave","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuestenlogik%2Fsurgewave/lists"}