skynet64/emqttd
31.4
Weak · 17 September 2026
11.1k
lines of production code
Erlang
primary language
1
measurement over time
What this system is
This system is an MQTT broker built on the EMQ 2.1.2 core, designed to handle message publishing, subscription management, and client connections. It features persistent storage for subscriptions and state using Mnesia and KVS, ensuring data survives restarts. The system includes comprehensive testing for protocol handling, authentication, and routing, along with documentation for various MQTT broker variants.
Features
Added documentation pages for MQTT broker variants
Added HTML documentation files for the man directory, providing usage and release notes for EMQ, EMQX, Mosquitto, NanoMQ, and the SYNRC MQTT server.
man · high confidence
Behavioural changes
Migration from ETS to Mnesia and KVS for persistent MQTT subscriptions
The system now uses Mnesia and the KVS application to store MQTT subscription data (subscriptions, subscribers, and properties) instead of in-memory ETS tables. This change ensures that subscription state persists across restarts and is stored on disk (disc\_copies). The application startup sequence has been updated to initialize the KVS and Mnesia tables before starting servers, and the \emqttd.app.src\ dependency list has been updated to include \kvs\ while removing \pbkdf2\. Additionally, the \emqttd\_client\ and \emqttd\_http\ modules have been updated to use a new connection API that passes the connection object explicitly to methods like \peername\ and \async\_send\.
src · high confidence
Simplified MQTT subscription record definitions
The detailed \mqtt\_subscription\ record and its type definition have been replaced with generic \{key, value}\ records for subscriptions, subscription properties, and subscribers. This change removes the specific fields for subscription ID, topic, and QoS level in favor of a more flexible key-value structure.
include · high confidence
Updated project documentation and build configuration
The project website and documentation have been updated to reflect the current state of the software. The README now specifies EMQ 2.1.2 as the core server, highlights new persistent features (routes, subscriptions) and KVS database support, and updates the installation instructions to use rebar3 instead of the previous tooling. The build configuration (rebar.config) has been adjusted to include specific Erlang compiler options, add the KVS dependency, and switch several dependencies (lager, mochiweb, esockd) to use the master branch from the skynet64 GitHub organization. A new index.html landing page has been added to provide an overview of the MQTT server, its usage, and release notes.
(repo-wide) · high confidence
Test coverage
Added comprehensive Common Test suite for EMQTT broker
Added a new Common Test suite (\emqttd\_SUITE\) and supporting test modules to verify core EMQTT broker functionality. The tests cover MQTT protocol handling (including SSL one-way and two-way authentication), pub/sub operations, routing, session management, metrics, hooks, HTTP API, alarms, and CLI commands. Additional test modules validate access control rules, inflight message tracking, utility libraries (GUIDs, priority queues, base62), message queues (simple and priority), network keepalive, and protocol serialization/parsing. Test data including SSL certificates and configuration files are included to support these validations.
test · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 31.
Lenses
- Code Health 93
- Architecture 100
- Maturity 30
- Readiness 8
- Security 87
- Event Sourcing 100
- Accessibility 46
Changes since last survey
- 112 commits — 103 feature/other, 9 fixes
By area
- (root) — 55 commits
- src/emqttd.erl — 10 commits
- (repo) — 5 commits
- src/emqttd_app.erl — 5 commits
- src/emqttd_router.erl — 5 commits
- src/emqttd.app.src — 4 commits
- src/emqttd_kvs.erl — 4 commits
- src/emqttd_server.erl — 3 commits
- src/emqttd_auth_mod.erl — 2 commits
- src/emqttd_mnesia.erl — 2 commits
- src/emqttd_vm.erl — 2 commits
- etc/certs — 1 commit
- include/emqttd.hrl — 1 commit
- include/emqttd_protocol.hrl — 1 commit
- man/emq.htm — 1 commit
- man/mq.htm — 1 commit
- src/emqttd_access_control.erl — 1 commit
- src/emqttd_cli_config.erl — 1 commit
- src/emqttd_guid.erl — 1 commit
- src/emqttd_mqueue.erl — 1 commit
Notable commits
- fix: Fix -callback
- fix: Fix do_subscribe_
- fix: Fix emqttd:shutdown for sessions
- fix: Fix emqttd_router start
- fix: Fix emqttd_server:do_subscribe_
- fix: Fix mnesia(copy)
- fix: fix
- fix: fix loading plugins
- fix: fix run
- change: Add all kvs-tables to mnesia(copy)
- change: Add bpe to shutdown()
- change: Add ekka:start()
- change: Add ekka:start() for emqttd:start()
- change: Add ekka_mnesia:wait_for(tables)
- change: Add handle_info({membership,...)
- change: Add kvs:join() for start()
- change: Add load_db to emqttd_mnesia and update emqttd_router
- change: Add mnesia in app.src
- change: Add mnesia:wait_for_tables to mnesia(copy)
- change: Add new emqttd_auth_mod.erl
- …and 92 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
skynet64/emqttd was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 17 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit a7653be60b80a11a25bed02c731d8b3124df0bcb — the exact code this score is about.
- Scored under rubric-2026.09.13 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-d1ef6c0bd534.