emqx/ekka
68.6
Adequate · 2 October 2026
2.4k
lines of production code
Erlang
primary language
2
measurements over time
What this system is
Ekka is an Erlang library that provides automatic clustering and node discovery capabilities for EMQX. It supports multiple discovery strategies, including static seeds, DNS, Kubernetes, and etcd, while handling cluster formation, healing, and distributed locking. The system is designed to replace ad-hoc clustering implementations with a unified API for joining and leaving clusters.
Features
Added etcd cluster startup scripts
A new script file (scripts/cluster.etcd.sh) has been added to facilitate the startup of an etcd-based cluster. The script launches two Erlang nodes (ekka1 and ekka2) on localhost using the ekka application and the autocluster behavior, configured via data/app.etcd.
scripts · high confidence
Initial project structure and dependency configuration for Ekka
This change introduces the foundational build and configuration files for the Ekka autocluster project. It establishes a Rebar3-based build system (Makefile, rebar.config) with a minimum OTP 21 requirement, configures static analysis tools (xref, dialyzer), and defines the core runtime dependencies: mria (v1.0.1), hackney, snabbkaffe, and eetcd. It also sets up the test profile with meck and proper, adds a GitHub Actions coveralls script, and provides initial documentation and editor configuration.
(repo-wide) · high confidence
Introduce Ekka as a standalone clustering and autoclustering library
The \src\ directory now contains the Ekka library, which provides automatic clustering capabilities for EMQX. This includes a unified API for joining and leaving clusters, support for multiple discovery strategies (DNS, etcd, Kubernetes, static seeds), and a distributed locking mechanism. The library also handles node distribution protocols and provides utilities for generating global unique IDs, replacing previous ad-hoc clustering implementations.
src · high confidence
New example configuration file for Ekka with manual discovery default
A new example configuration file (etc/ekka.config.example) has been added to the project, providing a reference setup for the Ekka clustering tool. The file demonstrates various cluster discovery methods—including static node lists, DNS, etcd (with v3 support and SSL options), and Kubernetes—but sets the default active discovery method to 'manual' with an empty list, meaning users must explicitly configure their preferred discovery strategy to enable automatic clustering.
etc · high confidence
Behavioural changes
Added etcd configuration for cluster discovery
A new configuration file (data/app.etcd.config) has been added to enable cluster discovery via etcd. This configuration sets up the ekka cluster to connect to an etcd server at http://127.0.0.1:2379, using the prefix 'ekkacluster' and a node TTL of 60000ms, allowing the system to automatically heal and discover cluster nodes through etcd.
data · high confidence
Test coverage
Added Common Test suites for ekka clustering and utilities; Added test configuration for ekka cluster setup.
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
Score
- CAI 68 → 69 (+0.4)
- Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 94 → 94 (+0.0)
- Architecture 100 → 100 (+0.0)
- Maturity 56 → 56 (+0.0)
- Readiness 64 → 64 (+0.0)
- Security 92 → 95 (+2.7)
Resolved (3)
- Coverage not measured — no coverage collector is wired up
- Documentation: no contributor guidance (README.md)
- Off-boarding risk: anonymized user #1
New (4)
- Dependency hygiene PARTLY measured — rebar3 pinning read, dependency currency not (no rebar.lock-pinned Hex declaration to grade)
- Documentation: no installation or build instructions (README.md)
- No dependency lockfile committed (rebar.config)
- Off-boarding risk: anonymized user #1
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
emqx/ekka 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 2 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 1e44121478f90bc7269158b2c035d52729966fb8 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.