33 puntos por xguru 2026-03-02 | 7 comentarios | Compartir por WhatsApp
  • Utilidad de código abierto de Vercel Labs que resuelve los conflictos de puertos y el dolor de tener que recordar qué puerto usaste al desarrollar en local
  • Asigna a cada servidor de desarrollo un subdominio app.localhost único, ofreciendo un esquema de URL reconocible tanto para personas como para agentes de IA
    Si lo ejecutas con next dev, tendrás http://localhost:3000 y por lo tanto debes recordar el 3000, pero
    si ejecutas portless myapp next dev, puedes acceder con el formato http://myapp.localhost:1355
    Si lo ejecutas como portless api.myapp pnpm start, también admite acceso por subdominios en http://api.myapp.localhost:1355
  • Funciona con una arquitectura basada en proxy, donde portless proxy enruta centralmente las solicitudes
    • Al iniciar una app, el proxy se arranca automáticamente y cada app recibe un puerto aleatorio (4000–4999)
    • La mayoría de los frameworks (Next.js, Express, Nuxt, etc.) reconocen automáticamente la variable de entorno PORT
    • En algunos frameworks como Vite y Astro, asegura la compatibilidad con una función de inyección automática de flags
  • Implementa comunicación local rápida y segura con soporte para HTTP/2 y HTTPS
    • Los navegadores limitan HTTP/1.1 a 6 conexiones por host
      • Esto degrada el rendimiento de servidores de desarrollo como Vite/Nuxt, que sirven muchos archivos sin comprimir
      • HTTP/2 multiplexa todas las solicitudes sobre una sola conexión
    • Automatiza la generación de certificados propios y su registro en el almacén de confianza del sistema
    • También se pueden aplicar certificados personalizados con las opciones --cert y --key
  • Ofrece una interfaz CLI centrada en comandos
    • portless <name> <cmd> : ejecuta una app con el nombre indicado
    • portless list : muestra la lista de rutas activas
    • portless proxy start/stop : controla el proxy
    • Se puede omitir el proxy con la variable de entorno PORTLESS=0
  • Guarda información de rutas y PID mediante un directorio de gestión de estado
    • En modo usuario normal usa ~/.portless, y en modo root usa /tmp/portless
    • La ruta se puede redefinir con PORTLESS_STATE_DIR
  • Al configurar un proxy de API en Vite, webpack-dev-server y similares, es necesario reescribir el encabezado Host
    • Si la configuración es incorrecta, indica el problema con una respuesta 508 Loop Detected
  • Compatible con Node.js 20 o superior y entornos macOS y Linux
  • Estructura de monorepo basada en pnpm + Turborepo
  • Licencia Apache-2.0, base de código en TypeScript (aprox. 74%)

7 comentarios

 
xguru 2026-03-05

Se actualizó para admitir worktrees

https://github.com/vercel-labs/portless/releases/tag/v0.5.2

Ahora detecta automáticamente el worktree y agrega el nombre de la rama delante del host

 
ragingwind 2026-03-02

No lo uso porque no encaja bien con el árbol de trabajo del mismo proyecto.

 
ndrgrd 2026-03-02

Pensé que asignaba automáticamente, pero parece que solo se registra manualmente.
Estoy usando Caddy, así que no veo una razón para cambiarme a esto.

 
ksc2601 2026-03-02

Ya lo estaba haciendo con docker + traefik + mkcert, pero me parece que usar eso sería más cómodo.

 
bytecakelake 2026-03-02

Es un artículo útil.

 
xguru 2026-03-02

¿Ahora por fin le decimos adiós al error EADDRINUSE?

Últimamente, como uno anda desarrollando de todo un poco con agentes y levantando cosas por todos lados, terminan chocando entre ellos y se arma un caos jaja

 
xguru 2026-03-02

Como salió el tema en X, dicen que si lo usas en Docker y le pones a la fuerza el PID del daemon de Docker, eso también funciona.

https://github.com/vercel-labs/portless/issues/61