Product · Routing

Named URLs by branch.

Every worktree, service, and user gets a stable subdomain of the shape <branch>.<service>.<user>.remoco.dev. Internal .localhost matches the external shape exactly. Copy-paste friendly across Slack, PRs, and Linear.

The URL shape

Remoco normalizes all dev URLs to a four-part hostname. The order is deliberate — most-specific on the left.

<branch>.<service>.<user>.remoco.dev

# examples
main.web.wiley.remoco.dev             # wiley's main worktree, web service
pr-42.api.luke.remoco.dev             # luke's pr-42 worktree, api service
hero-redesign.docs.sara.remoco.dev    # sara's hero-redesign branch, docs service

Internal mirror

Swap .remoco.dev for .localhost and the same hostname routes internally via portless. That means:

No mental translation. The overlay, the debugger, your browser history, and Slack links all use the same shape.

How it works

Each user has a Cloudflare named tunnel with a wildcard DNS record *.<user>.remoco.dev. Cloudflared rewrites Host: before forwarding to localhost:8081, where the injector proxies through portless. Portless matches on Host: header to route to the right container port.

Cloudflare Pro Total TLS covers the nested wildcard — free-tier TLS only covers one level.

Publishing

$ remoco expose main.web.wiley --access=public
# appends ingress rule, adds DNS, prints URL
# live at https://main.web.wiley.remoco.dev

$ remoco hide main.web.wiley
# removes ingress + Access app + DNS record

Who controls the namespace

Org-scoped. Enterprise tenants get a .<org>.remoco.dev zone with all users nested inside it. Collab friction: zero. Custom domains ship in v0.3.

← Cloud workstations Access that just works →