HomeComparevs ngrok
share terminal vs ngrok

A terminal, not a port forward.

ngrok is a great way to expose a port. It is a terrible way to share a shell — you end up wrapping ssh-d, gotty, or ttyd, fighting auth, and praying nobody fingerprints the open SSH port. share terminal is the purpose-built version.

$npx share-terminal start
verdict

If you reach for ngrok every time someone needs to look at your machine, share terminal collapses three layers (port forward + web TTY + auth) into one tool, peer-to-peer.

Featureshare terminalngrok
What it actually shares✓A live PTY with bidirectional input✗A TCP/HTTP port — you supply the shell
Transport✓Direct WebRTC DataChannel (DTLS-SCTP)✗TLS tunnel through ngrok edge nodes
Server sees your bytes?✓No — peer-to-peer once handshake completes✗Yes — bytes transit ngrok's infrastructure
Identity✓Google OAuth — viewer locked to host's subTunnel URL + whatever auth you wrapped
Auth surface✓Built-in: identity-locked pairing code✗You bolt on basic-auth, OAuth proxy, or live with raw URL
Viewer install✓Zero — browser tabssh client, or a wrapped web TTY
Use case fit✓Interactive shell sharing✓Webhook testing, local web dev exposure
Risk profile✓Single ephemeral session, expires in 2 min if unclaimed✗Persistent tunnel URL — risk of forgotten reservations
migrate

Coming from ngrok?

Most teams switch in an afternoon. HTTP / TCP tunneling through ngrok edge habits map cleanly to share terminal — here's the translation.

  1. 01

    Stop using ngrok for terminal sharing

    Keep ngrok for what it's actually good at — webhook testing, exposing local dev servers. Pull the SSH-over-ngrok kludge out of your README.

  2. 02

    Install the share terminal CLI

    npx share-terminal start spins up an authenticated, encrypted, ephemeral terminal session. Pairing code prints in a box, expires in 2 minutes.

  3. 03

    Ditch the auth wrapper

    No more basic-auth proxies, no more OAuth wrappers in front of gotty/ttyd. Identity is enforced inside the protocol: viewer must match host's Google sub.

  4. 04

    Use ngrok for the remaining 80%

    Webhook callbacks, sharing a local Next.js dev server with a designer, browser-side mobile testing. Two tools, two jobs.

FAQ

Questions teams ask before they switch

Can't I just expose ssh via ngrok?
You can, but you're exposing a credential surface (SSH keys, passwords) over a public ngrok URL. share terminal never exposes a port at all — there is no listening socket on your machine for the public internet to find.
Does ngrok do end-to-end encryption?
ngrok encrypts the tunnel between your machine and the ngrok edge, and between the edge and the client. The edge terminates both — your bytes are in clear on ngrok infra. share terminal is genuinely peer-to-peer once the handshake completes.
What about ngrok TCP tunnels for SSH?
Same problem: bytes still terminate at the ngrok edge. Plus you need an SSH client on the viewer side. share terminal is browser-native — no client to install.
When should I still reach for ngrok?
Webhook testing, exposing a local HTTP server to an external service (Stripe, Slack), or sharing a dev preview URL. Those are port-forwarding problems. Sharing a terminal is not.
get started

One command. One encrypted tunnel.

No global install. No SaaS dashboard. No account to provision — sign in with Google, pair, share.

$npx share-terminal start
140 KB CLINode ≥ 20macOS, Linux