ENDPORT / DOCUMENTATION

Build locally.
Reach everywhere.

Get a public HTTPS URL for a local app, then inspect its requests in a private workspace.

01 / QUICK START

Expose your app

Install Node.js 20.19 or newer. Start your local HTTP app, then run Endport from that app’s directory.

INSTALL THE CLI
npm install -g https://endport.io/downloads/endport-cli-0.1.0.tgz
RUN INSIDE YOUR PROJECT
endport 3000 --name myapp
PUBLIC URLhttps://myapp.endport.ioPRIVATE LOGShttps://workspace.endport.io/

Leave 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.

02 / PRIVATE LOGS

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.

GET A FRESH CODE
endport code
Run it in the same project directory. The code expires after 10 minutes and works once. A successful login keeps that browser session for 24 hours.

Endport 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.

03 / VISITOR ACCESS

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.

04 / MULTIPLE SERVICES

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.

05 / CUSTOM DOMAINS

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.

CONNECT A VERIFIED DOMAIN
endport 3000 --domain api.example.com

Your logs remain at workspace.endport.io/<app>. The custom domain only changes the public app URL.

06 / CONNECTION

What stays online

PUBLIC REQUESTmyapp.endport.io
→
ENDPORT GATEWAYHTTPS + ROUTING
→
YOUR CLIlocalhost:3000

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.

07 / LIMITS AND PRIVACY

Know the boundaries

2 MBmaximum request body
10 MBordinary response limit
7 daysrequest metadata retention
100concurrent HTTP requests per app

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.

08 / TROUBLESHOOTING

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.