Skip to content
CAI
Software that uses CAICheck a score

mana-ethereum/ethereumex

67.3

Adequate · 3 October 2026

1.4k

lines of production code

Elixir

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Ethereumex is an Elixir library that provides a unified interface for interacting with Ethereum nodes via HTTP, IPC, and WebSocket transports. It supports standard JSON-RPC methods and real-time event subscriptions, leveraging Finch for HTTP requests and poolboy for IPC concurrency. The system includes configuration management, telemetry for monitoring RPC metrics, and helper scripts for local development environments.

Features

Added scripts to download and run Parity Ethereum client

New shell scripts have been added to the bin directory to streamline the setup and execution of the Parity Ethereum client. The setup\_parity script downloads the Parity binary (version 1.10.7 for x86\_64 Linux) into a local parity directory and prepares the environment, while run\_parity executes the client in development mode using the downloaded binary.

bin · high confidence

New WebSocket client with real-time subscription support

The library now includes a WebSocket-based Ethereum JSON-RPC client (\Ethereumex.WebsocketClient\) that allows users to maintain persistent connections for real-time event subscriptions, such as new block headers, pending transactions, and contract logs. This new client is built on a shared \BaseClient\ behavior and macro system, which centralizes the implementation of standard RPC methods (like \eth\_block\_number\, \eth\_call\, etc.) to ensure consistency across HTTP and WebSocket transports. The underlying \WebsocketServer\ manages connection lifecycle, automatic reconnection with exponential backoff, and request-response matching, enabling developers to subscribe to events and receive notifications directly in their processes.

lib/ethereumex/client · high confidence

Behavioural changes

Migrate to Elixir 1.6 config syntax and define environment-specific defaults

The configuration system has been updated to use the Elixir 1.6+ \import Config\ syntax, replacing the deprecated \use Mix.Config\. Default application settings for \:ethereumex\ (including HTTP options, headers, JSON module, and error logging) are now centralized in \config/config.exs\, which dynamically loads environment-specific overrides via \import\_config\. New \config/dev.exs\ and \config/test.exs\ files provide specific defaults, such as reading the URL from the \ETHEREUM\_URL\ environment variable in development and using a local Anvil node in tests.

config · high confidence

Module documentation now sourced from README

The module-level documentation for Ethereumex is no longer hardcoded in the source file. Instead, it is dynamically generated by reading the project's README.md file and extracting the section between the \<!-- MDOC --\> markers, ensuring the API docs stay in sync with the main project documentation.

lib · high confidence

Refactored client architecture with Finch HTTP support and telemetry

The library has been restructured to support multiple client types (HTTP, IPC, WebSocket) via a new \Ethereumex.Config\ module that manages OTP supervision children. HTTP requests now use the Finch library instead of the previous HTTP client, allowing for configurable pools and per-request HTTP options. IPC communication has been updated to use a \poolboy\-managed worker pool for better concurrency. Additionally, the library now exposes RPC call metrics via Telemetry, allowing users to monitor request counts and method usage.

lib/ethereumex · high confidence

Test coverage

Added comprehensive test coverage for Ethereumex configuration, clients, and telemetry; Added tests for Ethereum JSON-RPC client methods; Updated test configuration and removed legacy test file.

Dependencies

Release 0.15.0 with Finch upgrade and per-request HTTP options

This release upgrades the HTTP transport from Finch 0.19.0 to 0.24.0 (including Mint 1.7.1 to 1.11.0 and hpax 1.0.2 to 1.1.0), changing HTTP transport errors to \%Finch.TransportError{}\. It introduces the ability to configure per-request \:http\_options\ in \HttpClient\, which are merged over the configured defaults, allowing users to override settings like timeouts for individual calls. The library now requires Elixir \~\> 1.16 (up from \~\> 1.13) and updates several dependencies including Jason, telemetry, Mimic, Credo, dialyxir, and ex\_doc.

(repo-wide) · high confidence

Upgrade to Elixir 1.16 and modernize dependencies

The library now requires Elixir 1.16 or higher and updates its HTTP client from HTTPoison to Finch (v0.16+), replacing the previous HTTP implementation. Development tooling has been upgraded, including Credo to 1.7, Dialyxir to 1.4, and ExDoc to 0.40, while Jason is now an optional dependency for JSON encoding. The project structure also includes a dedicated Application module and enhanced Dialyzer configuration for better type checking.

(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 68 → 67 (-0.5)
  • Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 100 → 100 (+0.0)
  • Architecture 69 → 69 (+0.0)
  • Maturity 57 → 56 (-0.8)
  • Readiness 77 → 75 (-2.3)
  • Security 95 → 97 (+2.2)

Resolved (9)

  • Documentation: no architecture or design documentation (README.md)
  • High CVE: [GHSA redacted] (mix.lock)
  • Medium CVE: EEF-[CVE redacted] (mix.lock)
  • Outdated: credo
  • Outdated: dialyxir
  • Outdated: ex_doc
  • Outdated: finch
  • Outdated: jason
  • Outdated: telemetry

New (1)

  • Orphaned files with no living knowledge

Changes since last survey

  • 3 commits — 2 feature/other, 1 fixes

By area

  • (root) — 2 commits
  • test/ethereumex — 1 commit

Notable commits

  • fix: fix tests
  • change: Honor per-request :http_options in HttpClient (#226)
  • change: release 0.15.0 (#227)

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

Survey your own repository

mana-ethereum/ethereumex 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 3 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 587e22f366cf02394e4149d10dcbbf647496baee — the exact code this score is about.
  • Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-8fe32cd45d00.