finds.dev← search

// the find

amalshaji/portr

★ 3,140 · Go · AGPL-3.0 · updated Jun 2026

Expose local http, tcp or websocket connections to the public internet

Portr is a self-hosted ngrok alternative that uses SSH remote port forwarding to expose local HTTP, TCP, and WebSocket services. It ships a Go server and client binary plus an admin dashboard for team management. Built for small dev teams who want ngrok-style tunnels without the SaaS dependency or per-seat pricing.

SSH as the transport is a solid choice — it's firewall-friendly, encrypted by default, and avoids reinventing a security layer. The local inspector with request replay and WebSocket frame capture is genuinely useful for debugging webhooks and real-time connections, not just a checkbox feature. SQLite-backed request logs queryable from the CLI (`portr logs`) means you can grep your tunnel traffic without opening a browser. The codebase is well-structured — server and client are cleanly separated under `internal/`, and there's real test coverage across SSH shutdown, stub tunnels, and the dashboard.

AGPL-3.0 is a dealbreaker for anyone embedding this in a commercial product or SaaS — the license means your whole stack is potentially in scope. The distributed static assets (compiled UI bundles checked into git under `dist/`) make the repo history noisy and will cause merge pain over time. No persistent tunnel URLs without a fixed subdomain — if you restart without `--subdomain`, your webhook registrations break, which is exactly the scenario teams hit most. Documentation lives in a Next.js app in the same repo, which is fine, but local dev requires spinning up both the Go server and a Node/Bun frontend build, raising the bar for contributors.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →