Streaming Provider

var provider = new Provider("events");

// Use IAsyncEnumerable for streaming
provider.RegisterStream("subscribe", async (string topic) =>
{
    await using var subscriber = await SubscribeAsync(topic);
    await foreach (var evt in subscriber)
    {
        yield return evt;
    }
});

await provider.ServeAsync("unix:///tmp/saikuro.sock");

Client with Logging

var client = new Client();
await client.ConnectAsync("tcp://10.0.0.5:7700");

// Structured logging
await client.LogAsync("info", "myapp", "started", new { version = "1.0" });

// With timeout
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
var result = await client.CallAsync<int>("math.add", new object[] { 1, 2 }, cts.Token);