A registration token is minted at a scope and serves only repositories inside it, so serving both an organization and a user account from one machine takes two registrations. There was no way to express that: one invocation owned ~/runners, and a second would have overwritten the first. The obstacle was that the label did too much. It named the runs-on label AND the compose project, the container names and the volumes - and two groups on one host usually want the SAME label, since a job from either scope should reach a runner. Sharing the label was fine; sharing an identity meant the second group replacing the first. So identity is now --name, separate from --label. It scopes the directory, the compose project, the containers, the volumes and the runner names in the forge; the label scopes nothing and is free to be shared. --name defaults to the label, so a host with one group needs no new argument and gets what it got before. A name containing a slash or a space is refused rather than producing a directory or a compose project that does not mean what it says. Three tests: two groups sharing a label collide nowhere and appear in nothing of each other's; the default keeps a single group working without --name; and unusable names are refused. Also rendered two groups end to end and confirmed separate projects, separate container names and two 0600 token files. 79 ok, 0 failed.