Using rdev

Showing work to a client

Showing work in progress is usually a chore: you start a tunnel such as ngrok, expose a port, send a random address and hope your laptop stays awake. With rdev your projects already run on your remote server, around the clock, at https://<name>.dev.test. Anyone on your tailnet opens that address and sees the project as it is right now, including what your AI agent changed a minute ago.

Who can open your sites

Who How they open https://shop.dev.test What they need
You, on a connected laptop Directly Nothing more; rdev laptop connect set it up
A teammate or a client you invite to your tailnet Directly, live, whenever they like Tailscale on their device, the dev.test nameserver and, to avoid a warning, your certificate
Someone you do not want on your tailnet Through a temporary preview address with a password Only a browser (Sharing a preview)

Nothing goes through rdev.cloud: your visitors reach your server over your own Tailscale network.

Invite a client to follow along

Do these once:

  1. Invite them. In the Tailscale admin console, choose Invite users and send the invitation to your client's email. They install Tailscale on their computer or phone and accept it. Check how many users your Tailscale plan allows.

  2. Send dev.test to your server. In the admin console, go to DNS > Nameservers > Add nameserver > Custom, enter your server's tailnet IP address (shown by rdev host status and in the Tailscale admin console) and restrict it to the domain dev.test. It applies to every device on your tailnet, so you only add it once.

  3. Limit what they can reach. By default, a new user can reach every device on your tailnet. Allow your client only the web and name lookups on your server in the access controls, for example:

    {
      "groups": { "group:team": ["[email protected]"] },
      "acls": [
        { "action": "accept", "src": ["group:team"], "dst": ["*:*"] },
        { "action": "accept", "src": ["[email protected]"], "dst": ["100.101.102.103:443,53"] }
      ]
    }
    

    Put yourself and your teammates in group:team, your client's email in the second rule and your server's tailnet IP as the address. This replaces the default "everyone reaches everything" rule, so keep any other rules you already have.

  4. Avoid the certificate warning (optional). Your environment signs its .dev.test sites with its own certificate. Send your client the file ~/.config/rdev/ca.pem from your laptop and ask them to trust it (macOS: Keychain Access; Windows: Trusted Root Certification Authorities; iOS and Android: install it as a profile or certificate). Without it, the browser shows a warning that they can click through. They can remove the certificate when the project is over.

Then send them the address, such as https://shop.dev.test. They see the site as it is on your server, and every refresh shows the latest state, so they can follow the work step by step while you or your agent build it.

Good to know

  • Your client sees your development site with its data. Use test data, not production data.
  • They see changes as they happen, including half-finished ones. When you want to show only a finished state, use a preview or tell them when to look.
  • To end access, remove the user in the Tailscale admin console. A preview link stops by itself after the time you set.
  • Team plans can give team members their own environments instead; see Teams.