Main features
- API over HTTP, WebSocket and MQTT
- Document storage with advanced search on Elasticsearch
- Realtime pub/sub and filtered database change notifications
- Users, profiles and roles for fine-grained API permissions
- Local login, OAuth through a Passport.js plugin, and API keys
- TypeScript framework for custom controllers, pipes and hooks
- Plugins, including Amazon S3 and Prometheus
- Built-in cluster mode
- Vue.js Admin Console and the Kourou CLI
- SDKs for JavaScript/TypeScript, Dart, C# and Java/Kotlin
What Kuzzle does
Kuzzle is a backend and a framework at once. Out of the box it exposes one API over HTTP, WebSocket and MQTT for storing and searching documents, managing users and permissions, and receiving realtime notifications. You then extend it in TypeScript: add your own API controllers, intercept existing actions with pipes and hooks, or install plugins. The company behind it, based in Montpellier, France, also builds an IoT platform on top of it, which explains the MQTT support and the focus on devices as well as web and mobile apps.
Data is stored in Elasticsearch, organized into indexes, collections and documents, so full-text and geographic search are strong points. The documentation is upfront about the trade-offs: Elasticsearch is a search engine first, so there are no transactions, field mappings cannot be changed once set, and newly written data becomes searchable in near real time rather than instantly.
Realtime and access control
The realtime engine offers two modes. Pub/sub rooms let clients exchange messages without storing anything. Database notifications let clients subscribe to changes in a collection with filters, so they are only told about the documents they care about. Both need a persistent connection over WebSocket or MQTT.
Permissions work on API actions. Roles list which controller actions are allowed, profiles group roles and can limit them to specific indexes or collections, and users get one or more profiles. Rules that depend on the data, such as letting users edit only their own messages, are written as pipes in your application code. Take note of the secure-setup step: on a fresh install anonymous users can call any API action until you create the first administrator and reset anonymous rights.
Login uses pluggable strategies. Username and password is built in, OAuth providers come through a Passport.js plugin, and API keys are available for machine access.
Self-hosting Kuzzle
Kuzzle is a Node.js application that needs Elasticsearch and Redis. The Kourou CLI scaffolds a project with a Docker Compose file that starts all three, and the same app can be deployed to any container platform. Cluster mode is built in for running several nodes. The Admin Console, a Vue.js single-page app for managing data, users and rights, can run locally or be used from Kuzzle’s hosted copy, which talks directly to your server.
Hosted version
The company sells support plans and training, and Kuzzle PaaS, where it sets up, hosts and manages the Kuzzle IoT platform for customers. We found no self-service hosted backend with a free tier comparable to Firebase’s.
Limitations
There is no built-in file storage (an S3 plugin covers this) and no serverless functions; custom logic means writing and deploying a Node.js app. Elasticsearch is heavier to run than PostgreSQL or SQLite, and its lack of transactions matters for some workloads. The community is smaller than those of Supabase or Appwrite.
Who it suits
Kuzzle suits teams building IoT or data-heavy apps that need MQTT, search and realtime notifications in one API, and who are comfortable writing their business logic in TypeScript. For a typical web or mobile app backend, the larger projects in this category are easier starting points.
License details
Apache-2.0. The Admin Console, SDKs and CLI are also Apache-2.0. The Kuzzle IoT platform and its hosted PaaS are separate commercial offers.
Technical details
Self-hosting needs
- Elasticsearch
- Redis
Built with
- Node.js
- TypeScript
GitHub topics
- api-server
- backend
- elasticsearch
- hacktoberfest
- iot
- kuzzle
- kuzzle-server
- mqtt-server
- node-js
- persistent-data
- real-time
- redis
- scalable
- websockets
Reviewed by the OpenSourcePicks editors from the project's repository and documentation. Something out of date? Tell us.