33 points par xguru 2026-03-02 | 7 commentaires | Partager sur WhatsApp
  • Utilitaire open source de Vercel Labs qui résout les conflits de ports en développement local et la corvée de devoir se souvenir du port utilisé
  • Attribue à chaque serveur de développement un sous-domaine app.localhost unique, offrant un système d’URL compréhensible à la fois par les humains et les agents IA
    Avec next dev, on utilise http://localhost:3000 et il faut donc se souvenir de 3000
    Mais avec portless myapp next dev, on peut accéder à l’application via http://myapp.localhost:1355
    En l’exécutant comme portless api.myapp pnpm start, l’accès par sous-domaine est aussi pris en charge via http://api.myapp.localhost:1355
  • Fonctionne avec une architecture basée sur un proxy, où portless proxy route centralement les requêtes
    • Au lancement d’une app, le proxy démarre automatiquement, et chaque app se voit attribuer un port aléatoire (4000–4999)
    • La plupart des frameworks (Next.js, Express, Nuxt, etc.) reconnaissent automatiquement la variable d’environnement PORT
    • Pour certains frameworks comme Vite et Astro, la compatibilité est assurée grâce à une injection automatique de flags
  • Prend en charge HTTP/2 et HTTPS pour des chargements de page plus rapides et des communications locales sécurisées
    • Les navigateurs limitent HTTP/1.1 à 6 connexions par hôte
      • Ce qui dégrade les performances des serveurs de développement qui servent de nombreux fichiers non bundlés, comme Vite/Nuxt
      • HTTP/2 multiplexe toutes les requêtes sur une seule connexion
    • Génération automatique de certificats et enregistrement dans le magasin de confiance du système
    • Des certificats personnalisés peuvent aussi être appliqués avec les options --cert et --key
  • Fournit une interface CLI centrée sur les commandes
    • portless <name> <cmd> : lance une app avec le nom indiqué
    • portless list : affiche la liste des routes actives
    • portless proxy start/stop : contrôle le proxy
    • Il est possible de contourner le proxy avec la variable d’environnement PORTLESS=0
  • Stocke les informations de routes et de PID via un répertoire de gestion d’état
    • En mode utilisateur normal, utilise ~/.portless, et en mode root, /tmp/portless
    • Le chemin peut être redéfini avec PORTLESS_STATE_DIR
  • Lors de la configuration d’un proxy API avec Vite, webpack-dev-server etc., il faut réécrire l’en-tête Host
    • En cas de mauvaise configuration, une réponse 508 Loop Detected indique le problème
  • Compatible avec Node.js 20 ou supérieur, sur macOS et Linux
  • Monorepo basé sur pnpm + Turborepo
  • Licence Apache-2.0, codebase TypeScript (environ 74 %)

7 commentaires

 
xguru 2026-03-05

Mise à jour avec prise en charge des worktrees

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

Désormais, l’outil détecte automatiquement les worktrees et ajoute le nom de la branche devant l’hôte

 
ragingwind 2026-03-02

Comme cela ne s’accorde pas très bien avec les worktrees d’un même projet, je ne l’utilise pas.

 
ndrgrd 2026-03-02

Je pensais que l’attribution se faisait automatiquement, mais en fait il faut simplement les enregistrer manuellement.
J’utilise Caddy, donc je ne vois pas vraiment de raison de passer à ça.

 
ksc2601 2026-03-02

J’utilisais déjà ça avec docker + traefik + mkcert, mais utiliser ça a l’air plus pratique.

 
bytecakelake 2026-03-02

Article utile.

 
xguru 2026-03-02

On peut enfin dire adieu à l’erreur EADDRINUSE ?
En ce moment, comme on développe toutes sortes de trucs via des agents et qu’on lance un peu tout n’importe comment, ça finit par se rentrer dedans entre eux et c’est vite le bazar haha

 
xguru 2026-03-02

Comme cela a été évoqué sur X, apparemment si vous l’utilisez avec Docker, cela fonctionne aussi à condition de fournir de force le PID du démon Docker.

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