gosuda/portal-deploy
Safely expose, verify, and reach apps published through Portal tunnels.
Reach, inspect, or consume a service that someone published through a Portal relay. Turns a Portal hostname, a service name plus relay, or a bare service name into the right public URL (name.relay-host over HTTPS) or raw host:port, lists what is live on a public or self-hosted relay through GET /api/state, makes bounded HTTPS requests or protocol probes, connects to raw TCP/UDP endpoints such as game servers, SSH, or databases, and recognizes an x402 402 Payment Required challenge and reports its terms without paying. Use when the user pastes a Portal URL or hostname, asks what is available on a relay, wants to call, fetch, test, browse, or check an app, API, agent, or game server exposed with Portal, asks what a paid route costs, or asks whether a Portal tunnel is reachable from the outside. Do not use for exposing a local app (portal-expose), running or registering a relay (portal-relay), paying for a route (a separate payment workflow), or generic HTTP debugging of hosts that are not behind Portal.
Expose, preview, protect with x402 payments, or keep a local web app, static site, HTTP route set, or explicitly requested TCP/UDP service reachable through Portal, then verify the public endpoint and report its lifecycle. This is the app side of Portal, the same flow as the quick-start form on a relay website (install, run one portal expose command built from the app settings, open the public URL). Use when the user asks to deploy, publish, share, tunnel, expose, or connect a local app to Portal or to a specific relay, create a public preview, add a paid route, configure x402, needs an HTTPS URL on a phone or another device because a browser feature such as microphone, camera, geolocation, or PWA install refuses to work over a LAN http address, or wants a Go app to embed the Portal SDK. Do not use for deploying a Portal relay, generic cloud hosting, publishing this plugin, or reaching a service that someone else already published (portal-connect).
Set up and run a public Portal relay on any Linux host with a public IP — Docker Compose deployment, embedded authoritative DNS with one-time NS delegation, optional TCP/UDP lease ports for game hosting, and registration in the public relay pool. Use when the user asks to run their own relay, contribute a relay to the Portal network, self-host a relay instead of using public ones, or open a relay with game-server support. Do not use for exposing a local service (portal-expose), reaching a published service as a client (portal-connect), or for accessing a CLI agent remotely.