Skip to content
CAI
Software that uses CAICheck a score

elixir-horde/horde

75.1

Strong · 23 September 2026

3.3k

lines of production code

Elixir

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Horde is a distributed process management library for Elixir that provides a distributed registry and dynamic supervisor to coordinate state and child processes across a cluster of nodes. It ensures eventual consistency of cluster membership and process supervision using CRDT-based state synchronization, supporting pluggable transport backends like Erlang's default distribution or Partisan. The system includes comprehensive testing and examples demonstrating how to share data and manage processes in a distributed environment.

How it got here

2018 — Distributed cluster infrastructure and testing

8 changes.

This period focused on implementing the core distributed cluster and registry infrastructure using CRDT-based state synchronization, alongside establishing comprehensive test coverage for the new modules. The release also included dependency updates, performance benchmarking, and example applications to demonstrate the new distributed capabilities.

2019–2026 — Partisan integration and test coverage

5 changes.

This period focused on extending cluster support to include Plausible's Partisan peer service, introducing pluggable transport backends and a dedicated node listener for non-Erlang distributions. Concurrently, the project expanded its test infrastructure with new helper modules and stress tests to validate distributed behaviors and cluster management features.

Features

Add HelloWorld example demonstrating Horde.DynamicSupervisor and Registry

A new example application named HelloWorld has been added to the examples directory. This minimal application demonstrates how to use Horde.DynamicSupervisor and Horde.Registry to share data across a cluster of nodes. The example includes configuration files (.formatter.exs, .gitignore), a README explaining how to run multiple instances to see the distributed supervisor behavior, and a clustering strategy module (epmd\_healthy.ex) that uses the libcluster library to connect nodes via Erlang's epmd protocol.

_examples/hello\world · high confidence

Add HelloWorld example demonstrating distributed state sharing

A new example application, HelloWorld, has been added to demonstrate how to share data across a Horde cluster. The example uses Horde.Registry for distributed metadata and Horde.DynamicSupervisor for managing child processes across nodes. It includes a GenServer (SayHello) that updates a global counter stored in the registry, showing how nodes can coordinate and share state in a distributed environment.

_examples/hello\_world/lib/hello\world · high confidence

Add HelloWorld example with cluster configuration

A new HelloWorld example application has been added to the examples/hello\_world/config directory. The configuration file sets up a cluster topology using the EpmdHealthy strategy with three specified hosts, and enables debug-level SASL reporting in the logger.

_examples/hello\world/config · medium confidence

Add Partisan-based node listener for cluster membership

A new \Horde.NodeListener.Partisan\ module has been added to support Partisan-based clusters. This listener uses \:partisan.monitor\_nodes/1\ for node monitoring and \:partisan\_peer\_service\ for membership, replacing the default Erlang distribution assumptions. The module is conditionally defined only if the \:partisan\_peer\_service\ library is loaded, ensuring the feature is optional and does not break if Partisan is not present.

_lib/horde/node\listener · high confidence

Introduce distributed cluster and registry infrastructure with CRDT-based state sync

Horde now implements a distributed architecture using DeltaCrdt for eventual consistency of cluster membership, process supervision, and process registries. This introduces new modules including Horde.Cluster for managing node membership, Horde.Registry for distributed process registration, and Horde.DynamicSupervisor for distributed child management. The system supports pluggable distribution strategies (e.g., Uniform, Quorum, Random) and custom cluster transports (e.g., Partisan) to handle network partitions and node failures gracefully.

lib/horde · high confidence

Test app scaffolded with Horde cluster support

A new test application, TestApp, has been added to the project. It includes a standard Elixir application structure with a Horde-based cluster setup (DynamicSupervisor and Registry) and a basic test suite verifying the module's functionality.

_test\app · high confidence

Behavioural changes

Add micro-benchmark for Horde.Registry lookup

A new micro-benchmark has been added to the bench directory to measure the performance of Horde.Registry.lookup/2. The benchmark registers 100,000 entries and then measures the lookup time for a specific key using the Benchee library with 4 parallel processes.

bench · medium confidence

Add pluggable cluster transport implementations

The library now supports pluggable cluster transport backends. A default Erlang-based transport is provided for standard Erlang distribution, while a Partisan-based transport is also included but is conditionally compiled only if the :partisan\_peer\_service module is present, making the Partisan dependency optional.

_lib/horde/cluster\transport · medium confidence

Test coverage

Add comprehensive test suite for cluster, registry, and distribution strategies; Add test helper for HelloWorld example; Added stress test for process management; Added test support modules for distributed supervision and registry scenarios.

Dependencies

Update project dependencies and configuration

The project's \mix.exs\ has been updated to require \delta\_crdt\ version 0.6.2, \libring\ version 1.7, and \telemetry\/\telemetry\_poller\ versions 1.0 or 0.4/0.5 respectively. Additionally, the project now specifies Elixir 1.7+ as a minimum requirement and includes dev/test dependencies such as \ex\_doc\, \benchee\, \stream\_data\, \local\_cluster\, \schism\, and \dialyxir\.

(dependencies) · 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

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 69 → 75 (+5.9)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 95 → 97 (+2.2)
  • Architecture 100 → 99 (-0.6)
  • Maturity 59 → 59 (+0.0)
  • Readiness 68 → 81 (+12.9)
  • Security 81 → 98 (+16.9)

Resolved (13)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — no supported dependency manifest was read
  • Duplicated block (10 lines × 2) (lib/horde/dynamic_supervisor.ex)
  • Duplicated block (8 lines × 2) (lib/horde/dynamic_supervisor.ex)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • No exposed public API
  • Off-boarding risk: anonymized user #1
  • Test reliability not included
  • TooManyMethods: DynamicSupervisorImpl (lib/horde/dynamic_supervisor_impl.ex)

New (19)

  • Documentation: no installation or build instructions (README.md)
  • Duplicated block (8 lines × 2) (lib/horde/dynamic_supervisor.ex)
  • Duplicated block (9 lines × 2) (lib/horde/dynamic_supervisor.ex)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Medium: security finding (details withheld)
  • Medium: security finding (details withheld)
  • No dependency advisory monitoring
  • Off-boarding risk: anonymized user #1
  • Outdated: benchee
  • Outdated: delta_crdt
  • Outdated: dialyxir
  • Outdated: ex_doc
  • Outdated: telemetry
  • Outdated: telemetry_poller
  • Workflow token permissions not restricted

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

elixir-horde/horde 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 23 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 d5c941f08d93b126188bdcc09099adf0e4bbcf4b — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.