Skip to content

FAQ

Why .localhost instead of .test or /etc/hosts entries?

Section titled “Why .localhost instead of .test or /etc/hosts entries?”

.localhost is reserved by RFC 6761, and browsers and resolvers short-circuit *.localhost to 127.0.0.1 automatically. That means no DNS records, no /etc/hosts editing, and no dnsmasq; any *.localhost name works. .test would require local DNS plumbing, and hosts-file entries have to be maintained by hand per name.

Because production is HTTPS. Secure cookies, SameSite=None, service workers, and SDKs that reject plain-http origins all behave differently over HTTPS, so testing on http://localhost:3000 hides problems until deploy. routeup serves real, trusted HTTPS locally so those behaviors show up while you develop.

routeup has no telemetry. Local routing makes no outbound connection. Exposure connects only to the routeup server you select, and routeup update commands contact GitHub to check releases.

Can I use a custom domain instead of routeup.dev?

Section titled “Can I use a custom domain instead of routeup.dev?”

Yes. The server’s public suffix is configurable, run your own server with --domain your.domain and your own DNS and TLS. The hosted routeup.dev is just one deployment of the same binary.

Not for local use. routeup setup plus routeup serve gives you https://<name>.localhost with no server contact. A token is only needed for reusable, named public routes. A server with a public namespace enabled can also hand out token-less, ephemeral public URLs.

For a reusable URL on the hosted service, request a token.

What’s the difference between serve --expose and expose?

Section titled “What’s the difference between serve --expose and expose?”

routeup serve --expose first registers and holds a local *.localhost route, then exposes the same targets publicly.

Standalone routeup expose reuses a matching active route’s targets when one exists. Otherwise it resolves targets from flags, environment, or config and opens a public-only exposure without registering a local route.

A publicly-trusted wildcard certificate (*.<base>) covers exactly one label, so every public host is one label under a namespace base. Locally any depth works. When exposing a dotted route such as api.example-app, routeup normalizes it to public label api-example-app. See Routes.

What happens to exposed routes when my laptop sleeps?

Section titled “What happens to exposed routes when my laptop sleeps?”

The outbound tunnel drops. The server holds a token-backed claim for a 30-second grace window while the client reconnects with backoff. If it resumes within that window, the same name is kept. Public-namespace claims have no grace window and are released immediately.

macOS and Linux (arm64 and amd64) for v1. Windows is not supported yet.