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

@hyperswarm/kat

v0.0.7

Published

Key Address Translation for Hyperswarm

Downloads

5

Readme

@hyperswarm/kat

Key Address Translation - for Hyperswarm.

The Hyperswarm KAT protocol translates Noise public keys into network IPs and also provides modern STUN approaches to penetrating most network firewalls.

Note, that the API is still under development so subject to changes.

The protocol consists of primary abstractions, Gateways and Clients.

Gateways

A Gateway is a simple UDP server, running on a public network.

The purpose of a Gateway in the KAT protocol is to act as a way for clients, identified by a Noise keypair, behind commodity firewalls, to receive the first part of a Noise handshake, from other peers also behind commodity firewalls.

After relaying the initial exchange, a Gateway can also help provide some simple network diagnostics, that can help each peer choose what kind of network holepunching technique to use.

Normally a client would use a series of Gateways to announce itself. This helps provide better security and redundancy.

Clients

Clients interact with a gateway using a UDP-based protocol.

A Client can choose to announce a Noise keypair to a Gateway, by proving to a gateway that it owns a specific keypair using a Noise handshake. After announcing a Gateway will relay introductions to other Clients that wish to connect.

API

Note that the API is still experimental and subject to change.

const { Client } = require('hyperpunch')

const c = new Client([
  'bootstrap1.hyperdht.org',
  'bootstrap2.hyperdht.org'
])

// to join the swarm and accept connections on a public key:
await c.join(keyPair)

c.on('connection', function (noiseStream) {
  // emitted when a new connection is accepted
  // noiseStream is a NoiseSecretStream instance
})

// to connect to a public key to
const noiseStream = c.connect(publicKey, localKeyPair)

noiseStream.on('open', function () {
  console.log('stream is fully open')
})

noiseStream.write(Buffer.from('hello world'))