Vibeleaderboard
Index / tool
Visit port1355.dev
Category
Developer Tools
Rank
Pricing
Open Source
Platform
cli
Type
TOOL
Latest release
v0.15.6
Date

About

Replaces port numbers with stable, named .localhost URLs for local development. Enables developers to use memorable names like https://myapp.localhost instead of http://localhost:3000, making local development more organized and accessible.

What it does

Portless runs a local reverse proxy in front of development servers. It assigns each child process a free internal port, registers a hostname, and routes browser requests by host. The proxy supports HTTPS, HTTP/2, WebSockets, subdomains, custom domains, monorepos, and branch-specific worktree names.

Why it's ranked here

This is a focused tool with unusually broad handling of real development friction. Automatic framework flags, worktree isolation, monorepo discovery, persisted proxy settings, and early failure in non-interactive environments reduce setup work. The cost is meaningful system involvement: trusted certificates, privileged ports, state files, and sometimes hosts-file changes.

What's good

HTTPS and HTTP/2 work by default, while WebSocket forwarding preserves hot reload behavior. Portless infers names and scripts, discovers workspace packages, and separates linked worktrees with branch-derived subdomains. It also sanitizes hostnames, detects proxy loops, preserves forwarded headers, and supports both strict routes and optional wildcard subdomains.

Tradeoffs

Portless is pre-1.0, and its state format may change between releases. Default HTTPS generates and trusts a local certificate authority, while ports 80 and 443 can require elevation. Custom domains require hosts-file synchronization. LAN mode uses the local suffix and cannot currently combine with a custom domain. Linux LAN publishing also depends on Avahi tooling.

How to use it well

It best suits developers running several local web services, monorepo packages, or parallel Git worktrees. Install one global version, let projects keep their normal development scripts, and add configuration only for naming or fixed-port exceptions. Use custom owned domains when OAuth callbacks reject local suffixes. It does not replace production hosting, and public ngrok access still requires the separate ngrok CLI and authentication.

Technical notes+

packages/portless/tsup.config.ts builds ESM and declaration outputs from packages/portless/src/cli.ts and packages/portless/src/index.ts. The CLI coordinates certificates, route state, proxy startup, framework flag injection, workspace discovery, services, mDNS, Tailscale, and ngrok. packages/portless/src/index.ts exposes the library surface by re-exporting types, proxy, routes, utilities, and hosts modules. packages/portless/src/proxy.ts uses Node HTTP and HTTP/2 primitives, supports HTTP/1 fallback and WebSocket bridging, forwards requests to loopback backends, and rejects routing loops after five proxy hops. packages/portless/src/certs.ts generates elliptic-curve keys and signs local certificates through OpenSSL.

Observed

Primary language
TypeScript
Install surface
npm package, installable globally or as a project development dependency
Interfaces
Command-line tool and ESM library with TypeScript declarations
Runtime requirements
Node.js 24 or newer; repository tooling uses pnpm 11
Platform support
Certificate trust handling is documented for macOS, Windows, WSL, and several Linux families
Network protocols
Reverse proxy supports HTTPS, HTTP/2, HTTP/1.1 fallback, and WebSockets
Repository structure
Private pnpm and Turborepo monorepo containing the portless package

Read from README.md, package.json, packages/portless/tsup.config.ts, packages/portless/src/cli.ts, packages/portless/src/auto.ts, packages/portless/src/mdns.ts, packages/portless/src/index.ts, packages/portless/src/certs.ts, packages/portless/src/fonts.ts, packages/portless/src/hosts.ts, packages/portless/src/ngrok.ts, packages/portless/src/pages.ts, packages/portless/src/proxy.ts.

What it can do

  • Replace port numbers with named localhost URLs

    Port number (e.g., 3000)Named .localhost URL (e.g., https://myapp.localhost)

  • Run reverse proxy for local development

    Local development server and desired nameProxied connection between named URL and port

  • Generate HTTPS certificates for localhost URLs

    Named .localhost domainSSL/TLS certificate for secure local development

  • Map subdomains to different services

    Subdomain configuration and target portsSubdomain routing (e.g., api.myapp.localhost, web.myapp.localhost)

  • Support git worktree-based development

    Git worktree structure and port assignmentsWorktree-specific named URLs for branch isolation

Tags

localhostdevelopmentproxyclihttpsportslocal-serverreverse-proxy

Tech Stack

Node.js

Media

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.