vernemq/vernemq_dev
35.3
Weak · 17 September 2026
771
lines of production code
Erlang
primary language
1
measurement over time
What this system is
This system is an Erlang-based MQTT broker development environment that provides the foundational build configuration and API documentation for the vernemq\_dev application. It exposes a comprehensive plugin hook interface, allowing developers to intercept and modify broker behavior through authentication, lifecycle, and delivery callbacks. The system supports MQTT v5 protocol features by defining specific type specifications, constants, and reason codes, while offering administrative APIs to manage client connections and subscriptions.
Features
Add development header with MQTT v5 type specs and constants
A new include file, vernemq\_dev.hrl, has been added to provide type specifications and macro definitions for development and testing. This header introduces Erlang types for MQTT v5 features, including shared subscription policies (such as prefer\_online\_before\_local), hook names for v5-specific callbacks, and reason codes. It also defines constants for MQTT v5 properties (like payload format indicator and message expiry interval) and standard reason codes, enabling consistent type checking and usage of these new protocol features in developer-facing code.
include · high confidence
Generated EDoc documentation for vernemq\_dev\_api
The documentation for the vernemq\_dev application has been generated, specifically covering the vernemq\_dev\_api module. This includes an overview of the application and detailed API references for functions such as disconnect\_by\_subscriber\_id/2, which allows disconnecting a client by subscriber ID, and unword\_topic/1, which converts topic lists into binary iolists.
doc · high confidence
Initial project configuration and build artifacts exclusion
This change establishes the foundational build configuration for the project by adding rebar.config and rebar.lock files, which enable EDoc preprocessing. Additionally, the .gitignore file is updated to exclude the \build directory and backup files (\\~) from version control, ensuring that generated build artifacts and temporary editor files are not committed to the repository.
(repo-wide) · high confidence
New plugin hook interface and API for MQTT broker customization
The \src\ directory now exposes a comprehensive set of Erlang callback modules (hooks) that allow plugins to intercept and modify MQTT broker behavior. This includes authentication hooks (\auth\_on\_publish\, \auth\_on\_register\, \auth\_on\_subscribe\) and lifecycle hooks (\on\_deliver\, \on\_publish\, \on\_subscribe\, \on\_unsubscribe\, \on\_client\gone\, etc.), with specific variants for MQTT v5 (\\\_m5\) that support protocol-specific properties and modifiers. Additionally, \vernemq\_dev\_api.erl\ provides new public API functions for administrators to force-disconnect clients by subscriber ID, reauthorize existing subscriptions against current hooks, and handle topic unwording.
src · 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 35.
Lenses
- Code Health 100
- Architecture 69
- Maturity 19
- Readiness 17
- Security 100
Changes since last survey
- 42 commits — 38 feature/other, 4 fixes
By area
- (repo) — 8 commits
- include/vernemq_dev.hrl — 7 commits
- (root) — 5 commits
- src/auth_on_publish_m5_hook.erl — 4 commits
- src/vernemq_dev_api.erl — 4 commits
- src/on_deliver_hook.erl — 3 commits
- doc/auth_on_publish_hook.html — 2 commits
- src/vmq_topic.erl — 2 commits
- doc/vernemq_dev_api.html — 1 commit
- src/auth_on_publish_hook.erl — 1 commit
- src/auth_on_register_hook.erl — 1 commit
- src/on_message_drop_hook.erl — 1 commit
- src/on_session_expired_hook.erl — 1 commit
- src/on_topic_unsubscribed_hook.erl — 1 commit
- src/vernemq_dev.app.src — 1 commit
Notable commits
- fix: Fix doc
- fix: Fix force disconnect
- fix: Fix on_deliver spec so that it matches actual code
- fix: Update to fix plugin workflow
- change: Add API for disconnecting clients (#2)
- change: Add prefer_online_before_local to type spec.
- change: Add new API to reauthorize existing subscriptions of a user
- change: Add on_message_drop callback (#5)
- change: Add on_session_expired hook
- change: Add optional callback versions to auth_on_register hooks
- change: Add properties to on_deliver_hook
- change: Add spec for password obfusication
- change: Add support for unwording the empty topic
- change: Document some property modifiers
- change: Document the remaining modifiers
- change: Implement callbacks for the MQTTv5 hooks
- change: Initial commit
- change: Make it harmless to include the header file multiple times
- change: Make the properties easier to understand by removing the macros
- change: Merge pull request #12 from redclawtech/add_new_hooks
- …and 22 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
vernemq/vernemq_dev 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 66ce2cc58ba2f79f748e1a77635582f27273e20d — 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.