Skip to content

Concepts

Roles & permissions

jalth uses Cloudflare Access Groups for role management. Admin is tied to your identity (email), not your device.

Full control over the mesh:

CommandDescription
jalth destroyTear down the entire mesh
jalth upgradeUpgrade the Registry Worker
jalth devices removeRemove other devices
jalth auth-key create/list/revokeManage auth keys
jalth role set/lsManage roles
jalth domain set/removeManage mesh domain

Delegated network management:

CommandDescription
jalth route add/removeManage egress routes
jalth auth-key create/list/revokeManage headless enrollment

Admins already satisfy operator checks.

Any enrolled device:

CommandDescription
jalth serve/stopExpose/unexpose own services
jalth sshSSH into devices
jalth leaveRemove self from mesh
jalth status/devices/pingRead-only mesh state

During jalth init, three Access Groups are created:

  • jalth-members — who can enroll
  • jalth-admins — who has admin powers
  • jalth-operators — who can manage routes
Terminal window
jalth role set alice@team.com admin
jalth role set bob@team.com operator
jalth role ls

Headless devices cannot hold admin role. They can satisfy operator checks when enrolled through a non-revoked auth key scoped to operators.

Terminal window
jalth auth-key create --name ci-runner --identity ops@team.com --group operators

If all admin devices are lost, the Cloudflare API token holder can re-run jalth init on a new device. Step 3 reconciles the existing mesh and elects the new device as admin.

jalth leave refuses if you’re the last admin-capable device. Promote another admin first, or run jalth destroy.