33 pontos por xguru 2026-03-02 | 7 comentários | Compartilhar no WhatsApp
  • Utilitário open source da Vercel Labs que resolve conflitos de porta e o incômodo de ter que lembrar qual porta foi usada no desenvolvimento local
  • Atribui a cada servidor de desenvolvimento um subdomínio app.localhost exclusivo, oferecendo um esquema de URLs compreensível tanto para pessoas quanto para agentes de IA
    Ao executar com next dev, você acessa em http://localhost:3000, então precisa lembrar a 3000
    Ao executar portless myapp next dev, é possível acessar no formato http://myapp.localhost:1355
    Ao executar algo como portless api.myapp pnpm start, também há suporte a acesso por subdomínio em http://api.myapp.localhost:1355
  • Funciona com uma arquitetura baseada em proxy, em que portless proxy roteia centralmente as requisições
    • Ao iniciar um app, o proxy é iniciado automaticamente, e cada app recebe uma porta aleatória (4000–4999)
    • A maioria dos frameworks (Next.js, Express, Nuxt etc.) reconhece automaticamente a variável de ambiente PORT
    • Em alguns frameworks, como Vite e Astro, a compatibilidade é garantida com injeção automática de flags
  • Suporte a HTTP/2 e HTTPS para implementar carregamento de páginas mais rápido e comunicação local segura
    • Os navegadores limitam HTTP/1.1 a 6 conexões por host
      • Isso reduz o desempenho de servidores de desenvolvimento como Vite/Nuxt, que servem vários arquivos descompactados
      • HTTP/2 multiplica todas as requisições em uma única conexão
    • Geração automática de certificados próprios e registro no armazenamento de confiança do sistema
    • Também é possível aplicar certificados personalizados com as opções --cert e --key
  • Fornece uma interface de CLI centrada em comandos
    • portless <name> <cmd> : executa o app com o nome especificado
    • portless list : mostra a lista de rotas ativas
    • portless proxy start/stop : controla o proxy
    • É possível executar ignorando o proxy com a variável de ambiente PORTLESS=0
  • Armazena informações de rotas e PID por meio de um diretório de gerenciamento de estado
    • No modo de usuário normal usa ~/.portless, e no modo root usa /tmp/portless
    • É possível redefinir o caminho com PORTLESS_STATE_DIR
  • Ao configurar proxy de API em Vite, webpack-dev-server etc., é necessário reescrever o cabeçalho Host
    • Em caso de configuração incorreta, o problema é indicado com a resposta 508 Loop Detected
  • Suporta Node.js 20 ou superior e ambientes macOS e Linux
  • Estrutura de monorepo baseada em pnpm + Turborepo
  • Licença Apache-2.0, codebase em TypeScript (cerca de 74%)

7 comentários

 
xguru 2026-03-05

Foi atualizado para dar suporte a worktree

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

Agora ele reconhece automaticamente a worktree e adiciona o nome da branch antes do host

 
ragingwind 2026-03-02

Não estou usando porque não combina bem com worktrees do mesmo projeto.

 
ndrgrd 2026-03-02

Achei que fazia a atribuição automaticamente, mas pelo visto é só um esquema de registrar manualmente.
Estou usando Caddy, então não vejo muito motivo para trocar por isso.

 
ksc2601 2026-03-02

Eu já estava fazendo isso com docker + traefik + mkcert, mas acho que usar isso aí vai ser mais prático.

 
bytecakelake 2026-03-02

Texto útil.

 
xguru 2026-03-02

Agora podemos dar adeus ao erro EADDRINUSE?

Hoje em dia, como a gente desenvolve de tudo um pouco usando agentes e fica subindo um monte de coisas, elas acabam entrando em conflito entre si e vira uma bagunça rs

 
xguru 2026-03-02

Como comentaram no X, aparentemente, se você estiver usando com Docker e informar à força o PID do daemon do Docker, isso também funciona.

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