Skip to content
slopscale
Esc
↑↓navigate↵open⌘Jpreview
On this page

Node sharing

Share one of your nodes with another user's devices without editing the policy, how autogroup:shared admits them, and sharing from the CLI or API.

A user can give another user’s personal devices access to one of their nodes without an administrator editing the policy, following Tailscale’s node sharing. A share is one way: the sharee’s devices may reach the shared node, the shared node gets no access back, and nothing else the owner has (other nodes, routes, tags) travels with it.

How a share takes effect

The policy decides what a share allows. The autogroup:shared source stands, for each destination node, for the personal devices of the users that node is shared with:

{
  "grants": [
    {
      "src": ["autogroup:shared"],
      "dst": ["autogroup:member"],
      "ip": ["*"]
    }
  ]
}

With this grant, every node that has been shared admits its sharees’ devices on every port. The destination is always narrowed to the shared node itself, so dst only says which shared nodes the rule covers (here: any personal device) and ip on which ports. autogroup:shared is valid as a source in ACLs, grants and SSH rules, not as a destination, not together with an autogroup:self destination and not in a via grant.

Without a policy every node already sees every other, and a policy that never names autogroup:shared ignores shares entirely.

A sharee’s device sees the shared node as a peer with the owner as its user and Sharer set to the owner, the way Tailscale marks nodes shared into a tailnet, so the client lists it under the sharing user. The shared node sees the sharee’s device as a peer but has no rule towards it.

Sharing a node

The owner of a node, or anyone holding the devices scope, shares it with a user by id:

$ slopscale nodes share --identifier 7 --user 3
$ slopscale nodes unshare --identifier 7 --user 3

The same operations are POST /api/v1/node/{id}/share with {"userId": "3"} and DELETE /api/v1/node/{id}/share/{userId}. A node’s sharedWith field lists the ids of the users it is shared with. Sharing a node with its owner is rejected, sharing it twice with the same user is a conflict, and deleting a user or a node removes its shares.

Last updated on September 27, 2026

Was this page helpful?