pinggy-tunnel

Expose local services to the public internet via Pinggy SSH reverse tunnels.

Updated Jun 5, 2026
One-click install
npx skills add https://github.com/xu1713/openhorse --skill pinggy-tunnel-xu1713
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: pinggy-tunnel
Source: https://github.com/xu1713/openhorse/tree/main/openhorse/openhorse/optional-skills/devops/pinggy-tunnel
Command: npx skills add https://github.com/xu1713/openhorse --skill pinggy-tunnel-xu1713

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Sharing a local dev server, webhook receiver, or MCP endpoint with the outside world normally requires installing tunneling daemons like ngrok or cloudflared. This Skill creates public HTTP/HTTPS URLs for any local port using only the stock SSH client, with no installation or signup required. ## Core Features & Use Cases - Zero-Install Tunneling: Connects to a.pinggy.io over SSH on port 443 to create HTTP, TCP, or TLS reverse tunnels without any binary installation. - Access Control Flags: Gates tunnels with HTTP Basic auth, bearer tokens, IP whitelists, CORS headers, and forced HTTPS via username keywords. - Ready-Made Recipes: Includes end-to-end patterns for receiving webhook callbacks, exposing MCP servers over HTTP, sharing local LLM endpoints (Ollama/vLLM), and password-protected dev server demos. - Use Case: You need Stripe to POST a webhook to your laptop during local testing. The Skill starts a capture server, opens a bearer-token-gated Pinggy tunnel, parses the public URL from the log, and hands it back for registration. ## Quick Start Ask the agent to expose local port 8000 to the internet using a Pinggy tunnel and return the public HTTPS URL.

Frequently Asked Questions about pinggy-tunnel

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I expose a localhost port to the internet without installing ngrok?

Use a Pinggy SSH reverse tunnel: run ssh -p 443 -R0:localhost:PORT [email protected] with your stock SSH client. Pinggy returns a public HTTPS URL on stdout with no installation or signup required.

How do I receive webhook callbacks on my local machine?

Start a local HTTP capture server, then tunnel its port through Pinggy and register the returned pinggy.link URL with the external service. Gate the tunnel with a bearer token so only the intended service can post to it.

Pinggy vs cloudflared quick tunnel, which should I use?

Pinggy needs only an SSH client, making it ideal when no tunneling binary is installed, but free tunnels expire after 60 minutes. Cloudflare quick tunnels do not expire, so prefer cloudflared when it is already configured on the host.

What are the limitations of the Pinggy free tier?

Free tunnels expire after 60 minutes, get a random subdomain that changes on every restart, and allow only one concurrent tunnel per source IP. A Pro token removes the time cap and enables persistent subdomains.

Why does my Pinggy tunnel URL return 502 Bad Gateway?

A 502 means the SSH tunnel is up but no local service is listening on the forwarded port. Verify the origin responds on 127.0.0.1 with curl before starting the tunnel, then restart it if needed.

How do I password-protect a Pinggy tunnel?

Add access-control keywords to the SSH username, quoted because of the plus signs. Use b:user:pass for HTTP Basic auth, k:token for bearer tokens, or w:CIDR for IP whitelisting, combined like "b:admin:[email protected]".