로컬 개발 서버의 포트 번호를 잊고, 이름으로만 접속하는 방법
브라우저 주소창에 숫자 대신 앱 이름을 입력하고, 재시작 후에도 같은 주소로 접속할 수 있습니다. 로컬 리버스 프록시를 통해 각 개발 서버에 고유한 이름을 부여하는 도구입니다. 북마크, 쿠키, OAuth 리다이렉트, 그리고 AI 에이전트의 테스트 스크립트가 항상 올바른 앱으로 향하도록 유지합니다.
포트 충돌과 기억 부담을 없애는 구조
portless는 로컬 리버스 프록시를 실행하여 각 개발 서버에 이름을 부여합니다. 앱은 portless가 할당하는 4000~4999 사이의 무작위 포트에서 실행되며, 사용자는 https://<이름>.localhost 주소를 통해 접속합니다. 이 주소는 재시작해도 변하지 않아 북마크와 세션 상태가 유지됩니다. Vite, Astro, Angular, Expo, Wrangler처럼 PORT 환경 변수를 직접 읽지 않는 프레임워크의 경우, portless가 명령줄에 필요한 포트와 호스트 플래그를 자동으로 추가합니다.
HTTPS와 DNS를 자동으로 처리
첫 실행 시 portless는 로컬 인증 기관(CA)을 생성하고 시스템 신뢰 저장소에 추가합니다. 이 과정에서 sudo 권한이 필요할 수 있으며, --no-tls 옵션으로 평문 HTTP를 사용하거나 --unprivileged 모드로 sudo를 건너뛸 수 있습니다. 프록시는 기본적으로 127.0.0.1과 ::1에서만 리스닝하며, /etc/hosts 파일을 동기화하여 .test 같은 커스텀 TLD가 올바르게 해석되도록 합니다. 라우트 호스트명이 해석되지 않을 경우, portless hosts sync 명령을 실행하도록 경고합니다.
AI 에이전트와 협업하는 방식
portless는 AI 에이전트가 로컬 개발 환경을 제어할 수 있도록 MCP 서버를 제공합니다. portless mcp 명령을 실행하면 stdio를 통해 MCP 서버가 시작되며, 기본 core 프로필은 라우트 목록 조회, URL 검색, 정적 별칭 관리를 지원합니다. --tools all 옵션을 추가하면 프록시 제어와 진단 기능도 사용할 수 있습니다. 에이전트는 이 서버를 통해 개발 서버를 직접 시작하지 않으며, 셸에서 portless run <cmd>를 실행하여 앱을 구동합니다.
사용 전 확인해야 할 사항
portless는 Node.js 24 이상과 macOS, Linux, Windows에서 실행됩니다. 현재 1.0 이전 버전이므로 릴리스 간 상태 디렉터리 형식이 변경될 수 있으며, 이 경우 portless trust를 다시 실행해야 할 수 있습니다. 다른 기기에서 앱에 접근하거나 공유하려면 Tailscale, ngrok, Cloudflare quick tunnel CLI가 설치되어 있어야 합니다. URL이 로드되지 않을 때는 portless doctor 명령을 먼저 실행하여 프록시, 라우트, DNS, CA 신뢰 상태를 점검하고 수정 사항을 확인합니다.