Skip to content
CAI
Software that uses CAICheck a score

erleans/vonnegut

55.4

Adequate · 2 October 2026

3.8k

lines of production code

Erlang

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Kafka-compatible message broker implemented in Erlang, designed to handle message production, consumption, and log segment management. It features a distributed cluster architecture using Partisan for peer discovery and coordination, supporting multi-node topologies with head, tail, and solo roles. The infrastructure includes comprehensive observability via Prometheus metrics, automated CI/CD pipelines, and Kubernetes deployment support through Helm charts.

Features

Initial Helm chart for deploying the Vonnegut application on Kubernetes

This change introduces a new Helm chart (v0.1.0) that enables users to deploy the Vonnegut application as a StatefulSet on Kubernetes. The chart configures a headless Service exposing both data and Partisan clustering ports, a ConfigMap for discovery settings, and persistent storage via volume claim templates. It also includes a README with instructions for running the cluster in Minikube and a StorageClass definition for GCE persistent disks.

helm · high confidence

Initial configuration files for vonnegut, partisan, and observability

Added configuration files for the vonnegut application, including environment-specific settings (sys.config, prod\_sys.config, proper.config, test.config) and Erlang VM arguments (vm.args, prod\_vm.args). These files configure the vonnegut chain (name, discovery, port 5588), partisan clustering (peer IP/port), and logging via lager. Additionally, shared.config introduces prometheus metrics collectors for monitoring active topics, log segments, open connections, replicas, chains, and node roles (head/middle/tail/solo), as well as counters for write repairs and client requests.

config · high confidence

Introduce core Kafka-compatible storage and client infrastructure

This change adds the foundational components for a Kafka-like message broker, including the \vg\_active\_segment\ state machine for managing log segments and indexing, \vg\_chain\_state\ for cluster topology and role management (head, tail, solo), and \vg\_client\ for encoding/decoding Kafka protocol requests (metadata, fetch, produce). It also introduces \vg\_client\_pool\ for managing connection pools to cluster nodes, \vg\_cluster\_mgr\ for topic lifecycle management, and \vg\_cleaner\ for segment retention. The implementation uses the \shackle\ library for TCP communication and \gproc\ for process registration, establishing the core data path and cluster coordination logic.

src · high confidence

Introduce vg.hrl header with Kafka protocol constants and internal types

Added the vg.hrl header file defining core constants for the vg system, including Kafka API version 2 support, request types (Produce, Fetch, Metadata), and compression codecs (GZIP, Snappy, LZ4). The file also introduces custom request codes for internal replication and topic management, error codes, and the \#chain record structure used to represent cluster topology with head and tail node information.

include · high confidence

Behavioural changes

Default cluster port and configuration structure updated

The cluster now uses port 5588 as the default endpoint for client connections, replacing the previous default. This change is implemented via new \sys.config\ and \vm.args\ files that define the Vonnegut chain discovery (pointing to nodes on ports 15555-15557 with peer ports 5588-5590), configure the Partisan peer service manager, and set up logging via Lager with specific file backends for error and debug logs.

cluster · high confidence

Test coverage

Expanded test coverage for log management, protocol handling, and clustering

Added Common Test suites and property-based tests to verify core functionality: log cleanup policies (deleting segments based on retention), log rolling and index regeneration, Kafka protocol encoding/decoding (including handling incomplete messages), topic creation and write operations, consumer fetch behaviors (including multi-topic and high-water-mark edge cases), and multi-node cluster startup and role management. Also added a property-based state machine test for the VG module to validate write and fetch operations under random command sequences.

test · high confidence

Dependencies

Major dependency overhaul and infrastructure modernization

The project has significantly expanded its dependency footprint and build infrastructure. Core runtime dependencies have shifted from a minimal set (ranch, gproc) to a comprehensive stack including shackle, partisan, erlware\_commons, acceptor\_pool, and recon, alongside new metrics and health-check libraries (prometheus, elli, elli\_prometheus). The build tooling has been upgraded to require Erlang/OTP 29 and rebar3 3.27.0, with the introduction of a multi-stage Dockerfile, GitHub Actions CI, and static analysis via Eqwalizer and Dialyzer. Additionally, the project license has been updated to Apache 2.0.

(repo-wide) · 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

Score

  • CAI 54 → 55 (+1.7)
  • Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 93 → 93 (+0.0)
  • Architecture 100 → 100 (+0.0)
  • Maturity 63 → 63 (+0.0)
  • Readiness 41 → 43 (+2.2)
  • Security 77 → 86 (+8.6)
  • Event-Driven 54 → 54 (+0.0)

Resolved (1)

  • Coverage not measured — no coverage collector is wired up

New (3)

  • Documentation: no contributor guidance (README.md)
  • Outdated: elli_prometheus
  • Outdated: prometheus

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

Survey your own repository

erleans/vonnegut 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 396fdc5025066eb04747814e17414f224fa2658d — 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.