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

testvibe-tunnel

v0.1.0

Published

TestVibe tunnel agent — run it on a machine inside your network so TestVibe's cloud test runs can reach a private/on-prem app over an outbound-only tunnel, with the app's URL unchanged and TLS end-to-end.

Readme

testvibe-tunnel

The TestVibe tunnel agent. Run it on a machine inside your network and TestVibe's cloud test runs can reach a private / on-prem app you can't expose publicly — without changing the app's URL and with TLS end-to-end. The untrusted AI-generated test code stays in our sandbox; only this small, trusted agent runs on your side, dialing out to our relay (no inbound firewall holes).

Quick start

Requires Node 20+. Grab a workspace API key from Settings → CLI & API keys, then run (the exact command with your relay/server filled in is shown in Settings → Tunnels):

npx --yes testvibe-tunnel@latest --token <tvb_… key> \
    --relay <relay wss:// URL> --server <https://your-testvibe-server>

The agent self-registers by machine name (it appears under Settings → Tunnels) and keeps a small pool of outbound backchannels open. The destination allowlist is managed in-app from your tunneled projects' site URLs and refreshes on every heartbeat — see --help for all flags, and the TestVibe docs for the full setup guide.

How it works

It's the alternative to the Private Runner: the untrusted AI-generated test code stays in our Hyper-V sandbox; only this small, trusted, signed agent runs on the customer side.

 Dynamic Session (our sandbox)                              Customer network
┌───────────────────────────────┐      ┌─────────┐      ┌────────────────────────┐
│ Chromium --proxy-server=:PORT  │      │  relay  │      │  tvtunnel (agent)       │
│        │                       │      │ (cloud) │      │     │  allowlist check   │
│        ▼                       │ ───► │         │ ◄─── │     ▼                   │
│  proxy.js (CONNECT proxy) ─────┼──────┤ pairs   ├──────┼─► raw TCP to real app   │
└───────────────────────────────┘      └─────────┘      └────────────────────────┘
        only egress = relay        both legs dial OUT      app.acme.internal:443

The browser issues CONNECT app.acme.internal:443; the proxy forwards it to the relay; the relay pairs it with an idle agent backchannel; the agent checks its destination allowlist and dials the real app. The relay and agent only move opaque TLS bytes — they never terminate TLS, so the browser validates the app's real certificate and the URL is never rewritten.

Components

| File | Runs | Role | | --- | --- | --- | | relay.js | our cloud | Meeting point. Both legs connect outbound; pairs a client leg with an idle agent backchannel. Never sees plaintext. | | agent.js / cli.js (tvtunnel) | customer network | Outbound-only. Keeps a pool of idle backchannels; enforces the destination allowlist; dials the app and splices bytes. | | proxy.js | our sandbox | In-session HTTP CONNECT proxy Chromium points at via --proxy-server. |

Security boundary

The agent's allowlist is the whole containment control for tunneled runs: untrusted test code drives the browser, so without it that code could ask the tunnel to reach arbitrary internal hosts. The agent only bridges host:port pairs it was explicitly given (--allow), and refuses everything else (502 at the proxy). The sandbox itself has no general egress — its only network path is the relay — so it needs no per-project egress firewall.

See docs/architecture/local-tunnel.md for the full design and how it routes through the run spine.

Run the agent (customer side)

With a --server, the allowlist is managed in-app (recommended — see Quick start above). For a self-hosted relay or local/TCP mode, pass the allowlist explicitly:

npx --yes testvibe-tunnel@latest --relay relay.testvibe.io:443 \
    --token <account-token> --allow app.acme.internal:443

--allow host:port may be repeated. To point an allowed host at a specific dial target, use host:port=dialHost:dialPort. (Installed globally or from a local tarball, the same command is available as tvtunnel.)

Tests

npm test          # node --test: dep-free e2e + (if available) a real-Chromium e2e
  • test/e2e.test.js — no external deps. Proves URL unchanged, TLS end-to-end (validates the app's real cert through the tunnel), and allowlist refusal.
  • test/browser.test.js — launches the cached Chromium with --proxy-server and navigates to the app's real URL. Skips if playwright-core/Chromium is absent.