npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@tetherto/miningos-tpl-wrk-container

v1.0.0

Published

MiningOS Template Worker Container

Readme

miningos-tpl-wrk-container

A template worker for managing mining containers (Antspace, Bitdeer, Microbt) in the MiningOS infrastructure. This worker provides container-level control including power management, cooling systems, and socket control.

Table of Contents

  1. Overview

  2. Object Model

  3. Requirements

  4. Configuration

  5. Container Control Features

  6. API Methods

Overview

The Container Worker extends the MiningOS Thing Worker framework to provide specialized functionality for managing mining containers. It handles:

  • Container power management
  • Cooling system control
  • Individual socket/PDU control
  • Real-time statistics collection
  • Alert monitoring

Object Model

The following is a fragment of MiningOS object model that contains the concrete classes representing Container miners workers (highlighted in blue), one generically representing any model of the brand, and four children specifically representing brands. The rounded nodes reprsent abstract classes and the square nodes represents a concrete classes:

---
title: Object Model of MiningOS
---
flowchart RL
    bfx-wrk-base@{ shape: stadium, label: "*bfx-wrk-base*" }


    tether-wrk-base@{ shape: stadium, label: "*tether-wrk-base*" }
    tether-wrk-base--->bfx-wrk-base


    miningos-tlp-wrk-thing@{ shape: stadium, label: "*miningos-tlp-wrk-thing*" }
    miningos-tlp-wrk-thing--->tether-wrk-base


    miningos-tpl-wrk-container@{ shape: stadium, label: "*miningos-tpl-wrk-container*" }
    miningos-tpl-wrk-container--->miningos-tlp-wrk-thing


    miningos-wrk-container-microbt["miningos-wrk-container-microbt"]
    miningos-wrk-container-microbt---miningos-tpl-wrk-container

    miningos-wrk-container-antspace["miningos-wrk-container-antspace"]
    miningos-wrk-container-antspace---miningos-tpl-wrk-container

    miningos-wrk-container-bitdeer["miningos-wrk-container-bitdeer"]
    miningos-wrk-container-bitdeer---miningos-tpl-wrk-container



    style miningos-tpl-wrk-container fill:#005,stroke-width:4px,color:white
    style miningos-wrk-container-microbt fill:#005,stroke-width:4px,color:white
    style miningos-wrk-container-antspace fill:#005,stroke-width:4px,color:white
    style miningos-wrk-container-bitdeer fill:#005,stroke-width:4px,color:white

Accordign to UML notation, abstract classes have their names in Italic. 'Stadium shape' applied for abstract class nodes for better visualization.

Horizontal display was chosen over more conventional vertical one merely for purposes of better layout.

Check out miningos-tpl-wrk-thing for more information about parent and sibling classes.

Requirements

  • Node.js >= 20.0
  • Dependencies from miningos-tpl-wrk-thing
  • Network access to container control systems

Configuration

Base Configuration (config/base.thing.json)

{
  "_idFile": "",
  "collectSnapsItvMs": 60000,      // Snapshot collection interval (ms)
  "logRotateMaxLength": 10000,     // Maximum log entries before rotation
  "logKeepCount": 3                // Number of log files to retain
}

Common Configuration (config/common.json)

{
  "dir_log": "logs",    // Log directory path
  "debug": 0            // Debug mode (0=off, 1=on)
}

Additional Configuration Files

  • config/facs/miningos-net.config.json - Network configuration
  • config/facs/net.config.json - General network settings
  • config/facs/store.config.json - Storage configuration

Container Control Features

Power Management

  • Switch Container: Turn entire container on/off
  • Socket Control: Control individual power sockets/PDUs
  • Batch Operations: Control multiple sockets simultaneously

Cooling System

  • Switch Cooling: Turn cooling system on/off
  • Temperature Monitoring: Track ambient temperature
  • Humidity Monitoring: Monitor humidity levels
  • Alarm Management: Handle and reset cooling system alarms TODO: check actual implementation of async resetAlarm ()

Statistics Collection

The worker collects the following statistics:

  • Power Consumption (power_kw): Current power usage in kilowatts
  • Ambient Temperature (ambient_temp_c): Container temperature in Celsius
  • Humidity (humidity_percent): Relative humidity percentage
  • Alarm Status (alarm_status): Boolean indicating alarm state

Collection intervals:

  • Real-time data (RTD): Every 30 seconds
  • 20-second snapshots: Every 20 seconds
  • 1-minute aggregations: Every minute
  • Standard intervals from base worker (5m, 30m, etc.)

API Methods

Container Operations

switchContainer(enabled: boolean)

Enable or disable the entire container.

switchSocket(args: Array<[pduIndex: string, socketIndex: string, enabled: boolean]>)

Control individual sockets. Accepts batch operations.

switchCoolingSystem(enabled: boolean)

Control the container's cooling system.

Query Methods

getStats()

Returns current container statistics including power, temperature, humidity, and alarm status.

getConfig()

Returns the current container configuration.

getSnap()

Returns a complete snapshot including both stats and configuration.