Sharing & access
Share a workstation or secret with a teammate, revoke access, and report effective access.
Workstations and secrets are personal: you own what you create, and peers can
get/list your objects but not update, delete, SSH into, or read the values
of them. To let someone else in, you create a Grant. The
per-object share/unshare verbs are the everyday, self-service way to do that;
the --admin flag is the elevated path for namespace admins acting on workstations
they don’t own. It does not extend to secrets you do not own; see the note below.
rl workstation share <name>
Grant one or more subjects SSH access to a workstation you own. This creates a
Grant object; the workstation’s authorized keys are recomputed to include the
beneficiaries’ node keys.
rl workstation share my-box --with user:alice@acme.com
rl workstation share my-box --with user:alice@acme.com --with sa:dev/ci
rl workstation share --all --with user:alice@acme.com # every workstation you own| Flag | Description |
|---|---|
--with <subject> | Beneficiary subject (e.g. user:alice@acme.com, sa:dev/builder), repeatable. |
--all | Target every workstation in the namespace (matchName: *). |
--admin | Elevated path: grant on any subject’s workstation (gated by RBAC; stamps an admin-scope Grant). |
--allow-missing | Create the Grant even if the target does not exist yet (pre-provisioning): skips only the existence check. |
--dry-run | Print the generated Grant instead of applying it. |
-o, --output <format> | With --dry-run, output format (yaml). |
-n, --namespace <ns> | Namespace. |
--as <subject> | Impersonate a subject. |
--home <dir> | Data directory. |
A share gives the person SSH access, which covers rl shell, rl tmux and plain ssh.
It does not forward their own SSH keys into the
workstation.
The workstation’s ports reach their device only if you set
defaultLocalBinding.scope: accessors in its
configuration. Even then,
the LocalBinding their device creates for it starts disabled, and nothing is forwarded
until they enable it. They run rl binding enable <workstation> -n <namespace> or press a on
the Bindings tab of the TUI. Until you set the scope, a LocalBinding on their device that
matches only shared workstations reports the reason SharedWorkstation.
A service on their device is never forwarded into a workstation shared with them.
rl secret share <name>
Grant subjects the access right on a secret you own: the right to read its
values and to admit objects that consume it.
rl secret share db --with user:alice@acme.com
rl secret share --all --with sa:dev/builderFlags are identical to workstation share (--with, --all, --admin,
--allow-missing, --dry-run, -o, -n, --as, --home), with one difference
that matters: --admin does not let you share a secret you do not own. Naming a
teammate’s is refused; --all is accepted and then covers only your own, as is
--allow-missing for a secret that does not exist yet.
rl workstation unshare / rl secret unshare
Revoke a share you created: deletes the matching Grant. Name the same
target and beneficiaries the share used. --admin deletes the admin-scope Grant.
rl workstation unshare my-box --with user:alice@acme.com
rl secret unshare db --with user:alice@acme.com| Flag | Description |
|---|---|
--with <subject> | Beneficiary the share named, repeatable. |
--all | The share targeted every object of the kind (matchName: *). |
--admin | Delete the admin-scope Grant. |
-n, --namespace <ns> | Namespace. |
--as <subject> | Impersonate a subject. |
--home <dir> | Data directory. |
rl workstation access / rl secret access
Report effective access: who can reach the resource and through which grant
(ownership vs. an explicit Grant). workstation access reports who can SSH to the
workstation; secret access reports who can read the secret’s value.
rl workstation access my-box
rl secret access db| Flag | Description |
|---|---|
-n, --namespace <ns> | Namespace. |
--as <subject> | Impersonate a subject. |
--home <dir> | Data directory. |
rl share show
List the shares in play: the ones you created (shared out) and the ones
provided to you (where you are a beneficiary). Optionally narrow to a single
kind (workstation or secret).
rl share show # everything: yours + provided to you
rl share show workstation # only workstation shares
rl share show --mine # only shares you created
rl share show --to-me # only shares provided to you
rl share show --enabled # only currently-enabled shares| Flag | Description |
|---|---|
--mine | Only Grants you created (shared out). |
--to-me | Only Grants provided to you (you are a beneficiary). |
--enabled | Only enabled shares. |
--disabled | Only disabled (paused) shares. |
-o, --output <format> | table (default) or json. |
-n, --namespace <ns> | Namespace. |
--as <subject> | Impersonate a subject. |
--home <dir> | Data directory. |
rl share disable / enable
Pause a share without deleting it, then resume it later. This flips the Grant’s
spec.enabled flag rather than removing it, so the beneficiary list and scope are
preserved. A disabled share grants nothing until re-enabled.
rl share disable workstation my-box --with user:alice@acme.com
rl share enable workstation my-box --with user:alice@acme.com
rl share disable secret db --with user:alice@acme.comEach takes a workstation or secret subcommand and names the same target and
beneficiaries the share used (--with, repeatable; --all for a matchName: *
share), plus the usual -n, --as, and --home.
owner scope vs. admin scope
--admin, share/unshare create owner-scoped grants. They light up a
target only while you still own it, and a Grant can never hand out more than you
could yourself. The --admin path creates admin-scoped grants and requires
namespace-admin (or broader) rights, but it widens SSH only: an admin-scoped
Grant reaches any workstation in the namespace, while on a secret it still covers
only secrets you own. rl secret share <name> --admin naming a teammate’s secret is
refused outright; a --all share is accepted and then quietly covers only your own,
as does --allow-missing for a secret a teammate has yet to create, or a Grant you
write by hand that selects by labels. The scope is set by the control plane from your
verified
rights, never trusted from the CLI. See
Access control.