Skip to main content

Overview

Use this guide for a single Apple Silicon Mac without MDM. Beacon’s object storage forwarders are harness-neutral: they tail the system endpoint logs, so Claude Code, Codex CLI, Cursor, VS Code, opencode, and other configured integrations can share the same S3 or GCS pipeline. The end state is:
  • Beacon and bundled Vector are installed under /opt/beacon.
  • com.beacon.endpoint.collector receives local OTLP telemetry.
  • Supported hooks and plugins write to the same system runtime log.
  • Runtime activity is stored in /var/log/beacon-agent/runtime.jsonl.
  • Inventory telemetry is stored in /var/log/beacon-agent/inventory_state.jsonl.
  • Vector forwards both streams to S3, GCS, or both:
The scripts below use the destination-only install-forwarder.sh helpers. The repair-hooks-and-forwarder.sh scripts under the claude/ package path are Claude convenience wrappers: they install the same forwarder and then repair Claude hooks. The forwarding services themselves do not inspect or depend on the producing harness.

1. Install Beacon

Download and install the latest signed Apple Silicon endpoint package from GitHub Releases:
The package installs Beacon, the collector, bundled Vector, and the S3 and GCS forwarder helpers. Confirm the system endpoint is healthy:

2. Configure Runtime Harnesses

Object storage forwarding begins after events reach Beacon’s system logs. Configure the runtimes you use before troubleshooting the destination. The package configures the default native OTLP path for Claude Code and Codex CLI for the active console user. Other hook- or plugin-backed integrations use their normal endpoint installation commands. For example:
Run hook installers as the interactive user, not root. Review Agent Harness Integrations and Endpoint Hooks for the supported setup method for each runtime. Restart the runtime after changing hooks or OTLP settings. Confirm recent local events before configuring a cloud destination:

3. Choose A Destination

Use a root prefix such as beacon-prod. Do not include runtime or inventory; Beacon appends those folders.

AWS S3

You need an AWS account where your current AWS CLI identity can create an S3 bucket, IAM user, and inline policy. Confirm the identity before making changes:
Choose globally unique bucket and writer names:
Create the bucket. AWS requires a different command shape for us-east-1:
Create a dedicated writer and grant only s3:PutObject below the Beacon root prefix:
Create an access key:
AWS displays the secret only once. Store both values in your password manager or endpoint secret tooling, then export them without committing them or placing them in shell startup files:
Then install only the S3 forwarder:
The helper stores the provider values in a root-owned 0600 file for the launchd service. For production, prefer temporary credentials, a managed profile, or web identity where your environment can refresh them. Configure bucket encryption, lifecycle, retention, and access logging in AWS rather than in Beacon.

Google Cloud Storage

You need a Google Cloud project where your current gcloud identity can enable APIs, create a bucket, create a service account, and manage bucket IAM. Confirm the active identity and project:
Choose the project, bucket, location, prefix, and writer name:
Enable the APIs and create a uniform-access bucket:
Create the writer service account:
Grant it write-only access to the bucket:
The packaged Vector 0.56 service on macOS needs a service-account JSON file. If your organization allows service-account keys, create one in a temporary directory:
Install the JSON outside Beacon-managed directories so upgrades and cleanup do not remove it:
Then install only the GCS forwarder:
The endpoint writer intentionally cannot list or read objects. Validate with your current administrator identity or a separate identity with roles/storage.objectViewer. If service-account key creation is blocked by organization policy, stop here: packaged Vector 0.56 does not support external-account Workload Identity Federation on macOS. Configure lifecycle, retention, audit logging, and CMEK controls in Google Cloud rather than in Beacon.

Forward To Both

The services have separate labels, configs, credentials, and checkpoint directories. Install both helpers to forward the same local events to S3 and GCS. After exporting the provider variables from the two sections above, run:
This creates two independent services:

4. Validate

Check the configured services:
Write destination and inventory validation events:
Vector batches for up to five minutes by default. Use an authorized reader to inspect the destination:
Inspect a runtime object and look for the destination validation event:
The endpoint writer identities are intentionally write-only. Run these inspection commands with your administrator identity or a separate reader. Generate a real event from every configured harness and confirm its harness.name appears in a remote runtime object.

5. Operate And Troubleshoot

The forwarders persist checkpoints, so restarts and package upgrades resume from the last observed offsets. Runtime starts at the end on first install to avoid unexpected historical backfill; inventory starts at the beginning so the first snapshot is not missed. Check Vector errors:
Common causes of missing objects are:
  • The validation event was written before Vector started. Write another event.
  • The configured bucket, region, or root prefix does not match the IAM policy.
  • The service credential cannot create objects.
  • The GCS credential path is not absolute, root-owned, and mode 0400 or 0600.
  • The write-only endpoint identity is being used for a list/read validation command.

Rotate AWS credentials

Create a replacement key, rerun the S3 helper with the new values, confirm a new object, and only then delete the retired key:

Rotate Google credentials

Create a replacement key in a temporary directory, atomically replace the externally managed file, restart Vector, confirm a new object, and then delete the retired service-account key:
For managed fleets, use the dedicated Jamf S3 guide or Jamf GCS guide. Those guides show the optional Claude-oriented combined repair wrappers as well as policy parameters and managed credential delivery.