Skip to content
routeup

Exposing publicly

Public exposure sends requests through a routeup server and back to your local agent over an outbound tunnel. Your app still listens only on a local port.

You need a public-server control URL. For the hosted service, use https://edge.routeup.dev. You can start immediately with a temporary URL under try.routeup.dev. For a reusable named URL, request a hosted token.

The named examples below assume a token for *.team.routeup.dev, which grants URLs such as https://example-app.team.routeup.dev. A public address is reachable only while its tunnel is connected.

Save the hosted server during setup. Add a token when you have one:

terminal
routeup setup --server https://edge.routeup.dev
routeup setup --server https://edge.routeup.dev --token sk_routeup_xxx

Or pass them per command:

terminal
routeup serve example-app --port 8080 --server https://edge.routeup.dev --token sk_routeup_xxx --expose
terminal
routeup serve example-app --port 8080 --expose

The command prints the local route, the public URL, the exposed path scope, and the resolved targets. It holds both the local route and public tunnel until you press Ctrl-C.

terminal
route: example-app
local: https://example-app.localhost
public: https://example-app.team.routeup.dev
expose: all paths
targets:
/ http://localhost:8080
requests: live
press Ctrl-C to stop

Local route names may be dotted, such as api.example-app. Public hosts must be one label under their namespace, so routeup normalizes dots to hyphens when exposing: local route api.example-app becomes public label api-example-app.

Do not include https:// or the public suffix in the route name. Pass example-app, not https://example-app.routeup.dev.

--random generates a random route name. Without a token, a server’s public namespace makes that claim session-only:

terminal
routeup serve --random --port 8080 --server https://edge.routeup.dev --expose

On the hosted server, random token-less names are under try.routeup.dev:

terminal
route: happy-fox
local: https://happy-fox.localhost
public: https://happy-fox.try.routeup.dev
expose: all paths
targets:
/ http://localhost:8080
requests: live
press Ctrl-C to stop

By default, public exposure forwards every path on the route. To expose only a webhook prefix, set expose.paths in project config:

routeup.json
{
"name": "example-app",
"port": 8080,
"expose": {
"paths": ["/api/webhooks/*"]
}
}

Then run:

terminal
routeup serve --expose

Requests to https://example-app.team.routeup.dev/api/webhooks/... are public; other paths stay local-only.

When path limits are active, routeup rejects dot segments, backslashes, and encoded separators rather than risk an upstream framework normalizing a request outside the allowed prefix.