Skip to content

Guides

Access control

jalth uses three independent access layers, each powered by a different Cloudflare product:

LayerControlsCF ProductExample
Mesh membershipWho can joinWARP enrollment policiesSSO login or auth key
Mesh managementWho can manageAccess GroupsOnly admins can destroy
Service accessWho can reach a URLAccess Apps (per service)--allow group:devs

These layers are independent. An external user can access a public service if they match --allow. A mesh member can reach any device at device.mesh:port without a service policy.

The jalth-members Access Group is the enrollment boundary.

Terminal window
jalth role set sarah@team.com member
jalth group add members --domain myteam.com
jalth role ls
jalth group remove members sarah@team.com
  • jalth destroy, jalth upgrade, jalth devices remove
  • jalth auth-key create/list/revoke
  • jalth role set/ls
  • jalth route add/remove
  • jalth auth-key create/list/revoke
  • jalth serve/stop on own device
  • jalth ssh, jalth leave
  • jalth status, jalth devices, jalth ping (read-only)
Terminal window
jalth role set alice@team.com admin
jalth role set bob@team.com operator

Set on jalth serve with --allow:

Terminal window
jalth serve api --port 3000 --allow email:alice@team.com
jalth serve grafana --port 3000 --allow group:engineers
jalth serve admin --port 8080 --allow ip:203.0.113.0/24

Supported allow types: email:, group:, ip:, country:.

Terminal window
jalth group create devs
jalth group add devs alice@team.com bob@team.com
jalth group members devs
jalth group delete devs
Terminal window
jalth auth-key create --name gpu-box --identity ops@team.com --group operators --reusable

The --identity flag assigns an email for role checks. No IdP verification — the auth key proves authorization.