shinyscorpion/wobserver
37.8
Weak · 23 September 2026
3k
lines of production code
Elixir
with JavaScript
5
measurements over time
What this system is
Wobserver is a web-based monitoring and metrics interface for Erlang/OTP systems, providing real-time visibility into system health and application state. It aggregates data on CPU, memory, processes, and schedulers, exposing this information through a dynamic web dashboard and a Prometheus-compatible API. The system supports distributed monitoring by connecting to remote nodes and offers extensibility through custom pages and metrics.
Features
Add Prometheus metrics formatter
Users can now export metrics in Prometheus format. A new \Wobserver.Util.Metrics.Formatter\ module provides a pluggable interface for formatting metrics, with \Wobserver.Util.Metrics.Prometheus\ added as the default formatter. This allows users to view and scrape metrics using Prometheus-compatible output.
lib/wobserver/util/metrics · medium confidence
Add system monitoring capabilities for info, memory, scheduler, and statistics
Users can now access detailed system information including architecture, CPU, and Erlang/OTP versions via the new Wobserver.System.Info module. Memory usage across categories like atom, binary, code, ETS, and processes is available through Wobserver.System.Memory. The Wobserver.System.Scheduler module provides per-scheduler utilization metrics, while Wobserver.System.Statistics exposes system uptime, process counts, and I/O statistics. These additions expand the observability of the host system within the Wobserver tool.
lib/wobserver/system · high confidence
Added Chart.js and Treant.js libraries
Added Chart.js (version 1.0.2) and Treant.js to the project's external JavaScript dependencies, enabling the use of charting and tree diagram visualizations in the application.
src/js/external · high confidence
Added Mix tasks for code analysis and build automation
Two new Mix tasks have been introduced to streamline development and quality assurance. The \analyze\ task runs static analysis tools (Credo, Dialyzer, and code coverage checks) and exits if errors are found. The \build\ task automates the full build process, which now includes baking web assets (HTML, CSS, JS, and LICENSE) into a generated \Wobserver.Assets\ module, alongside compilation, documentation, and packaging steps.
lib/mix · high confidence
Added node discovery and remote node handling
Added Wobserver.Util.Node.Discovery to support discovering other nodes via DNS or custom functions, and introduced Wobserver.Util.Node.Remote to handle metrics, API calls, and WebSocket connections to remote nodes.
lib/wobserver/util/node · medium confidence
Added utility modules for memory, application, process, port, table, and metrics management
Added new utility modules to the Wobserver library: Wobserver.Allocator for listing memory allocator details, Wobserver.Util.Application for listing running applications and their hierarchy, Wobserver.Util.Process for detailed process information and summaries, Wobserver.Port for port status and links, Wobserver.Table for ETS table information and data, and Wobserver.Util.Metrics for managing custom metrics and generators. These modules provide the underlying data collection and formatting logic for the Wobserver dashboard.
lib/wobserver/util · high confidence
Initial configuration for Wobserver application
Added the initial configuration file for the Wobserver application, setting up the Mix.Config module and defining the 'assets' configuration key.
config · high confidence
Initial project structure and CI configuration
The repository was initialized with the core project files, including the Elixir build configuration (mix.exs), a Travis CI build script (.travis.yml) for automated testing, and a CHANGELOG.md tracking version history. The project also includes a README.md with usage and installation instructions, a coveralls.json for code coverage settings, and a .gitignore file to exclude generated assets and build artifacts.
(repo-wide) · high confidence
Initial release of Wobserver: a web-based metrics and monitoring interface
The \wobserver\ library is introduced as a new component providing a web-based interface for system metrics, monitoring, and observer tools. It includes a configurable HTTP port (defaulting to 4001) and supports two startup modes: \:standalone\ (launches a Cowboy server) and \:plug\ (returns the metric storage PID for integration into existing applications). The release adds a \Page\ system for registering and managing custom web pages and API routes, alongside a \System\ module that aggregates architecture, CPU, memory, and scheduler utilization data. An \about\ endpoint exposes version, license, and link information for the library.
lib/wobserver · high confidence
Introduce Gulp build system with CSS, JS, and HTML tasks
The project now includes a Gulp-based build system that automates the compilation of CSS (via Sass and Autoprefixer), JavaScript (via Browserify, Babel, and Uglify), and HTML (via htmlmin). The configuration file defines separate tasks for development and production builds, with source maps enabled for debugging. A watch task is also configured to monitor source files and trigger the appropriate build tasks automatically.
gulpfile.js · high confidence
Introduce WebSocket client, proxy, and security layer
Adds new modules to handle WebSocket connections and remote node proxying. The \Client\ module implements the core WebSocket command handling (e.g., :hello, :ping, :system, :about, :application, :process, :ports, :allocators, :table, :custom). A \ClientProxy\ module is added to proxy WebSocket requests to remote nodes. A \ClientSocket\ module provides the low-level WebSocket handler and callback interface. Additionally, a \Security\ module is introduced to handle basic WebSocket authentication via cookies, with support for configurable security modules.
lib/wobserver/web · high confidence
Introduce WebSocket-based real-time monitoring with automatic fallback
The web interface now establishes a persistent WebSocket connection to the backend for live data updates, with an automatic fallback to a JSON API if the WebSocket connection fails. This change introduces new JavaScript modules (Wobserver, WobserverClient, WobserverApiFallback) that handle connection state, reconnection logic, and message routing, enabling the UI to display real-time system metrics, process details, and charts with reduced latency compared to the previous polling or static rendering approach.
src/js · high confidence
Introduce new CSS library for UI components
Added a new set of SCSS files in src/css/lib to define styles for buttons, menus, content areas, footers, graphs, popups, and tables. This includes a theme configuration with specific color palettes (e.g., \#58229a for primary), typography settings, and layout rules for interactive elements like selection popups and process charts.
src/css/lib · high confidence
New interface components for process, table, and chart visualization
The interface now includes new modules for displaying process details, table data, and dynamic charts. Process details show metadata, memory usage, and state in a popup. Table details display row data in a popup, including an empty state message when no data is present. A new chart module supports real-time line charts with timestamped data updates. Additionally, node selection allows users to switch between remote nodes, and process names are displayed without the 'Elixir.' prefix.
src/js/interface · high confidence
New modular router structure with API, metrics, and static assets
The web router has been restructured into distinct modules: a new API router providing endpoints for nodes, applications, processes, ports, and custom pages; a metrics router exposing system and node performance data; a static router serving the frontend assets (HTML, CSS, JS) with configurable security authentication; and a system router for detailed system information. A shared base module and helper utilities were added to support these changes.
lib/wobserver/web/router · high confidence
Behavioural changes
Add mobile device settings to HTML
The HTML entry point for the Wobserver web application has been updated to include mobile-specific meta tags. These additions, such as 'apple-mobile-web-app-capable' and 'theme-color', improve the user experience on mobile devices by enabling full-screen app-like behavior and customizing the browser's status bar color.
src/html · high confidence
New chart and about page styling
Added new SCSS files to style the web interface. The new \_chart.scss file defines styles for a chart component, including layout, canvas margins, and a legend with inline-block list items and colored indicators. The new main.scss file imports the chart styles and adds styling for an 'about' page section, specifically formatting tables with bold headers and a colon suffix.
src/css · high confidence
Test coverage
Added router tests for API, root, metrics, and 404 handling; Added test coverage for Wobserver core functionality; Added test coverage for system info, memory, scheduler, and statistics modules; Added tests for Wobserver application, page, and system modules; Added tests for node discovery and remote node interactions; Added tests for the Wobserver web router components; Added tests for the new metrics formatting and Prometheus integration; Added unit tests for Wobserver utility modules.
Dependencies
Initial project setup with Elixir and Node.js dependencies
The project is initialized with \mix.exs\ and \mix.lock\ defining Elixir dependencies (including Cowboy, HTTPoison, and Plag) and a \package.json\ establishing Node.js build tools (Gulp, Babel, etc.) for the web component. This establishes the foundational build and runtime requirements for the Wobserver application.
(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 42 → 38 (-4.5)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 34 → 38 (+4.0)
- Architecture 100 → 92 (-7.7)
- Maturity 47 → 41 (-5.6)
- Readiness 31 → 28 (-3.5)
- Security 94 → 76 (-17.7)
- Accessibility 52 (new)
Resolved (10)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- High CVE: [GHSA redacted] (mix.lock)
- High CVE: [GHSA redacted] (mix.lock)
- High CVE: [GHSA redacted] (mix.lock)
- Medium CVE: [GHSA redacted] (mix.lock)
- Medium: security finding (details withheld)
- No exposed public API
- Test reliability not included
- dormant codebase — no living knowledge left to concentrate
New (16)
- Documentation: no installation or build instructions (README.md)
- High CVE: [GHSA redacted] (mix.lock)
- High CVE: [GHSA redacted] (mix.lock)
- High CVE: [GHSA redacted] (mix.lock)
- Medium CVE: [GHSA redacted] (mix.lock)
- No ADRs found
- No SBOM
- No artifact signing
- No build provenance
- No dependency advisory monitoring
- Outdated: ex_doc
- Outdated: excoveralls
- Outdated: plug
- Outdated: websocket_client
- getInnerText (cognitive 18) (src/js/external/sorttable.js)
- makeSortable (cyclomatic 24) (src/js/external/sorttable.js)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
shinyscorpion/wobserver 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 7c6186ba8a90d9406d2b79351081373a52baffdf — 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.