Skip to content

Guides

Join a mesh

The mesh is closed by default — only explicitly added emails or auth keys can join.

An admin adds the person first:

Terminal window
jalth role set sarah@team.com member

Then the person runs:

Terminal window
jalth join https://jalth.myteam.workers.dev
$ jalth join https://jalth.myteam.workers.dev
? Device name: sarah-laptop
Opening browser for authentication...
✓ Authenticated as sarah@team.com
Enrolling device...
✓ WARP registered to team "myteam"
✓ Device registered as "sarah-laptop"
✓ CGNAT IP: 100.96.0.2

If the email is not in jalth-members, Cloudflare Access blocks enrollment before the Worker is reached.

An operator or admin creates a key:

Terminal window
jalth auth-key create homelab --reusable --expires-in 7d

The server joins without a browser:

Terminal window
jalth join https://jalth.myteam.workers.dev --auth-key jalth_auth_...access.S3cr3tTokenValue
FlagDescription
<name>Human-readable label
--reusableMultiple devices can use the same key
--expires-in <duration>Expiration (7d, 24h, 30d)
--tag <tag>Tag applied to joining devices
--identity <email>Email for role assignment (no IdP verification)
--group <group>Access Group to add identity to (requires --identity)
runcmd:
- curl -fsSL https://pkg.cloudflare.com/cloudflare-warp-install.sh | bash
- curl -fsSL https://jalth.vinaypuppal.com/install.sh | sh
- jalth join https://jalth.myteam.workers.dev --auth-key ${AUTH_KEY}

Pin the CLI version in automation instead of always taking latest.

Both init and join enroll the device in Cloudflare WARP. Include-mode split tunnel routes only mesh traffic through WARP — regular internet traffic is unaffected.

FlowEnvironmentEnrollment
Interactive joinBrowser availablewarp-cli registration new opens SSO
Auth key joinHeadlessMDM with service token creds, auto-enroll on restart

MDM file locations:

  • macOS: /Library/Application Support/Cloudflare/mdm.xml
  • Linux: /var/lib/cloudflare-warp/mdm.xml
PropertyDescription
Name3–30 chars, lowercase alphanumeric + hyphens
CGNAT IPStable 100.96.x.x address
Device tokenAuthenticates API calls to the Registry Worker
Roleadmin, operator, or member

Token expiry: SSO devices expire after 90 days of inactivity. Auth-key devices never expire.

Terminal window
jalth leave

Removes your device and all associated Cloudflare resources. Admins can remove others with jalth devices remove <name>.