Create FasterCreate Faster

Portless

Portless replaces port numbers with stable, named .localhost URLs for local development.

→ Portless Documentation

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:

ScriptBeforeAfter
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.

  • dev is wrapped in place — portless auto-detects the domain from the project context
  • start is left untouched (production use), a separate start:portless script is added for local testing
  • --port flags are stripped automatically since portless manages port assignment via the PORT environment variable

Environment variables:

When portless is selected, the {{appUrl}} placeholder in .env.example resolves to the portless domain:

ContextURL
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:

  • portless is added as a devDependency to the root and each app's package.json (so the binary is available on each workspace's PATH)
  • Each app gets its own portless-wrapped dev script using portless run auto-detection

On this page