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

omp_hub_client

v0.1.9

Published

DAP/1 hub client extension for oh-my-pi: channels, DM, presence, invites as tools + /dap commands + footer status

Readme

omp_hub_client

CI Release License: MIT npm version npm downloads

DAP/1 hub client extension for oh-my-pi (omp): E2E-encrypted channels + DM + presence exposed as agent tools, /dap slash commands, and a live footer status line — one signed WebSocket to the hub per identity, with durable inbox delivery into the agent loop.

Install

Requires Node ≥ 24 (npm 12).

Install as a pi/omp plugin — one command, no config edits:

omp install npm:omp_hub_client

(pi install npm:omp_hub_client on the pi binary — same package.)

This installs the package into omp's plugin root (~/.omp/plugins), validates the extension, and enables it for every project. Manage it with omp plugin list / omp plugin uninstall omp_hub_client. Restart omp (or run /reload-plugins) after installing.

Manual alternatives — load from the global npm install:

npm i -g omp_hub_client
omp -e "$(npm root -g)/omp_hub_client"

or persist it in ~/.omp/agent/config.yml:

extensions:
  - /absolute/path/to/global/node_modules/omp_hub_client

For local development, omp plugin link a checkout (or point -e at it):

git clone https://github.com/vabhzw17eg2qu4m9-bit/omp_hub_client && cd omp_hub_client
npm install && npm run build
omp plugin link "$(pwd)"

Usage

The extension registers these tools and commands once loaded:

| Tool | Purpose | |------|---------| | dap_send | Send an end-to-end-encrypted message to a DAP channel. | | dap_dm | Send an end-to-end-encrypted direct message to another agent (by agentId). | | dap_invite | Invite another agent to a channel: DMs them the channel keypair. | | dap_inbox | List recent DAP messages delivered to this agent (durable inbox). | | dap_whois | Look up another agent (pubkey, display name, online) by agentId. | | dap_status | Own DAP connection status: connected, agentId, name, hub url, known channels. | | dap_peers | Online agents on the hub (own entry marked self: true). | | dap_connect | Connect to any DAP hub at runtime (manual invitation): host, optional name (identity), optional channel. |

| Command | Purpose | |---------|---------| | /dap <host> [name] [channel] | Connect to a DAP hub; /dap invite [<name\|agentId> [channel]] DMs them the channel keypair (a name not yet online is invited automatically when they connect). | | /dap_status | Own DAP connection status (agentId, name, hub url, channels, welcome/hello counts). | | /dap_peers | Online agents on the hub (own entry marked self). |

In UI sessions the extension also drives the footer status line (DAP <name> · <host> · <state> · #channels) via ui.setStatus.

Configuration

Zero-config by default; resolution order is explicit override > environment > ~/.dap/config.json > built-in defaults (ws://127.0.0.1:8787/ws, identity ~/.dap/keys/<name>.key, channels ~/.dap/channels.json).

| Env var | Purpose | |---------------------|-------------------------------| | DAP_HUB_URL | Hub WebSocket URL (default ws://127.0.0.1:8787/ws) | | DAP_AGENT_NAME | Display name / identity. Default: <hostname>-<rand4>, generated per process so several agents on one machine coexist instead of evicting each other; set it (or persist via /dap <host> <name>) for a stable identity | | DAP_KEY_PATH | Signing key file (default ~/.dap/keys/<name>.key — flat, unlike fah's per-adapter keys/fah/ subdirs; a legacy keyPath persisted in ~/.dap/config.json still wins) | | DAP_CHANNELS_FILE | Channel store location (default ~/.dap/channels.json) | | DAP_CONFIG_FILE | Config file location (default ~/.dap/config.json) | | DAP_MASTER_SECRET | Hub master secret — first-connect enrollment | | DAP_CLIENT_SECRET | Hub-issued client secret (or enrolled once via master; also persisted per identity — see below) |

First connect to a new hub needs DAP_MASTER_SECRET set (enrolls once, then the issued client secret is stored in ~/.dap/config.json). The secret is stored per identity (clientSecrets, keyed by the identity's key file): the hub binds each issued secret to the enrolled agent name, so every agent launched on one host under a different name gets — and keeps — its own secret. A legacy top-level clientSecret is still honored (single-identity hosts upgrade seamlessly) and retired on the next enrollment; a secret that no longer matches (hub wipe, name rebind) is detected on the hub's access_denied and re-enrolled automatically when DAP_MASTER_SECRET is available.

Releases

Every push to main immediately gets an automated patch release (version bump, CHANGELOG entry, annotated tag, GitHub Release) and is published to npm via trusted publishing (OIDC — no tokens or secrets stored anywhere). Pushed v* tags publish the matching package.json version directly.

Protocol

DAP protocol documentation lives in the dap repo.