Skip to content
CAI
Software that uses CAICheck a score

beam-telemetry/telemetry_poller

59.6

Adequate · 2 October 2026

662

lines of production code

Erlang

with Elixir

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a telemetry polling library that periodically gathers and publishes VM-level metrics as Telemetry events. It provides built-in measurements for memory usage, run queue lengths, system counts, and process information. The project has been fully rewritten in Erlang, replacing its previous Elixir implementation and legacy configuration mechanisms.

Features

Add VM telemetry examples for memory, run queues, and system counts

New example modules (TelemetryPollerVM in Elixir and Erlang) demonstrate how to attach telemetry handlers for VM-level metrics. These examples show how to capture and display measurements for memory usage, total run queue lengths, and system counts (including atom, port, and process limits), providing reference implementations for monitoring these specific VM statistics.

examples · high confidence

Removals

Removal of Telemetry.Sampler module

The Telemetry.Sampler module, which previously allowed users to periodically gather measurements and publish them as Telemetry events, has been removed from the library.

lib · high confidence

Behavioural changes

Library rewritten in Erlang with new measurement API and OTP 24 requirement

The library has been converted from Elixir to Erlang, changing the module access from \Telemetry.Poller\ to \telemetry\_poller\. The configuration API has changed: the previous \vm\_measurements\ and \measurements\ keys are now unified into a single \measurements\ key. Several specific VM memory measurements (e.g., \:total\_memory\, \:atom\_memory\) were removed in favor of a single \:memory\ measurement that returns all values from \erlang:memory/0\. New measurements include \:process\_info\ and \:system\_counts\ (which reports process, atom, and port counts and limits). The library now requires Erlang/OTP 24+ and Telemetry \~\> 1.0.

(repo-wide) · high confidence

Removal of legacy Mix.Config configuration file

The \config/config.exs\ file, which previously utilized the deprecated \Mix.Config\ module, has been removed from the project. This change eliminates the legacy configuration mechanism, likely as part of a migration to a newer configuration system or to clean up obsolete files.

config · high confidence

telemetry\_poller rewritten in Erlang with new built-in measurements

The telemetry\_poller library has been converted from Elixir to Erlang, introducing a new Erlang API (telemetry\_poller:start\_link/1) alongside the existing Elixir interface. This release adds built-in support for measuring persistent\_term and system\_counts (including atom, port, and process limits) alongside the existing memory and run queue metrics. The default poller is now configurable via the application environment and can be disabled by setting the 'default' key to false.

src · high confidence

Test coverage

Added Common Test suite for telemetry\_poller and removed legacy Elixir tests

The project has migrated its test suite from Elixir/ExUnit to Erlang/Common Test. This change adds a comprehensive Common Test suite (\telemetry\_poller\_SUITE.erl\) that validates the \telemetry\_poller\ application's behavior, including configuration options (name, global name, period, init\_delay), error handling for invalid inputs, listing measurements, and the dispatching of specific built-in measurements like \memory\, \persistent\_term\, \system\_counts\, \total\_run\_queue\_lengths\, and \process\_info\. It also introduces support modules (\test\_handler.erl\ and \test\_measure.erl\) to facilitate these tests. Concurrently, legacy Elixir test files (\telemetry\_sampler\_test.exs\ and \test\_helper.exs\) have been removed.

test · high confidence

Dependencies

Removed Elixir dependency manifest and lockfile

The project's Elixir build configuration has been removed, specifically the \mix.exs\ file and the \mix.lock\ lockfile. This eliminates the dependency on the \telemetry\ library (version 0.1.0) and the Elixir runtime requirements defined in the previous project structure.

(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

Score

  • CAI 59 → 60 (+0.3)
  • Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 69 → 69 (+0.0)
  • Maturity 38 → 38 (+0.0)
  • Readiness 78 → 80 (+2.2)
  • Security 100 → 100 (+0.0)

Resolved (2)

  • Coverage not measured — no coverage collector is wired up
  • Documentation: no usage examples (README.md)

New (1)

  • Outdated: telemetry

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

Survey your own repository

beam-telemetry/telemetry_poller 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 f93559cf54f06ea8e88d1ec35eef186191edd390 — 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.