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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@rexlabs/tunnel.now

v2.0.6

Published

Forward Zeit.now aliases to your localhost server.

Readme

tunnel.now

Zeit's now platform is fantastic for rapid iteration on Node.js projects. But sometimes - when debugging a webhook, for example - you might want to run your project on your development machine, somehow handling the requests from there.

Of course, you could make changes, deploy to now, and update the alias as you go. However, this project provides an alternative for those times when you want a faster iteration cycle before deploying a final version to the cloud: it tunnels HTTP requests that are sent to now to your local dev machine.

Quick start

Step 1: Install

$ npm install -g tunnel.now

Step 2: Update npm links (optional)

This step is only necessary for users of nodenv.

$ nodenv rehash

Step 3: Deploy your tunnel endpoint

$ tunnel.deploy

  _                                _
 | |_   _  _   _ _    _ _    ___  | |      _ _    ___  __ __ __
 |  _| | || | | ' \  | ' \  / -_) | |  _  | ' \  / _ \ \ V  V /
  \__|  \_,_| |_||_| |_||_| \___| |_| (_) |_||_| \___/  \_/\_/

✔ Deployed tunnel.now instance on tunnelnow-xrjajpfyyl.now.sh

  Tunnel Usage:
   `tunnel.now tunnelnow-xrjajpfyyl.now.sh <local-port>`

You can also alias directly at this step, like so:

$ tunnel.deploy my-alias.now.sh

  _                                _
 | |_   _  _   _ _    _ _    ___  | |      _ _    ___  __ __ __
 |  _| | || | | ' \  | ' \  / -_) | |  _  | ' \  / _ \ \ V  V /
  \__|  \_,_| |_||_| |_||_| \___| |_| (_) |_||_| \___/  \_/\_/

✔ Deployed tunnel.now instance on tunnelnow-xrjajpfyyl.now.sh
✔ Pointing my-alias.now.sh to tunnelnow-xrjajpfyyl.now.sh

  Tunnel Usage:
   `tunnel.now my-alias.now.sh <local-port>`

As well as adding security through a token:

$ tunnel.deploy --token Tu0IH5IVwv5k

  _                                _
 | |_   _  _   _ _    _ _    ___  | |      _ _    ___  __ __ __
 |  _| | || | | ' \  | ' \  / -_) | |  _  | ' \  / _ \ \ V  V /
  \__|  \_,_| |_||_| |_||_| \___| |_| (_) |_||_| \___/  \_/\_/

✔ Deployed tunnel.now instance on tunnelnow-xrjajpfyyl.now.sh
✔ Pointing my-alias.now.sh to tunnelnow-xrjajpfyyl.now.sh

  Tunnel Usage:
   `tunnel.now tunnelnow-xrjajpfyyl.now.sh <local-port> --token Tu0IH5IVwv5k`

Note that this deployment can be re-used however many times you'd like.

Step 4: Start your application server

In your project, do whatever you need to do to start your server, and take note of the port that is opened:

$ npm run start
Listening on port 8080...

In this case, that's port 8080.

Step 5: In a separate terminal, start your tunnel

tunnel.now takes three arguments:

  1. The now hostname. This will be either the hostname that now provided to you, or the alias that you specified during step 3. That's my-alias.now.sh in the example above.
  2. The port one which your locally-running application is listening. That's 8080 in the example above.
  3. The token argument, which is only required if you specified one during step 3.
$ tunnel.now my-alias.now.sh 8080 --token Tu0IH5IVwv5k

  _                                _
 | |_   _  _   _ _    _ _    ___  | |      _ _    ___  __ __ __
 |  _| | || | | ' \  | ' \  / -_) | |  _  | ' \  / _ \ \ V  V /
  \__|  \_,_| |_||_| |_||_| \___| |_| (_) |_||_| \___/  \_/\_/

✔ Connected to wss://my-alias.now.sh:443
ℹ Tunneling requests to http://localhost:8080

Step 6: Open your browser!

Any HTTP requests made to the now hostname or alias will be tunneled to your local machine.

Module API

You can also open a tunnel connection through require('@rexlabs/tunnel.now').

const TunnelNow = require('@rexlabs/tunnel.now')

const tunnelSocket = TunnelNow({
  remoteHostname: 'my-alias.now.sh',
  localPort: '8080',
  token: 'Tu0IH5IVwv5k'
})

tunnelSocket.addEventListener('open', () => {
  console.log('Connected!')
})

FAQ

Does this work with other services?
Yes. The only hard requirement is that the host provides HTTP and WebSocket support. However, you will need to deploy the tunnel.now repo yourself.

License

This project is covered under the MIT License. Please see the LICENSE file for more information.