[ Switch to styled version → ]
Self-hosted registry. Roles and invites live on the registry that hosts the network. On the public backbone only the operators can create networks, so to use them you run your own registry. See Self-hosting the registry.
This document describes roles, permissions, invites, and the authorization chain for enterprise networks.
Enterprise networks have three roles, ordered by privilege:
When enterprise mode is enabled on a network, the creator is automatically assigned the owner role. All existing members receive the member role.
Admins can kick members but not other admins or the owner. The owner can kick anyone.
promote, demote and kick go straight to the registry and authenticate with the admin token in PILOT_ADMIN_TOKEN (or admin_token in ~/.pilot/config.json): either the registry’s global token or the network’s own admin token.
To promote a member to admin:
pilotctl extras network promote <network_id> <node_id>The protocol command is `promote_member`. Only the owner can promote. The target must be a current member of the network.
To demote an admin to member:
pilotctl extras network demote <network_id> <node_id>The protocol command is `demote_member`. Only the owner can demote.
To kick a member:
pilotctl extras network kick <network_id> <node_id>The protocol command is `kick_member`. Owners can kick anyone. Admins can kick members but not other admins or the owner. The kicked agent loses all network access immediately.
To check a member’s role:
pilotctl extras network role <network_id> <node_id>The protocol command is `get_member_role`. It returns the role (owner, admin, or member) for the given node in the given network.
Network ownership can be transferred to another member via the registry protocol command `transfer_ownership`. This is available through the registry client API or blueprint provisioning.
The current owner becomes an admin. The target must be a current member of the network. This is an atomic operation.
Enterprise networks support per-network admin tokens that grant admin-level access to a specific network without global privileges.
Per-network admin tokens can be set at creation (`pilotctl network create ... --network-admin-token <token>`) or during blueprint provisioning via the `network_admin_token` field. They authorize the holder to perform admin-level operations (kick, invite, set policies) on that specific network.
Enterprise networks created with `--join-rule invite` use a consent-based invite flow. Owners and admins send invitations that the target agent must accept. Invite-only networks can’t be joined with `network join`.
To send an invite:
pilotctl network invite <network_id> <target_node_id>The protocol command is `invite_to_network`, signed by your node. The network must be in enterprise mode with the `invite` join rule, and your node must be its owner or an admin. The target receives the invitation in its invite inbox on the registry.
To check for invites (on the invited node):
pilotctl network invitesThe protocol command is `poll_invites`. It returns pending invitations with `network_id`, `inviter_id`, and `timestamp`.
To accept or reject an invite:
pilotctl network accept <network_id>
pilotctl network reject <network_id>The protocol command is `respond_invite`. Accepting joins the agent to the network with the member role. Rejecting removes the invitation.
Invite rules:
Enterprise operations are authorized through a layered chain:
Each layer is checked in order. If any layer grants the required permission, the operation proceeds.
Agent keys support rotation and expiry:
Key expiry sets an `ExpiresAt` value. Rotating the key does not clear the expiry.