
Research
Node.js Fixes AsyncLocalStorage Crash Bug That Could Take Down Production Servers
Node.js patched a crash bug where AsyncLocalStorage could cause stack overflows to bypass error handlers and terminate production servers.
hyper-instrument
Advanced tools
Instrument services in the Hypercore ecosystem.
Supports both the Node.js and bare runtimes.
Supports the metrics of
The service registers itself with a DHT Prometheus instance, which scrapes the metrics at regular intervals.
A Grafana dashboard visualising all metrics is available (source).
npm i hyper-instrument
const HyperInstrument = require('hyper-instrument')
const Hyperdht = require('hyperdht')
const { version } = require('./package.json') // version of your own module
const scraperPublicKey = // Public key of the metrics scraper
const scraperSecret = // Secret of the metrics scraper
const prometheusAlias = // unique alias identifying this instance
const prometheusServiceName = // the name of the service
const dht = new Hyperdht()
const instrumentation = new HyperInstrument({
dht,
scraperPublicKey,
scraperSecret,
prometheusAlias,
prometheusServiceName,
version
})
// You can add additional metrics
new instrumentation.promClient.Gauge({
name: 'my_custom_metric',
help: 'my custom metric help',
collect () {
return 1 // dummy metric
}
})
// If you want to see instrumentation-related logs:
instrumentation.registerLogger()
// start the scraping
await instrumentation.ready()
const instrumentation = new HyperInstrument(params)Set up instrumentation by registering the default metrics and creating a DHT-Prom client instance.
It is possible to add additional metrics by adding them to instrumentation.promClient, which is a Prom-client instance.
params must include:
scraperPublicKey: public key of the DHT-Prometheus scraper (hex, z32 or buffer)scraperSecret: secret of the DHT-Prometheus scraper (hex, z32 or buffer)prometheusAlias: string uniquely identifying this instance to the scraperprometheusServiceName: string containing the name of the serviceparams must also include exactly one of
dht: a HyperDHT instanceswarm: a Hyperswarm instanceThe passed-in swarm/dht will be instrumented. It will also be used to connect with the scraper.
You should pass in swarm if your service operates at Hyperswarm level, since Hyperswarm extends HyperDHT (the Hyperswarm metrics include all HyperDHT metrics).
Optionally, params can also include:
corestore: a Corestore instance. Passing in a Corestore will set up hypercore-stats instrumentationmoduleVersions: a list of package names for which to expose the version number as a metric. Defaults to the core datastructure and networking libraries.instrumentation.promClientThe Prom Client instance.
instrumentation.dhtPromClientThe DHT Prom Client instance.
await instrumentation.ready()Start the metrics scraping.
await instrumentation.close()Stop the metrics scraping.
registerLogger(logger=console)Register a logger, so it logs info about the instrumentation (for example when it successfully registers with the scraper). logger can be a pino instance, or console (default).
FAQs
Instrument services in the hypercore ecosystem
We found that hyper-instrument demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Research
Node.js patched a crash bug where AsyncLocalStorage could cause stack overflows to bypass error handlers and terminate production servers.

Research
/Security News
A malicious Chrome extension steals newly created MEXC API keys, exfiltrates them to Telegram, and enables full account takeover with trading and withdrawal rights.

Security News
CVE disclosures hit a record 48,185 in 2025, driven largely by vulnerabilities in third-party WordPress plugins.