explaingit

ehang-io/nps

34,054GoAudience · developerComplexity · 3/5StaleLicenseSetup · easy

TLDR

Lightweight proxy server that exposes services on private networks to the public internet without port forwarding, using secure tunnels.

Mindmap

mindmap
  root((NPS))
    What it does
      Expose private services
      Create secure tunnels
      Route internet traffic
    Protocols supported
      TCP and UDP
      HTTP and HTTPS
      SOCKS5
    Key features
      Web dashboard
      Traffic monitoring
      Multi-user support
      Domain routing
    Use cases
      Remote access
      Webhook testing
      Development sharing
      SSH tunneling
    Tech stack
      Go language
      Linux Windows macOS

Things people build with this

USE CASE 1

Expose a locally-running web app to colleagues or testers without changing router settings.

USE CASE 2

Debug payment gateway webhooks or third-party callbacks that require a real public URL.

USE CASE 3

SSH into a machine behind a corporate firewall or NAT from anywhere on the internet.

USE CASE 4

Share a development server running on your laptop with remote team members in real time.

Tech stack

GoTCP/UDPHTTP/HTTPSSOCKS5

Getting it running

Difficulty · easy Time to first run · 5min
Use it freely, but any project you distribute that includes this code must also be GPL-licensed and open source.

In plain English

NPS is a lightweight, high-performance intranet penetration proxy server, meaning it lets you expose services running on a private network (behind a router, firewall, or NAT, Network Address Translation) to the public internet without port forwarding or changing your router settings. The core problem it solves is a common one: your computer or device is on a home or office network and has no publicly reachable IP address. You might want to access your home desktop from outside, share a locally-running web app with a colleague, debug a payment gateway callback that needs a real URL, or SSH into a machine behind a corporate firewall. Normally, this requires complex router configuration that most people cannot control. NPS handles it by having the internal machine (running the NPS client) establish an outbound connection to a public NPS server you control, and then routing traffic from the internet back through that tunnel. It supports essentially every network protocol: TCP, UDP, HTTP and HTTPS, SOCKS5, and peer-to-peer connections. The server side runs on any machine with a public IP, and comes with a web management dashboard where you create and configure tunnel rules, monitor live traffic and bandwidth, set rate limits, and manage multiple clients and users. The client side is a single binary you run on the machine you want to expose. Additional features include HTTPS support for backend services that only speak plain HTTP, domain-based routing with custom headers and URL rewriting, traffic compression and encryption, and multi-user support with registration. You would use NPS when you need reliable intranet tunneling for development, remote access, or production webhook endpoints. It is written in Go, runs as a system service on Linux, Windows, and macOS, and is significantly lighter-weight than enterprise alternatives. The primary documentation and community is in Chinese.

Copy-paste prompts

Prompt 1
How do I set up NPS to expose a local web server running on port 8080 to the public internet?
Prompt 2
Show me how to configure NPS with HTTPS for a backend service that only speaks HTTP.
Prompt 3
How do I use NPS to create a secure tunnel for SSH access to a machine behind a firewall?
Prompt 4
What's the difference between NPS and ngrok, and when should I use NPS instead?
Prompt 5
How do I set up the NPS server on a VPS and connect multiple clients from different machines?
Open on GitHub → Explain another repo

Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.