// the find
deepstreamIO/deepstream.io
deepstream.io server
A Node.js and TypeScript realtime server that gives clients and backend services three shared primitives: synced JSON records, pub/sub events, and RPCs, plus authentication and a permission language. It suits teams building collaborative or live-updating apps who would rather not hand-roll websocket state sync and authorization.
- The Valve permission layer is real engineering rather than a role-string wrapper. src/services/permission/valve has a config compiler, rule and path parsers, a rule cache, and cross-reference and record-patch handling, so authorization can depend on the data being read or written.
- Storage, cache, cluster-node and logger backends are swapped through connectors (Postgres, MongoDB, Elasticsearch, RethinkDB, Redis, Memcached, Hazelcast) rather than code changes, which keeps the core small enough to reason about.
- One core serves several transports: JSON, text and binary websocket endpoints, plus HTTP and MQTT. All of them feed the same record, event and RPC handlers, so behaviour doesn't drift between client types.
- The e2e suite (test-e2e with features and step definitions) drives real clients against a running server, which is the right test for a stateful realtime system. Unit specs sit beside the handlers.
- A fresh clone doesn't build from the README alone. Connectors and plugins are git submodules, so you need submodule init, and the contributing section still says Node 10+ and TypeScript 3+. Expect to read scripts/ to get a working dev setup.
- The README answers none of the operational questions an adopter asks first: what happens to in-flight records when a cluster node dies, how cache and storage stay consistent on writes, and what the scaling limits are. Those answers live on the external docs site or in the source.
- Stars and a recent push say little about bus factor. Most of the work comes from a small group tied to one company, so before betting a product on it, check release cadence in CHANGELOG.md and whether the features you need are maintained or just present.