Overview
Use this guide when you want Fleet to install Beacon on managed Macs and forward endpoint telemetry to a bucket you own. When you are done:- Beacon is installed under
/opt/beacon. - The collector runs as
com.beacon.endpoint.collector. - Runtime events go to
/var/log/beacon-agent/runtime.jsonl. - Inventory events go to
/var/log/beacon-agent/inventory_state.jsonl. - Vector uploads both files to S3:
Before you start
You need:- Fleet Premium. Custom packages cannot be added to All teams.
- A Fleet team for the pilot, not All teams.
fleetdwith scripts enabled. That is the default when you use Fleet MDM. Otherwise deployfleetdwith--enable-scripts.- Apple Silicon Macs. The signed Beacon package is
BeaconEndpointAgent-<version>-arm64.pkg. - An API token that can manage software, scripts, and variables on that team.
- An S3 bucket and an IAM principal that can
s3:PutObjecton one prefix in that bucket. curlandpython3on the machine that runs the helper.
1. Prepare the S3 prefix and IAM
Pick a root prefix such asbeacon or beacon-prod. Do not put runtime or inventory in the prefix. Beacon adds those folders itself:
s3:PutObject on that prefix only:
0600. Vector reads it when the LaunchDaemon starts.
2. Run the admin helper
The helper runs on your workstation. It does not run on the Macs. Download it from the repo:examples/fleet/configure-beacon-macos-s3.sh from a clone.
Preview the host scripts without calling Fleet:
Non-interactive:
--check-only enables Beacon update monitoring without installing packages.
If you use Fleet GitOps, the next GitOps apply can overwrite these API changes. Fold the package, scripts, and $FLEET_SECRET_* variables into the GitOps repo, or rerun the helper after apply.
What the helper does
On your workstation it:- Downloads the latest Apple Silicon
.pkgfrom GitHub Releases and checks the SHA-256. - Uploads that package as Fleet software on the team you chose. The install script is Fleet’s default
installer -pkg "$INSTALLER_PATH" -target /. The Beacon package postinstall then configures the system collector. The uninstall script calls Beacon’s cleanup helper, because Fleet’s default.pkguninstall only removes.appbundles. - Stores the AWS keys as Fleet secret variables so they are hidden in the Fleet UI.
- Creates three host scripts:
beacon-enable-self-updates.shbeacon-configure-s3-forwarding.shbeacon-validate.sh
- Creates saved queries for install state, collector health, and S3 forwarder health.
/opt/beacon/jamf/claude/s3/install-forwarder.sh. The path says jamf because that is where the package puts it. Fleet uses the same file.
Fleet replaces $FLEET_SECRET_* when it sends a script to a host. The script never prints those values. Fleet still records script output, so do not echo keys.
3. Install Beacon on a pilot Mac
In Fleet:- Open Software, select the team, and open the Beacon package.
- Target a small label of Apple Silicon Macs. Do not target every host yet.
- Install from the host’s Software tab, or wait if you turned on automatic install.
4. Enable self-updates and S3
After the package is installed, run the two scripts on those hosts, in this order:beacon-enable-self-updates.shbeacon-configure-s3-forwarding.sh
beacon-validate.sh if you want a quick status dump.
On one Mac:
5. Confirm S3 delivery
Write a test runtime event:timeout_secs = 300) before the first object appears.
Set this up in the Fleet UI instead
Skip the helper if you want to click through Fleet yourself.Upload the package
- Download
BeaconEndpointAgent-<version>-arm64.pkgfrom the latest GitHub release. - In Fleet, open Software, select the team, and add a custom package.
- Leave the default install script. Do not add a post-install script.
- Replace the uninstall script with:
Add secret variables
In Controls > Variables, add:Add the host scripts
Enable self-updates:beacon-configure-s3-forwarding.sh:
Policies to add
After the first Mac is installed, the package also drops queries under/opt/beacon/fleet/queries. Useful checks:
Troubleshooting
The package will not upload
Custom packages need Fleet Premium and a team ID. Self-hosted Fleet needs installer S3 storage and a load balancer that waits at least five minutes.Scripts never run
Confirmfleetd was installed with scripts enabled. In Fleet MDM that is the default. Check Host details > Activity for the script result.
Beacon installed, but S3 is empty
Confirm the package is on the disk and the S3 script ran after install:launchctl says it cannot find the service, rerun beacon-configure-s3-forwarding.sh. Wait up to five minutes for Vector to flush.
Check that the env file exists without printing secrets:
Post-install uninstalled Beacon
A failing Fleet post-install script rolls the package back. Remove S3 and self-update from post-install, reinstall the package, and run the two scripts afterward.Self-update is off
beacon-enable-self-updates.sh, or:
BEACON_UPDATE_MANIFEST_URL to a manifest you host.
Intel Macs
The current signed endpoint package is Apple Silicon only. Do not scope this software title to Intel hosts.Related
Fleet
Package layout, Fleet scripts, queries, and self-update commands.
Deploy software in Fleet
Fleet’s custom package, script, and targeting model.
Jamf and S3
The same Vector S3 path, installed with Jamf Pro instead of Fleet.
Object storage forwarding
S3 and GCS Vector config for a single Mac.

