Interplanetary Shipyard (opens new window) is thrilled to share js-libp2p inspector (opens new window), the new developer tools for debugging and inspecting js-libp2p and Helia, for use both in browsers and Node.js.
Debugging is an essential part of software development, and having the right tools can make all the difference. The new developer tools provide a user-friendly interface to inspect your libp2p nodes in real-time, tightening the feedback loop and making it easier to diagnose issues.
# Inspecting and monitoring throughout the development cycle
These new developer tools expand the existing set of metrics implementations for js-libp2p, which include metrics-prometheus (opens new window) and metrics-opentelemetry (opens new window).
While Prometheus and OpenTelemetry are for monitoring and tracing in production (though not exclusively), the inspector is intended for use during development. Together, these tools provide a comprehensive solution for monitoring and debugging js-libp2p and Helia nodes throughout the development cycle.
# Getting started
To inspect a js-libp2p or Helia node, you need to pass the metrics implementation from the @ipshipyard/libp2p-inspector-metrics
(opens new window) package to your js-libp2p or Helia factory:
# js-libp2p example
import { createLibp2p } from 'libp2p'
import { inspectorMetrics } from '@ipshipyard/libp2p-inspector-metrics'
const node = await createLibp2p({
metrics: inspectorMetrics()
})
# Helia example
import { createHelia } from 'helia'
import { inspectorMetrics } from '@ipshipyard/libp2p-inspector-metrics'
const node = await createHelia({
libp2p: {
metrics: inspectorMetrics()
},
})
Once you have your node running with the inspector metrics enabled, you can start inspecting it using the browser extension or the Electron app.
The following video walks through setup and usage with both Node.js and browser environments:
# Try the new developer tools
The new developer tools consist of several npm packages that work together:
@ipshipyard/libp2p-devtools
: (opens new window) Browser DevTools extension to inspect a libp2p node running in a web page.@ipshipyard/libp2p-inspector
: (opens new window) Electron based app to inspect a running libp2p node in Node.js.@ipshipyard/libp2p-inspector-metrics
: (opens new window) Metrics implementation that instruments the libp2p node such that it can be inspected by the inspector or the browser extension. This package needs to be imported in your js-libp2p based application to enable inspection.@ipshipyard/libp2p-inspector-ui
: (opens new window) The user interface shared by both the Electron inspector and the browser extension.
We encourage you to try out the new developer tools and provide feedback. You can find the source code on GitHub (opens new window).