PORTAL v2
Skip to quick start

Expose Local Apps To The Public Internet

Quick Start

Expose service

Run this command

1. Paste what you want to share

A local port such as 3000, a running URL such as http://localhost:3000, or a file path such as file:///Users/me/site/index.html — file paths are served as a static site straight from that folder, so nothing needs to be running locally.

2. Run this command

Share
Name
curl -fsSL https://github.com/gosuda/portal-tunnel/releases/latest/download/install.sh | bash && export PATH="$HOME/.local/bin:$HOME/bin:$PATH"portal expose 3000 --name zesty-beacon-sketch

3. Open the URL printed by Portal

Portal discovers public relays and prints the available URLs in your terminal. The name above applies when creating a new identity; an existing identity.json keeps its saved name.

Core features

Built for real localhost publishing

Publish through a public ingress while an independent overlay network owns the path behind it. Try portal expose 3000 --overlay; direct reverse transport remains the default and fallback. Explore IVNP-backed overlay networking.

IVNP

IVNP-backed overlay networking

Portal selects and authorizes the ingress and gateway. IVNP owns the network path between them, including internal routers and hops.

TLS

Client-side tenant TLS

Uncached HTTPS tunnels terminate TLS locally. Optional static caching explicitly trusts the selected relays.

HTTP

Tunnel-controlled HTTP routing

Mount frontend, API, and other local HTTP services behind one public URL.

Ports

Raw TCP and UDP leases

Expose game servers, custom TCP protocols, and datagram services through relay ports.

Mesh

Relay pools and failover

Use discovered and explicit relays for resilient public connectivity.

Ops

Self-hosted or public relays

Run your own relay, attach explicit relays, or use the public relay registry.

Looking for the complete capability breakdown across CLI, Agent, SDK, and Relay? View the Canonical Feature Inventory →