Skip to content
CAI
Software that uses CAICheck a score

zhongwencool/observer_cli

74.6

Strong · 23 September 2026

21.3k

lines of production code

Erlang

primary language

5

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a BEAM diagnostics tool that provides both a command-line interface and an interactive terminal user interface for monitoring Erlang/OTP applications. It enables users to inspect system health by analyzing memory usage, process statistics, network connections, and ETS tables, offering structured output for automation and live exploration for interactive sessions. The tool supports automated validation through smoke tests and comprehensive unit tests to ensure reliable behavior across different OTP versions.

Features

Initial release of observer\_cli 2.0.0

Introduces observer\_cli 2.0.0, a production-ready BEAM diagnostics tool providing both a command-line interface (CLI) for automation and an interactive terminal user interface (TUI). The CLI offers bounded, structured output (text, Erlang-term, or JSON) for diagnosing capacity pressure, inspecting memory and processes, and reading logs, while the TUI allows live exploration of system state. The tool supports Erlang/OTP 26–29 and requires the matching 2.0.0 version in the target release for CLI diagnostics, with TUI auto-loading available for interactive sessions. Installation is supported via a provided shell script that verifies checksums and detects the local OTP version, or by building from source using rebar3 or Mix.

(repo-wide) · high confidence

Initial release of observer\_cli view configuration and UI definitions

This change introduces the core header file for the observer\_cli application, defining the data structures and constants that drive the user interface. It establishes the \view\_opts\ record and associated sub-records (such as \home\, \app\, \process\, \inet\, \ports\, \sockets\, \ets\, \db\, and \system\) which hold the state for each view, including pagination, sorting attributes, and refresh intervals. The file also defines ANSI color codes for menu selection and text formatting, as well as utility macros for rendering output, effectively setting up the structural foundation for the CLI's visual presentation and state management.

include · high confidence

Behavioural changes

Observer CLI v2.0: Complete UI and CLI rewrite

Observer CLI has been upgraded to version 2.0.0, introducing a complete rewrite of the user interface and command-line interface. The new version replaces the previous pager-based navigation with a dedicated \less\_client\ module for smoother scrolling and view management. A new CLI parser (\observer\_cli\_cli\) and command handler (\observer\_cli\_command\) provide structured argument parsing, supporting both TUI and command-line modes with explicit options for targets, cookies, and refresh intervals. The application view (\observer\_cli\_application\) now supports sorting by process count, memory, reductions, and message queue length, while the ETS view (\observer\_cli\_ets\) allows sorting by size or memory. Additionally, the diagnostic module (\observer\_cli\_diagnostic\) introduces a new observation capture mechanism for system health checks, and the help system (\observer\_cli\_help\) has been updated with new shortcut documentation.

src · high confidence

Test coverage

Added comprehensive EUnit test suite for Observer CLI v2.0; Added documentation screenshot and escript smoke test scripts.

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 67 → 75 (+8.0)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 86 → 92 (+6.1)
  • Architecture 100 → 100 (+0.0)
  • Maturity 72 → 72 (+0.3)
  • Readiness 68 → 70 (+2.3)
  • Security 56 → 72 (+15.7)
  • Event Sourcing 100 → 100 (+0.0)

Resolved (26)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Further sole-owners (lower concentration)
  • 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)
  • 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: observer_cli (src/observer_cli.erl)
  • TooManyMethods: observer_cli_cli (src/observer_cli_cli.erl)
  • TooManyMethods: observer_cli_diagnostic (src/observer_cli_diagnostic.erl)
  • TooManyMethods: observer_cli_escriptize (src/observer_cli_escriptize.erl)
  • TooManyMethods: observer_cli_log (src/observer_cli_log.erl)
  • TooManyMethods: observer_cli_port (src/observer_cli_port.erl)
  • …and 6 more

New (35)

  • Coverage not measured — no coverage collector is wired up
  • Duplicated block (10 lines × 2) (src/observer_cli_trace.erl)
  • Duplicated block (11 lines × 2) (src/observer_cli_diagnostic.erl)
  • Duplicated block (40–41 lines × 2) (src/observer_cli_inet.erl)
  • Duplicated block (5 lines × 2) (src/observer_cli_port.erl)
  • Duplicated block (6 lines × 2) (src/observer_cli_application.erl)
  • Duplicated block (6 lines × 2) (src/observer_cli_diagnostic.erl)
  • Duplicated block (7 lines × 2) (src/observer_cli_diagnostic.erl)
  • Duplicated block (7 lines × 2) (src/observer_cli_process.erl)
  • Duplicated block (7 lines × 2) (src/observer_cli_snapshot.erl)
  • 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)
  • 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)
  • …and 15 more

Changes since last survey

  • 9 commits — 9 feature/other, 0 fixes

By area

  • (repo) — 2 commits
  • src/observer_cli_process.erl — 2 commits
  • docs/reference — 1 commit
  • src/less_client.erl — 1 commit
  • src/observer_cli_cli.erl — 1 commit
  • src/observer_cli_escriptize.erl — 1 commit
  • src/observer_cli_snapshot.erl — 1 commit

Notable commits

  • change: Allow saved context cleanup without exact file permissions
  • change: Handle formatter configs without application in remote mode
  • change: Handle unsupported process state without warning noise
  • change: Keep pager state local to the client loop
  • change: Merge pull request #138 from zhongwencool/codex/post-v2.0.0-hardening
  • change: Merge pull request #139 from zhongwencool/zw/local-pager-state
  • change: Relax internal audit constraints on log responses
  • change: Remove unreachable inventory working-set budget checks
  • change: Simplify process detail formatter selection

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

Survey your own repository

zhongwencool/observer_cli 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 04aee9f3f7cac8b865129960c5d3a7880805ab21 — 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.