Esiur turns plain objects into networked resources: properties stay in sync in real time, methods call like local functions, and events propagate to every subscriber. One self-describing protocol — EP — with wire-compatible, actively developed implementations for .NET and TypeScript.
Two actively maintained implementations, both speaking the same EP protocol — a .NET server and a TypeScript client (or vice versa) interoperate directly, with no translation layer in between.
Source-generated resources, native TCP and ASP.NET Core WebSocket hosting, Entity Framework Core and MongoDB stores, multi-step authentication, and AES-256-GCM session encryption.
dotnet add package Esiur.AspNetCore --version 3.0.0
Connect from any browser or Node process, host resources with
EpServer, stream async generators pull or push, and relay
resources across nodes — no code generation required.
npm install esiur
A small set of primitives — resources, properties, events, and a warehouse to host them in — cover most of what real-time, distributed applications need.
Assign a field on the server and every subscribed peer sees the update. No polling loops, no hand-wired change events.
Attach to a resource path without a predeclared type — the server answers a type-definition query on demand and the client builds a typed proxy.
EP is a compact, documented wire format over TCP or WebSocket — the same bytes on the wire regardless of which implementation is on either end.
Multi-step handshakes for initializer, responder, or dual identity; password and post-quantum PPAP (ML-KEM-768) providers; AES-256-GCM sessions.
A resource fetched from one node can be re-served from another node's own warehouse — calls and events forward transparently through the relay.
Exported functions can be async generators, streamed back chunk by chunk — pausable, resumable, and terminable mid-stream.
The same three steps, whichever language you start in.
Mark a class as a resource and export the properties, methods, and events you want visible to peers.
Put the resource in a store, put the store in a
Warehouse, and serve the warehouse over EP — TCP or WebSocket.
Any Esiur client — .NET or TypeScript — attaches
with an ep:// URL and gets a live, typed proxy back.
EP's packet framing, value encoding, and authentication handshake are documented in full.