High-performance, self-contained event stream ingestion and relay service. Capture webhooks, buffer events, and relay to downstream systems with 50K+ messages/second throughput and sub-millisecond latency.
Built for high-throughput event streaming with durable persistence and guaranteed delivery.
Everything you need for reliable event stream processing and relay.
Lock-free channels, batched writes, and optimized SQLite persistence deliver exceptional performance.
SQLite with WAL mode provides crash-safe persistence with configurable retention policies.
Built-in relay workers with exponential backoff retry logic and parallel processing.
Perfect for event-driven architectures and webhook processing.
Capture webhooks from Stripe, GitHub, Twilio, and other services with guaranteed delivery.
Build event pipelines between microservices with durable buffering.
Durable audit trails with replay capability for compliance requirements.
Buffer requests and relay at controlled rates to downstream APIs.
Decouple producers from consumers with reliable message buffering.
Replicate events to multiple downstream systems reliably.
Simple, powerful design for reliable event streaming.
HTTP Requests ───> Ingest Channel ───> BatchWriter ───> SQLite DB
│
▼
RelayChannel
│
▼
RelayWorkers
│
▼
External Endpoints
Deploy as a standalone service with zero external dependencies.
Simple REST API for stream management and event ingestion.
$ curl -X POST http://localhost:5000/admin/streams \
-H "Content-Type: application/json" \
-d '{
"streamId": "webhook-events",
"displayName": "Webhook Events",
"retentionHours": 72,
"orderingRequired": false,
"relayWorkerCount": 4
}'
# Response: 201 Created
$ curl -X POST http://localhost:5000/admin/streams/webhook-events/relays \
-H "Content-Type: application/json" \
-d '{
"endpointUrl": "https://my-backend.com/process",
"httpMethod": "POST",
"headers": {"Authorization": "Bearer token123"},
"timeoutMs": 5000,
"retryAttempts": 3,
"retryBackoffMs": 1000
}'
# Response: 201 Created
$ curl -X POST http://localhost:5000/streams/webhook-events/ingest \
-H "Content-Type: application/json" \
-d '{"event": "user.signup", "userId": 12345}'
# Response: 202 Accepted (<1ms)
$ curl -X POST http://localhost:5000/ingest \
-H "X-Stream-Id: webhook-events" \
-H "Content-Type: application/json" \
-d '{"event": "order.created"}'
# Response: 202 Accepted
$ curl http://localhost:5000/admin/streams/webhook-events/metrics
# Response:
{
"streamId": "webhook-events",
"totalMessagesReceived": 125430,
"totalMessagesRelayed": 125428,
"pendingMessages": 2,
"failedRelays": 0,
"avgLatencyMs": 0.42
}
Flexible configuration via JSON or environment variables.
{
"NoundryStreams": {
"DataPath": "./data/noundry-streams.db",
"ApiKey": "your-secret-key",
"Defaults": {
"ChannelCapacity": 10000,
"BatchIntervalMs": 50,
"BatchMaxSize": 500,
"RetentionHours": 168,
"RelayWorkerCount": 4
},
"Sqlite": {
"CacheSizeMB": 256,
"MmapSizeMB": 1024
}
},
"Kestrel": {
"Endpoints": {
"Http": { "Url": "http://0.0.0.0:5000" }
}
}
}
Built-in OpenTelemetry support for distributed tracing.
Per-stream distributed tracing with OTLP/gRPC export to your observability platform.
Serilog-based structured logging with configurable sinks and log levels.
Complete REST API for stream management and ingestion.
/streams/{streamId}/ingest
Primary ingestion endpoint
/ingest
Header/query-based routing
/admin/streams
Create stream
/admin/streams
List all streams
/admin/streams/{streamId}
Get stream details
/admin/streams/{streamId}/relays
Add relay config
/admin/streams/{streamId}/metrics
Get stream metrics
/health
Liveness check
/health/ready
Readiness check
Deploy Noundry.Streams today and handle 50K+ messages/second with sub-millisecond latency and zero message loss.