Kurrent.Surge
2.0.0-preview.385
dotnet add package Kurrent.Surge --version 2.0.0-preview.385
NuGet\Install-Package Kurrent.Surge -Version 2.0.0-preview.385
paket add Kurrent.Surge --version 2.0.0-preview.385
#r "nuget: Kurrent.Surge, 2.0.0-preview.385"
#:package Kurrent.Surge@2.0.0-preview.385
#addin nuget:?package=Kurrent.Surge&version=2.0.0-preview.385&prerelease
#tool nuget:?package=Kurrent.Surge&version=2.0.0-preview.385&prerelease
Kurrent.Surge
The .NET client for KurrentDB, a cloud-native event streaming database.
Installation
dotnet add package Kurrent.Surge
Supported frameworks
- .NET 10.0 or a subsequent version
Quick start
Declare a catalog for your message types. The client reads it to map each CLR type to a schema name.
using Kurrent.Surge.Client;
using Kurrent.Surge.Schema.Catalogs;
[assembly: MessageCatalog("Orders.Events", AlwaysActive = true)]
await using var client = KurrentClient.Create("kurrentdb://localhost:2113?tls=false");
// Append a record to a stream.
var records = new[] { AppendRecord.Create(new OrderPlaced("order-123")) };
var result = await client.Streams.AppendStream("orders-123", records, ExpectedStreamState.NoStream);
Console.WriteLine($"The append wrote revision {result.Revision}.");
// Read the stream back.
await foreach (var message in client.Streams.ReadStream("orders-123")) {
if (message.Value is Record record)
Console.WriteLine(record.Value);
}
namespace Orders.Events {
public record OrderPlaced(string OrderId);
}
Connection strings
kurrentdb://localhost:2113
kurrentdb://admin:changeit@localhost:2113
kurrentdb+discover://node1:2113,node2:2113,node3:2113
Features
- Streams — append, read, subscribe to, and manage streams
- Schema registry — register a schema, get it, and check its compatibility
- Indexes and connectors — create, start, stop, and delete them
- Filter expressions — SQL filters over stream, category, schema name, metadata and JSON payload
- Codecs — JSON, Protobuf and Avro are all built in
- Stream processing — processors with checkpointing, batching, back-off and graceful shutdown
- OpenTelemetry — distributed tracing and metrics
- Dependency injection — first-class
IServiceCollectionintegration - AOT compatible — source generators give operation with no reflection
Message Formats
| Format | Package | Encode and decode | Schema for the registry | Transcode to JSON |
|---|---|---|---|---|
| JSON | built in | Yes | From the CLR type | Not necessary. The payload is JSON |
| Protobuf | built in | Yes | From the CLR type, or from .proto text |
Yes, from .proto text |
| Avro | built in | Yes | From the CLR type, or from .avsc text |
Yes, from .avsc text |
| Bytes | built in | Passthrough | None | No |
Each format has a schema, and the registry checks a schema against the registered version for compatibility. The SDK makes that schema from the CLR type, so each format in the table has one.
Transcoding is different. It reads a payload and writes JSON, and it uses no .NET type. It must read the schema as text.
Protobuf has a .proto file and Avro has an .avsc file. A format with no schema language has no
text to read, so it cannot transcode.
Transcoding is more useful in a server than in a client. A server reads a stored payload that its process has no type for. A client has the type, and the codec gives it the value.
Links
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Google.Api.CommonProtos (>= 2.17.0)
- Grpc.Net.ClientFactory (>= 2.80.0)
- Grpc.StatusProto (>= 2.80.0)
- Microsoft.Extensions.Configuration.EnvironmentVariables (>= 10.0.11)
- Microsoft.Extensions.Diagnostics.HealthChecks (>= 10.0.11)
- Microsoft.Extensions.Hosting (>= 10.0.11)
- Microsoft.Extensions.Http.Resilience (>= 10.9.0)
- Microsoft.Extensions.Telemetry.Abstractions (>= 10.9.0)
- NJsonSchema (>= 11.6.1)
- NodaTime (>= 3.3.0)
- NodaTime.Serialization.SystemTextJson (>= 1.4.0)
- Ulid (>= 1.4.1)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Kurrent.Surge:
| Package | Downloads |
|---|---|
|
Kurrent.Connectors.Pulsar
Package Description |
|
|
Kurrent.Connectors.KurrentDB
Package Description |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Kurrent.Surge:
| Repository | Stars |
|---|---|
|
kurrent-io/KurrentDB
KurrentDB is a database that's engineered for modern software applications and event-driven architectures. Its event-native design simplifies data modeling and preserves data integrity while the integrated streaming engine solves distributed messaging challenges and ensures data consistency.
|
| Version | Downloads | Last Updated |
|---|---|---|
| 2.0.0-preview.385 | 62 | 9/23/2026 |
| 2.0.0-preview.384 | 63 | 9/23/2026 |
| 1.1.1-alpha.1.75 | 1,059 | 9/25/2026 |
| 1.1.1-alpha.1.74 | 58 | 9/24/2026 |
| 1.1.1-alpha.1.72 | 4,768 | 8/4/2026 |
| 1.1.1-alpha.1.71 | 12,079 | 5/13/2026 |
| 1.1.1-alpha.1.70 | 396 | 5/8/2026 |
| 1.1.1-alpha.1.69 | 1,103 | 4/28/2026 |
| 1.1.1-alpha.1.68 | 91 | 4/28/2026 |
| 1.1.1-alpha.1.67 | 136 | 4/28/2026 |
| 1.1.1-alpha.1.65 | 159 | 4/1/2026 |
| 1.1.1-alpha.1.64 | 96 | 3/31/2026 |
| 1.1.1-alpha.1.63 | 88 | 3/30/2026 |
| 1.1.1-alpha.1.61 | 90 | 3/24/2026 |
| 1.1.1-alpha.1.60 | 101 | 2/3/2026 |
| 1.1.1-alpha.1.57 | 13,822 | 1/13/2026 |
| 1.1.1-alpha.1.56 | 4,468 | 12/12/2025 |
| 1.1.1-alpha.1.55 | 498 | 12/11/2025 |
| 1.1.1-alpha.1.53 | 1,268 | 12/8/2025 |
| 1.1.1-alpha.1.52 | 254 | 12/4/2025 |