Overview
Rippling IT with Device Management can deploy Beacon to managed Macs by uploading the signed endpoint package as a custom installer and assigning it to a Supergroup. Beacon’s package postinstall creates the system endpoint, configures supported local runtimes, and writes telemetry to local JSONL without requiring a hosted Beacon account or Rippling API credentials. Rippling provides the deployment and targeting layer:
Beacon remains local-first on the endpoint. The package does not call the
Rippling API, and normal hook execution does not depend on Rippling being
reachable.
Prerequisites
Before deployment:- Enroll target Macs in Rippling MDM and connect the Rippling Agent.
- Obtain the signed and notarized
BeaconEndpointAgent-<version>-arm64.pkg. The current endpoint package is for Apple Silicon Macs. - Confirm that the package contains
/opt/beacon/bin/vectorwhen the deployment will use GCS forwarding. - Create a pilot Supergroup that targets assigned Apple Silicon Macs and the employees who should receive Beacon.
- Verify in the pilot that Rippling custom Bash scripts run as
root. Beacon’s system install, LaunchDaemons, system logs, and forwarding configuration require root.
Package layout
The macOS package installs:jamf path is retained for compatibility with the packaged macOS MDM
helpers. The endpoint and GCS scripts used in the Rippling flow do not call
Jamf APIs.
Package postinstall creates the default system endpoint:
Deploy with Rippling
1
Upload Beacon as a custom installer
In the Rippling Devices app, upload the signed Beacon
.pkg as a custom
installer. Configure it as system-level software and assign it to the pilot
Supergroup.The package postinstall performs the base system installation. A separate
script is not required to start the collector.2
Confirm package installation
Wait for the device to connect, then review software installation status,
pending actions, and the activity log in Rippling. Validate a pilot Mac:
3
Deploy a reconciliation script
Use a recurring custom Bash script for configuration that depends on a
logged-in user or on files delivered separately. The script should fail
clearly until its prerequisites exist and be safe to rerun.Start every system reconciliation script with:Recurrence allows a device to converge after package installation, user
login, or credential delivery without depending on undocumented action
ordering.
4
Validate local telemetry
Validate endpoint configuration and write a synthetic event:
5
Expand the Supergroup
Broaden the deployment only after package status, script output, collector
health, and local events remain healthy for the pilot population.
Claude Code and user hooks
The package configures Claude Code’s local OTLP settings during system installation when an interactive user is available. Claude Code hooks are per-user and should be reconciled while a non-root console user is logged in. For Claude-specific repair, deploy a recurring root script. Keep the helper’s verbose output local because its smoke test prints recent runtime and inventory events:- repairs the Beacon system endpoint;
- prepares runtime and inventory JSONL files;
- grants the active console user append access;
- installs Claude Code hooks for that user;
- writes a synthetic hook event and validates the endpoint.
Inventory and remediation
Rippling can report software install state, MDM status, Agent status, pending actions, and activity logs. Beacon-specific service and event freshness are best checked with a recurring Bash script whose metadata-only output Rippling can display or export:beacon endpoint status --json through Rippling script output.
Its last_event field contains the complete most recent endpoint event.
Use a separate recurring reconciliation script for unhealthy or newly assigned
devices. Repair the base system endpoint explicitly:
Updates
Prefer deploying each new signed package through Rippling so software ownership stays with the MDM. Assign the new custom installer to the pilot Supergroup first, verify the collector and existing forwarder restart, and then broaden the assignment. Rippling’s public documentation does not describe version comparison or supersedence behavior for uploaded custom installers. Test package upgrades in your tenant before production rollout. Beacon package self-updates remain off by default. If your organization chooses Beacon-managed updates, run one of these commands from a root reconciliation script:Apply verified Beacon package updates
Report updates without applying them
Uninstall and offboarding
Do not rely only on removing the custom installer from a Supergroup. Rippling can automatically remove managed software, but its public documentation does not establish that removal will run Beacon’s cleanup helper. Use this sequence:- Remove the device from recurring Beacon configuration scripts.
- Copy the cleanup helper to a temporary root-only path while
/opt/beaconstill exists. - Remove or unassign the Beacon custom installer so Rippling does not reinstall it after cleanup.
- Run the copied helper from a one-time root script.
- Review warnings and verify that services, files, and the package receipt are gone.
- Remove any separately managed forwarding credential.
- Revoke the corresponding cloud credential after endpoint cleanup is confirmed.
BEACON_KEEP_LOGS=1 to retain local logs or
BEACON_CLEAN_ALL_USERS=1 to clean Beacon-owned configuration for all local
users.
Troubleshooting
The custom installer remains pending
The custom installer remains pending
Confirm the Mac is assigned to a user in the target Supergroup, is enrolled
in Rippling MDM, and has a connected Rippling Agent. Review pending actions
and the device activity log. Rippling waits to install assigned software on
an unassigned device until it is assigned to a qualifying user.
The script is not running as root
The script is not running as root
Check the script output for the explicit
id -u guard. Do not work around
this by installing Beacon in user mode: the managed endpoint requires
system LaunchDaemons and system-owned configuration. Confirm root execution
behavior with Rippling support for your tenant.The collector is not running
The collector is not running
Check status and launchd state:Then run an explicit system repair:Also confirm that ports
4317, 4318, and 13133 are not occupied by
another process.Claude hooks are missing
Claude hooks are missing
Confirm a non-root console user was logged in when the recurring hook repair
ran. Review the safe summary in Rippling and the root-only local
reconciliation log, rerun the wrapped helper, and fully restart Claude Code
before testing a new session.
Rippling references
- Rippling Device Management
- Role-based software installation with Supergroups
- Device health monitoring
- Rippling Device Management whitepaper
Related
Claude with Rippling and GCS
Deploy Beacon, configure Claude Code hooks, and forward runtime plus inventory telemetry to GCS.
MDM deployment
Review the shared macOS MDM deployment model and package layout.
Claude Code
Review the Claude Code telemetry surface and local configuration.
GCS command reference
Validate the system GCS forwarding path from the Beacon CLI.

