Raspberry Pi and IoT
Behind home routers and CGNAT
- Reach a Pi running Home Assistant or Pi-hole from anywhere.
- No port forwarding on the router.
- Works on 4G and 5G links, where the carrier's NAT blocks inbound connections.
Run one command on any machine, then open its shell from your browser. Works behind NAT and firewalls.
On the left, the install command runs in a terminal on a Linux machine and signs it in with a 6-digit code from email. In the middle, the machine opens one outbound connection to Pinggy. On the right, the Pinggy dashboard in a browser shows the machine online and opens shells on it, running Claude Code, Codex and bash in separate tabs.
npm run devBehind home routers and CGNAT
Every inbound port closed
sshd on the internet and no port 22 for bots to find.No keyboard needed
docker run without -t.NAS boxes, mini PCs, old laptops
Help someone on another network
PowerShell or cmd.exe
The agent makes one outbound connection and accepts none. There is no SSH server to patch and nothing on the machine for a scanner to knock on.
device.json, readable only by your user on macOS and Linux.| Time | Event | Source IP |
|---|---|---|
| 14:02 | Shell opened | 203.0.113.24 |
| 13:41 | Tunnel homeassistant restarted | 203.0.113.24 |
| 13:40 | Agent connected | 198.51.100.7 |
| 09:12 | Shell closed after 30 min idle | - |
| 08:30 | Shell opened | 192.0.2.61 |
No. The Pinggy CLI starts the shell itself. Nothing on the machine listens for incoming connections, so there is no sshd to install and no port 22 to open.
Yes, as long as the machine can make outbound connections to Pinggy. The agent dials out and keeps that connection open, and your browser reaches the shell through the dashboard. You don't need a public IP or any router change.
The user who ran pinggy, with that user's permissions. On macOS and Linux it is a shell listed in /etc/shells. On Windows it is PowerShell or cmd.exe.
The shell keeps running. Open the device's Terminal tab again and the screen is redrawn as you left it. The same happens when the machine's connection drops for a while.
Until you close it or type exit. It also ends after 30 minutes with no activity, after 8 hours whatever its activity, and when the agent stops.
Run pinggy device connect -b. The agent then runs in the background in the Pinggy CLI daemon. It stops with pinggy device stop and when the machine reboots. After a reboot, run the same command again: the token is saved, so it asks nothing.
The agent never logs what you type in a shell. The copy of the screen that redraws a reopened tab is kept in memory only, and it is gone when the shell ends.
The Linux binaries need glibc, as on Debian, Ubuntu and Fedora. On Alpine and other musl-based systems, install with npm install -g pinggy, then run pinggy device login.
Delete the device, or rotate its token, in the dashboard. pinggy device remove only deletes the token from the machine, and the device stays in your account.