Overview
Use this guide for a single Mac where you want Beacon running in system mode, Claude Code telemetry enabled, and local Beacon JSONL logs forwarded to an S3 bucket. There is no MDM setup here. The end state is:- Beacon is installed under
/opt/beaconfrom the signed and notarized GitHub Release package. - The system collector runs as
com.beacon.endpoint.collector. - Claude Code hooks are installed for the logged-in user.
- Runtime logs are written to
/var/log/beacon-agent/runtime.jsonl. - Inventory logs are written to
/var/log/beacon-agent/inventory_state.jsonl. - Bundled Vector forwards both streams to S3 under
runtime/andinventory/.
1. Prepare AWS
Create or choose an S3 bucket and a root prefix such asbeacon-prod. Do not include runtime or inventory in the prefix; Beacon adds those folders.
Create an S3 bucket
Create the bucket that will receive Beacon endpoint logs. Replace the example bucket name and region with your values:beacon-prod.
Create an S3 policy
Name the IAM policyBeaconEndpointWriteOnly and give the credentials used by Vector permission to write under the selected prefix. Save this JSON as beacon-s3-write-only-policy.json:
kms:* or s3:PutObjectTagging permissions in AWS.
Create or choose IAM credentials
You get the access key and secret key from AWS IAM, but ideally use temporary credentials instead of long-lived access keys. For a quick setup:- Open the AWS Console.
- Go to IAM.
- Go to Users.
- Select the IAM user you want Vector to use, or create one named
beacon-endpoint-writer. - Attach the
BeaconEndpointWriteOnlypolicy to that IAM user. - Open the Security credentials tab.
- Under Access keys, click Create access key.
- Choose the use case, such as Command Line Interface (CLI).
- AWS will show
AWS_ACCESS_KEY_IDandAWS_SECRET_ACCESS_KEY.
.csv.
For a quick local setup, have these values ready:
/Library/Application Support/Beacon/Forwarders/s3-vector.env with mode 0600.
You can also use normal AWS provider-chain settings such as AWS_PROFILE, AWS_SHARED_CREDENTIALS_FILE, AWS_CONFIG_FILE, AWS_WEB_IDENTITY_TOKEN_FILE, or AWS_ROLE_ARN instead of raw access keys.
2. Install The Package
Download and install the latest Apple Silicon endpoint package from GitHub Releases:BeaconEndpointAgent-*-arm64.pkg asset from the release page and run the same sudo installer command against that file.
The package installs /opt/beacon/bin/beacon, /opt/beacon/bin/beacon-otelcol, /opt/beacon/bin/vector, and the S3 helper scripts.
3. Configure Beacon And S3
Run the packaged helper once from an interactive login session. Keep Claude Code closed while this runs.com.beacon.endpoint.s3-forwarder.
Restart Claude Code before testing a real Claude session.
4. Verify Locally
Check the two services:5. Verify S3
Vector batches uploads, so allow up to five minutes.Troubleshooting
Vector Is Not Starting
Check launchd and Vector stderr:/opt/beacon/bin/vector, a malformed env file, missing AWS credentials, or an S3 bucket/prefix/IAM mismatch. Re-run the helper after fixing the environment.
Port 4137 Or 4317 Is Already In Use
Beacon’s default OTLP ports are4317 for gRPC and 4318 for HTTP. If setup reports a port conflict, first retry the same command once. A transient launchd or collector startup race can briefly surface as “address already in use” and then succeed on the next run.
If the retry fails, identify the process:
No S3 Objects Appear
First wait five minutes. Then check that Vector has the expected non-secret settings:s3:PutObject for s3://${BEACON_S3_BUCKET}/${BEACON_S3_PREFIX}/*, the AWS region matches the bucket, and the validation event was written after Vector started. Runtime forwarding starts at the end of the file to avoid backfilling old runtime events.

