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

@qemuguest/site-chat-simplex-bridge

v0.1.0

Published

Relay your website chat into SimpleX: each customer becomes their own SimpleX chat, and your replies go back to their website chat live. Pairs with @qemuguest/site-chat-server.

Downloads

203

Readme

@qemuguest/site-chat-simplex-bridge

Relay your website chat into SimpleX: each customer becomes their own SimpleX chat, and whatever you type there goes back to their chat window on your site, live. Works with @qemuguest/site-chat-server and @qemuguest/site-chat-widget.

website ──► site-chat-server (simplexRelay) ◄── polls ── this bridge ── SimpleX ──► "Web · Sam" chat ──► you
                                             ── reply ─►               ◄── you type

The SimpleX core is a native library, so it can't run in a Worker or serverless function. This runs on any always-on machine (your Mac, a small VPS) and only makes outbound HTTPS requests to your site, so no port or tunnel is needed.

Run

npx @qemuguest/site-chat-simplex-bridge \
  --url https://example.com/api/site-chat \
  --secret-file ./secret            # same value as simplexRelay({ secret }) on the server

The first run installs the SimpleX SDK into ~/.cache/site-chat-simplex-bridge and builds its native addon, which needs a C++ toolchain (Xcode Command Line Tools on macOS, build-essential on Linux, VS Build Tools on Windows). It then prints the bridge's address. Connect to it once from your SimpleX app. The first contact to connect becomes the only one that can read and answer.

From then on:

  • each new website conversation is a new group named after the customer ("Web · Sam · Ace Roofing"; renamed when they give their details), with you invited as admin;
  • their messages, contact details, contact-form submissions, and replies you send from other channels (admin, Telegram) all appear there;
  • anything you type in the group is delivered to their website chat within a few seconds.

In the official SimpleX apps each new customer arrives as a group invitation you tap to join. Clients built on the SDK can join automatically:

const { autoJoinBridgeChats } = require("@qemuguest/site-chat-simplex-bridge");
autoJoinBridgeChats(chatApi, { name: "Website chat", pinFile: "./data/autojoin-contact" });

Options

| Flag | Env | Default | | --- | --- | --- | | --url | SITE_CHAT_URL | (required) where site-chat-server is mounted | | --secret / --secret-file | SITE_CHAT_SECRET | (required) 32+ characters | | --data | SITE_CHAT_DATA | ./site-chat-bridge-data (bridge database + state; back it up) | | --name | SITE_CHAT_NAME | Website chat | | --prefix | | Web | | --cache | | ~/.cache/site-chat-simplex-bridge |

Programmatic: const { runBridge } = require("@qemuguest/site-chat-simplex-bridge"); const b = await runBridge({ url, secret }); await b.stop();

Keep it running with launchd, systemd or pm2; it shuts down cleanly on SIGTERM.

AGPL-3.0, because it uses the SimpleX chat SDK, which is AGPL-3.0.