The Durable Streams protocol is designed to support implementations in any language or platform. While the monorepo includes official client libraries for TypeScript, Python, Go, Elixir, .NET, Swift, PHP, Java, Rust, and Ruby, the community has also built additional implementations.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/durable-streams/durable-streams/llms.txt
Use this file to discover all available pages before exploring further.
Community Client Libraries
Go
ahimsalabs/durable-streams-go An alternative Go client and server implementation.Java
Clickin/durable-streams-java An alternative Java client with framework adapters.Building Your Own Implementation
The protocol is designed to support implementations in any language or platform. A conforming implementation requires:For Server Implementations
- HTTP API - Implement the protocol operations (PUT, POST, GET, DELETE, HEAD) as defined in the Protocol Specification
- Durable storage - Persist stream data with offset tracking (in-memory, file-based, database, object storage, etc.)
- Offset management - Generate opaque, lexicographically sortable offset tokens
For Client Implementations
Client implementations need only support:- Standard HTTP requests (PUT, POST, GET, DELETE, HEAD)
- Offset tracking for resumability
- Optional: Live streaming modes (long-poll, SSE)
- Optional: Idempotent producer protocol for exactly-once writes
Conformance Testing
The monorepo includes comprehensive conformance test suites to verify your implementation:Server Conformance Tests
Test that your server correctly implements the Durable Streams protocol:- Stream creation and deletion
- Data append operations
- Offset-based reads
- Live streaming modes (long-poll, SSE)
- Idempotent producer protocol
- JSON mode handling
- Error conditions and edge cases
Client Conformance Tests
Test that your client correctly interacts with the protocol:- Basic read/write operations
- Offset management and resumability
- Live streaming modes
- Idempotent producer behavior
- JSON mode handling
- Error handling
- Binary and text content types
Performance Benchmarking
Measure your implementation’s performance:Contributing Your Implementation
We welcome community implementations! If you’ve built a Durable Streams client or server:- Ensure it passes the conformance test suite
- Document installation and usage in your repository
- Open a pull request to add your implementation to this page
- Language/platform name
- Repository link
- Brief description of unique features or design choices
- Conformance test results (if applicable)
Reference Implementations
The official monorepo contains reference implementations that can serve as examples:Client Libraries
| Language | Package | Location |
|---|---|---|
| TypeScript | @durable-streams/client | packages/client |
| Python | durable-streams-client-py | packages/client-py |
| Go | durable-streams-client-go | packages/client-go |
| Elixir | durable_streams | packages/client-elixir |
| .NET | DurableStreams.Client | packages/client-dotnet |
| Swift | DurableStreamsClient | packages/client-swift |
| PHP | durable-streams/client | packages/client-php |
| Java | durable-streams-client | packages/client-java |
| Rust | durable-streams-client | packages/client-rust |
| Ruby | durable-streams-client | packages/client-rb |
Server Implementations
- Node.js Reference Server -
@durable-streams/server(development only) - Caddy Plugin - Production-ready server implementation in Go