Skip to content
TurbotunnelTurbotunnel
Esc
navigateopen⌘Jpreview
On this page

Manage monorepo projects

Give monorepo apps stable ports, hostnames, and access policies.

Use turbotunnel.json when several apps in one repository need their own public tunnels.

Define named projects

Add one entry per app:

{
  "access": { "type": "password" },
  "projects": {
    "dashboard": {
      "port": 3000,
      "slug": "dashboard"
    },
    "api": {
      "port": 4000,
      "slug": "api",
      "access": { "type": "public" }
    },
    "docs": {
      "port": 5173,
      "domain": "docs.example.com"
    }
  }
}

Start one project and its exact child command:

tt dev dashboard -- pnpm --filter dashboard dev

Expose an already-running project:

tt http api

With one configured project, Turbotunnel selects it automatically. With multiple projects, interactive terminals present a selector. Non-interactive commands must name the project.

What project configuration includes

Each project may set:

  • port
  • slug or domain
  • access

Top-level access is the default for named projects that omit their own policy.

Project configuration does not define commands, working directories, environment variables, package-manager behavior, or framework settings. Pass the exact command after --.

Run monorepo tunnels day to day

Keep these habits when you work across packages:

  • Place turbotunnel.json near the repository root; Turbotunnel searches upward from the current directory and uses the nearest file
  • Override project settings for a single run with CLI flags
  • Confirm the printed public URL if a managed vercel.app hostname is unavailable
  • Inspect local tunnels with tt status, and discover recent sessions across machines with tt list

Was this page helpful?