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:
portslugordomainaccess
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.jsonnear 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.apphostname is unavailable - Inspect local tunnels with
tt status, and discover recent sessions across machines withtt list