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

@btcmaster1000/peermesh-provider

v1.0.54

Published

Share your connection with PeerMesh and earn free browsing credits

Readme

PeerMesh Provider CLI

Share your internet connection with PeerMesh and earn free browsing credits.
Works as a drop-in alternative to the desktop app — the dashboard and extension detect it automatically on port 7654.


Install

Windows (cmd / winglet)

curl -fsSL https://nodejs.org/dist/v20.11.0/node-v20.11.0-x64.msi -o node.msi && msiexec /i node.msi /quiet && npm install -g peermesh-provider

Windows (PowerShell / Invoke)

Invoke-WebRequest https://nodejs.org/dist/v20.11.0/node-v20.11.0-x64.msi -OutFile node.msi; Start-Process msiexec -ArgumentList '/i node.msi /quiet' -Wait; npm install -g peermesh-provider

macOS (built-in curl + brew)

brew install node && npm install -g peermesh-provider

Or without Homebrew (built-in curl only):

curl -fsSL https://nodejs.org/dist/v20.11.0/node-v20.11.0.pkg -o node.pkg && sudo installer -pkg node.pkg -target / && npm install -g peermesh-provider

Linux (built-in curl)

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - && sudo apt-get install -y nodejs && npm install -g peermesh-provider

Run without installing

npx peermesh-provider

Run

peermesh-provider

First run opens a sign-in page in your browser. Enter the code shown, approve it, and you're sharing.

The CLI starts a control server on port 7654 — the same port the desktop app uses.
The dashboard and extension will detect it automatically and show ● CLI in the header.


Options

# Set a daily bandwidth limit (auto-disconnects when reached)
peermesh-provider --limit 500        # 500 MB/day
peermesh-provider --limit 1024       # 1 GB/day

# Remove your daily limit
peermesh-provider --no-limit

# Override your country code
peermesh-provider --country NG

# Show today's usage and exit
peermesh-provider --status

# Clear saved credentials and re-authenticate
peermesh-provider --reset

Sync with dashboard / extension

The CLI and desktop app are interchangeable — both expose the same HTTP control API on localhost:7654.

  • Dashboard share toggle controls the CLI just like the desktop app
  • Extension detects the CLI and shows the correct helper label
  • Only one can run at a time on the same machine (same port)

Keep it running

Mac/Linux — systemd (built-in):

sudo tee /etc/systemd/system/peermesh.service <<EOF
[Unit]
Description=PeerMesh Provider
After=network.target

[Service]
ExecStart=$(which peermesh-provider)
Restart=always
User=$USER

[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable --now peermesh.service

Mac — launchd (built-in):

cat > ~/Library/LaunchAgents/app.peermesh.provider.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
  <key>Label</key><string>app.peermesh.provider</string>
  <key>ProgramArguments</key><array><string>$(which peermesh-provider)</string></array>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
</dict></plist>
EOF
launchctl load ~/Library/LaunchAgents/app.peermesh.provider.plist

Windows — Task Scheduler (built-in):

$action = New-ScheduledTaskAction -Execute "$(where.exe peermesh-provider)"
$trigger = New-ScheduledTaskTrigger -AtLogOn
Register-ScheduledTask -TaskName "PeerMesh Provider" -Action $action -Trigger $trigger -RunLevel Highest -Force

Uninstall

npm uninstall -g peermesh-provider

To also remove saved credentials and config:

Mac/Linux:

rm -rf ~/.peermesh

Windows (PowerShell):

Remove-Item -Recurse -Force "$env:USERPROFILE\.peermesh"

Windows (cmd):

rmdir /s /q "%USERPROFILE%\.peermesh"

If you set up a background service, remove it first:

Linux — systemd:

sudo systemctl disable --now peermesh.service
sudo rm /etc/systemd/system/peermesh.service

Mac — launchd:

launchctl unload ~/Library/LaunchAgents/app.peermesh.provider.plist
rm ~/Library/LaunchAgents/app.peermesh.provider.plist

Windows — Task Scheduler:

Unregister-ScheduledTask -TaskName "PeerMesh Provider" -Confirm:$false

What it does

  • Connects to the PeerMesh relay as a provider
  • Routes other users' HTTPS traffic through your connection
  • Earns you browsing credits (free tier access)
  • Exposes a control server on port 7654 so the dashboard and extension can detect and control it
  • Blocks: .onion, SMTP, mail servers, torrent trackers, private IPs
  • Sends a heartbeat every 30s to keep your peer count accurate
  • Flushes bandwidth stats to the server every 5s
  • Auto-disconnects when daily limit is reached (if set)