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

ssh-chain

v1.0.2

Published

HTTP proxy through SSH SOCKS5 tunnel

Readme

ssh-chain

HTTP proxy through SSH SOCKS5 tunnel.

Installation

pnpm install

Building

Build the project (requires Bun for building):

bun run build

This creates:

  • dist/ssh-chain - Executable that runs with Node.js (recommended)
    • Requires Node.js in runtime
    • Smaller size (~400KB)
    • No known bugs
  • dist/ssh-chain.bun - Bun-specific binary

Note: We recommend using Node.js to run the built binary due to a Bun issue with memory statistics.

Usage

Quick start (no config file needed)

# Connect using ~/.ssh/config host
./dist/ssh-chain my-server

# Connect with user@host
./dist/ssh-chain [email protected]

# Or during development (requires Bun)
bun run index.ts my-server

With config file

# Use default config.json
./dist/ssh-chain

# Use custom config file
./dist/ssh-chain -c ./path/to/config.json

# Override sshServer from config file
./dist/ssh-chain other-server -c ./path/to/config.json

Command-line options

Usage:
  ssh-chain [options] [ssh-server]

Arguments:
  ssh-server              SSH host (hostname, IP, or ~/.ssh/config Host entry)
                          This overrides sshServer in config file

Options:
  -c, --config <path>     Path to config file (default: ./config.json)
  -p, --port <port>       HTTP proxy port (default: 4080)
  -l, --log-level <level> Log level: debug, info, warn, error (default: info)
  -h, --help              Show help message
  -v, --version           Show version

Examples

# Simple usage
./dist/ssh-chain my-server

# Custom HTTP proxy port
./dist/ssh-chain my-server -p 8080

# Enable debug logging
./dist/ssh-chain my-server --log-level debug

# Use custom config with server override
./dist/ssh-chain other-server -c ./custom-config.json

Configuration

See config.example.json for all available options.

The only required configuration is sshServer, which can be provided:

  • As a command-line argument
  • In the config file

Command-line arguments have higher priority than config file values.

Direct Domains (Bypass Proxy)

You can configure domains that should bypass the proxy and connect directly. Add them to the directDomains array in your config file:

{
  "directDomains": ["foo.example.com", "*.my-company.com", "foo-bar", "*.us"]
}

Wildcard Support:

  • Exact match: foo.example.com - only matches this exact domain
  • Subdomain wildcard: *.my-company.com - matches any subdomain like api.my-company.com, dev.api.my-company.com, and the apex domain my-company.com
  • No TLD: foo-bar - matches simple hostnames without a TLD
  • TLD wildcard: *.us - matches all domains ending in .us (e.g., example.us, api.example.us)

Direct connections are labeled with [DIRECT] in the logs.

Development

This project requires Bun for building and development:

# Install dependencies
pnpm install

# Run in development mode (with auto-reload)
bun run dev

# Run tests
bun test

# Type check
pnpm typecheck

# Build for production
bun run build