Deploy Lander with Jamf Pro
This guide rolls Lander out to a managed macOS fleet with Jamf Pro. As with any MDM, you ship a signed package, inject the control-plane settings, and run the service install. See Intune and Kandji for the equivalents.
Overview
Section titled “Overview”flowchart LR Pkg["Signed .pkg"] --> Jamf["Jamf Pro\nPackages"] Profile["Config profile\n(env values)"] --> Jamf Script["Post-install script\nlander service install"] --> Policy Jamf --> Policy["Policy\nscoped to a smart group"] Policy --> Devices["Managed Macs"] Devices --> Fleet["Registers in fleet"]
1. Build and upload the package
Section titled “1. Build and upload the package”Build a signed, notarized .pkg that installs Lander to /usr/local/bin/lander (see the Intune guide for the pkgbuild/productsign steps). Then:
- Upload the
.pkgto your distribution point under Settings → Computer Management → Packages (or via Jamf Admin).
2. Deliver control-plane settings
Section titled “2. Deliver control-plane settings”Lander needs LANDER_ENV_MANAGER_URL. With Jamf you have two clean options:
- Configuration profile — create a custom profile (Computers → Configuration Profiles → Application & Custom Settings) that writes a managed plist your install script reads, or that defines a LaunchAgent with
EnvironmentVariables. Scope it to the same group as the policy. - Script parameters — pass the value as a Jamf script parameter (
$4) so you can vary it per scope without editing the script.
3. Add the install script
Section titled “3. Add the install script”Add a script (Settings → Computer Management → Scripts) that writes the LaunchAgent and installs the service, reading the env values from parameters:
#!/bin/bashset -euo pipefail
LANDER_ENV_MANAGER_URL="${4:?Connector URL required}"CONSOLE_USER=$(stat -f%Su /dev/console)UID_NUM=$(id -u "$CONSOLE_USER")
launchctl asuser "$UID_NUM" sudo -u "$CONSOLE_USER" \ env LANDER_ENV_MANAGER_URL="$LANDER_ENV_MANAGER_URL" \ /usr/local/bin/lander service install --port 80824. Create the policy
Section titled “4. Create the policy”Create a policy (Computers → Policies) that:
- Installs the Lander package.
- Runs the install script, passing the Connector URL as a parameter.
- Is scoped to a smart computer group (for example, “Macs in Engineering”) and triggered at enrollment and/or recurring check-in.
If you used a configuration profile for the env values, scope that profile to the same group.
5. Verify the rollout
Section titled “5. Verify the rollout”- In Jamf, the policy logs show the package installed and the script exited
0. - On a sample Mac:
lander service statusis running andlander device statusshows adeviceId. NodeviceIdusually means nobody has authenticated yet — checklander auth status. - In the dashboard, devices appear under Fleet → Devices (
/admin/fleet/devices) as their users authenticate, each owned by the account that did.
Updating and removing
Section titled “Updating and removing”- Update — upload a new package version and let the policy re-run; launchd
KeepAliverestarts on the new binary. - Remove — add a policy that runs
lander service uninstall, scoped to the devices you’re decommissioning.
Next: see the data flowing in Monitor Agents & MCPs.