pinggy-tunnel

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

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

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 localhost service using only the stock SSH client, with no installation or signup required. ## Core Features & Use Cases - Zero-Install Tunnels: Connects to a.pinggy.io over SSH on port 443 to create HTTP, TCP, or TLS reverse tunnels without any binary installation. - Access Control: Gates public URLs with HTTP Basic auth, bearer tokens, IP whitelists, CORS headers, or forced HTTPS via username keywords. - Ready-Made Recipes: Includes end-to-end patterns for receiving webhook callbacks, exposing MCP servers over HTTP/SSE, sharing local LLM endpoints (Ollama/vLLM), and password-protected dev server demos. - Use Case: You need Stripe to POST webhook events to your laptop during local development. The Skill starts a capture server on port 18080, opens a token-gated Pinggy tunnel, parses the public URL from the log, and hands it back for the Stripe dashboard. ## Quick Start Ask the agent to expose local port 8000 to the internet with a Pinggy tunnel and give you the public 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 pinggy.link URL on stdout with no installation or signup required.

How to receive webhook callbacks on a local development machine?▼

Start a local HTTP server that logs incoming requests, then tunnel its port through Pinggy with a bearer-token gate. Hand the public URL to the external service (Stripe, GitHub, Discord) and watch requests land in the capture log.

Pinggy vs cloudflared quick tunnel for sharing a dev server?▼

Pinggy needs only an SSH client while cloudflared requires installing a binary. However, free Pinggy tunnels expire after 60 minutes and get random URLs, so prefer cloudflared quick tunnels when it is already configured.

What are the limitations of the Pinggy free tier?▼

Free tunnels have a 60-minute hard cap, random subdomains that change on every restart, and a limit of one concurrent tunnel per source IP. The Pro tier with a token removes these limits 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:PORT with curl before starting the tunnel, then restart it if needed.

Can I password-protect a Pinggy tunnel URL?▼

Yes, stack access-control keywords into the SSH username: b:user:pass for HTTP Basic auth, k:token for bearer tokens, or w:CIDR for IP whitelisting. Quote the whole user@host argument since it contains a plus sign.