portless

Replace numeric localhost ports with stable named .localhost URLs for dev servers.

Updated Feb 12, 2026
One-click install
npx skills add https://github.com/mynameistito/opencode-config --skill portless-mynameistito
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: portless
Source: https://github.com/mynameistito/opencode-config/tree/main/skills/portless
Command: npx skills add https://github.com/mynameistito/opencode-config --skill portless-mynameistito

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill solves common local development pain points caused by port-based URLs: port conflicts (EADDRINUSE) when multiple projects use the same default port, the need to memorize which service runs on which port, stale browser tabs showing the wrong app after restarting a server on a reused port, scaled issues in monorepos with multiple services, AI agents guessing or hardcoding incorrect ports, cookie and localStorage clashes across apps on localhost, broken hardcoded ports in CORS allowlists, OAuth redirects, and .env files, the hassle of sharing URLs with teammates, and useless mixed browser history for unrelated localhost projects.

Core Features & Use Cases

  • Stable named .localhost URLs: Replace port numbers with memorable, consistent URLs like http://myapp.localhost instead of http://localhost:3000, eliminating port guesswork and conflicts.
  • Multi-service and worktree support: Assign unique named URLs to multiple services in a monorepo, with automatic subdomain prefixes for git worktree branches so each worktree gets a distinct address without extra configuration.
  • Framework and browser compatibility: Auto-injects correct port flags for frameworks that ignore the PORT environment variable (Vite, Astro, React Router, etc.), supports HTTP/2 and HTTPS with auto-generated local CA, and syncs /etc/hosts to fix Safari .localhost subdomain resolution issues.
  • Use Case: For a team working on a monorepo with a Next.js frontend, Express API, and documentation site, use portless to assign each service a unique named URL, so team members never have to ask which port a service runs on, and AI agents reliably hit the correct endpoint when testing or debugging.

Quick Start

Use the portless skill to set up stable named .localhost URLs for your local development servers, eliminating port conflicts and making service access consistent for your team and AI tools.

Frequently Asked Questions about portless

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I fix EADDRINUSE port conflicts when running multiple local dev servers?

To resolve EADDRINUSE port conflicts, replace numeric localhost ports with stable named .localhost addresses, assigning each local development server a unique URL to prevent collisions and eliminate port guesswork.

How do I manage multiple local development servers in a monorepo without memorizing ports?

Managing multiple monorepo services without memorizing ports involves assigning stable named .localhost URLs to each service, providing team members and AI agents with consistent, predictable local endpoints across all projects.

Can I use stable local dev URLs with frontend frameworks like Vite or Astro?

Yes, stable local dev URLs work with frontend frameworks like Vite and Astro by automatically injecting the correct port flags for servers that ignore the PORT environment variable, requiring no project code modifications.

Why do Safari subdomains fail to resolve for .localhost addresses?

Safari subdomains fail to resolve for .localhost addresses due to browser-specific DNS handling, which can be fixed by automatically syncing the /etc/hosts file to ensure correct local domain resolution.

Do I need to modify my project code to set up local HTTPS for development?

You do not need to modify project code to set up local HTTPS; the system automatically generates a local CA to provide HTTP/2 and HTTPS support for your named .localhost development URLs.

How do I prevent cookie and localStorage clashes across different localhost apps?

To prevent cookie and localStorage clashes across different localhost apps, assign each application a unique named .localhost URL, isolating browser storage and preventing stale tabs or mixed browser history.