Expose your app
Install Node.js 20.19 or newer. Start your local HTTP app, then run Endport from that app’s directory.
npm install -g https://endport.io/downloads/endport-cli-0.1.0.tgzendport 3000 --name myappLeave both your local app and the Endport CLI running. The URL remains assigned to your project, but requests receive an offline response when either process stops.
You can omit --name; Endport uses a clean version of your project directory name. If the name is taken, it adds a short suffix and prints the assigned URL.
Unlock the workspace
The CLI prints a one-time code when it connects. Open workspace.endport.io and enter that code; Endport finds the matching app and shows request method, path, status, duration, transfer size, and 24-hour analytics.
endport codeEndport writes a non-secret .endport.json marker in your project. Its private credential stays in ~/.config/endport/identities/. Back up that directory to retain ownership of your app URL.
Share a private preview
In the workspace’s Access section, choose Restricted and create a visitor link. You can set it to expire after 1 hour, 24 hours, or 7 days and revoke it whenever you need to. Visitors can open the running app through that link; they cannot open the owner’s logs workspace. Endport shows the secret link only once.
Redeeming the link sets an app-specific browser cookie. Revocation blocks future HTTP requests and WebSocket connections; an already open WebSocket stays connected until it closes.
Connect a project’s ports
Create endport.config.json in your project directory with up to five named services, then run endport start. For example: {"name":"packly","services":{"web":{"port":3000},"api":{"port":4000}}}. Endport assigns a stable URL and a separate logs workspace to each service. Run endport code api to print a fresh code for the API workspace.
The first service uses the project URL. Additional services get readable names such as packly-api.endport.io; if a name is already taken, Endport adds a short suffix.
Use your hostname
In the workspace’s Domain section, enter a subdomain such as api.example.com. Endport shows one CNAME and one TXT record. Add both at your DNS provider, then select Verify DNS.
endport 3000 --domain api.example.comYour logs remain at workspace.endport.io/<app>. The custom domain only changes the public app URL.
What stays online
The CLI maintains a WebSocket connection to the gateway and reconnects after a network interruption. Endport forwards HTTP requests, WebSockets, and server-sent events. An endpoint is offline when the CLI is closed or the gateway cannot reach it.
Know the boundaries
Headers and query strings are never saved. JSON body previews are off by default. When enabled in Access, Endport stores redacted previews of JSON bodies up to 8 KB for seven days. Redaction is best effort; avoid enabling it for sensitive personal or payment data. The inspector can replay GET and HEAD paths without original headers, query strings, or bodies. Avoid putting secrets in URL path segments.
When something looks wrong
“This Endport endpoint is offline.”
Start your local server, then run endport <port> in the project directory and keep that terminal open. The logs workspace shows the connection state.
“Invalid or expired code.”
Run endport code in the same project directory and enter the newest code. Generating a new code replaces the previous one.
The public HTTPS URL does not load during local testing.
Endport must be deployed with DNS pointing to its server for public URLs to work. The local Docker test uses localhost:8080 and a Host header to simulate a public request.