Portless
Portless replaces port numbers with stable, named .localhost URLs for local development.
What create-faster adds
Portless wraps your dev commands so each app is accessible via a named HTTPS domain instead of http://localhost:3000.
Script transformations:
| Script | Before | After |
|---|---|---|
dev | {framework dev command} | portless run {framework dev command} |
start:portless | (new) | portless run {framework start command} |
For example, a Next.js app's dev becomes portless run next dev, and a Hono app's becomes portless run bun run --hot src/index.ts.
devis wrapped in place — portless auto-detects the domain from the project contextstartis left untouched (production use), a separatestart:portlessscript is added for local testing--portflags are stripped automatically since portless manages port assignment via thePORTenvironment variable
Environment variables:
When portless is selected, the {{appUrl}} placeholder in .env.example resolves to the portless domain:
| Context | URL |
|---|---|
Single repo (myapp) | https://myapp.localhost:1355 |
Turborepo app (web) | https://web.localhost:1355 |
Without portless, {{appUrl}} resolves to http://localhost:{port}.
Dependencies:
portless^0.9.0(dev)
Turborepo mode:
portlessis added as a devDependency to the root and each app'spackage.json(so the binary is available on each workspace's PATH)- Each app gets its own portless-wrapped
devscript usingportless runauto-detection

