Command overview
beacon endpoint connect forwards this endpoint’s telemetry to Beacon so it appears on the Beacon dashboard. For a user endpoint, the signed-in CLI account authorizes a device-specific ingest key without another browser approval. The account token is never copied into endpoint state or given to Vector. System mode retains browser approval because unattended/system installs are account-free.
Forwarding is opt-in and revocable. Runtime telemetry starts at the end of the
existing runtime log, so pre-connect runtime events are not sent, with one bounded
exception: every connect uploads the last 30 days of agent sessions read
from the runtimes’ own session stores, so the dashboard shows your recent work at once
(see Session backfill). With the
scheduled session sync on, its later runs keep adding
session-store records to the log, and those are forwarded as they are written. Inventory starts
at the beginning of inventory_state.jsonl so the dashboard receives the endpoint’s
current inventory baseline, including inventory records written before connection.
Revoking the device from the dashboard stops ingestion within about a minute.
beacon endpoint disconnect stops the forwarder and removes the local credentials.
Command syntax
Prerequisites
- Beacon endpoint installed (
beacon endpoint install) and writing local JSONL. - A current
beacon loginsession withdevice:enrollscope for user mode. - Vector 0.50 or newer on the machine. Beacon installs one for you: 0.56.0 at
/opt/beacon/bin/vectorfrom the macOS package and the Linux.deband.rpm, asbeacon-vectorbesidebeaconfrom the Linux archive and Homebrew on Linux, and as the tap’sbeacon-vectorkeg from Homebrew on macOS (kept inlibexec, off your PATH). Intel Macs get 0.50.0, the last x86_64 macOS build Vector published.connectstops before opening a browser if no usable Vector is found or if Vector rejects the forwarder config. - System mode only: a browser where an organization member can approve the device.
What connect does
- Locates Vector:
--vector-bin, thenBEACON_VECTOR_BIN, then/opt/beacon/bin/vector, thebeacon-vectorkeg in each Homebrew prefix, a linkedvectorin each Homebrew prefix, thenPATH. Thebeacon-vectorkeg is tried ahead of any other Homebrew Vector because it is the copy the tap pins at a supported version. - Renders the forwarder config for the selected privacy mode into a scratch directory, with a placeholder key, and runs
vector validateon it. A config Vector rejects stopsconnecthere, before anything is sent to the server. - Runs the session backfill sweep into the runtime log, in user and system mode. It is local and runs before a new key is issued.
- Uses the signed-in account’s
device:enrollscope to register this machine’s hostname, operating system, architecture, Beacon version, install id, and install mode. The server returns a separatebcn_device_*ingest key. System mode uses the existing browser PKCE device approval instead. - Writes the device key once to
asymptote/vector-secrets.jsonwith mode0600. The account token is not persisted by the endpoint flow. - Renders
asymptote/vector.tomlwith the selected privacy mode and runsvector validateon the file the service will run. Stages the session backfill incloud-backfill.jsonlbeside the runtime log. Then installs a service unit and starts it. - Records the non-secret enrollment, including privacy mode, in
asymptote/enrollment.jsonandconfig.json’smanaged_ingestblock.
vector validate or at loading the service saves no enrollment record, so the endpoint is not connected and beacon endpoint disconnect cleans up what was written. After disconnect --keep-credentials, status reports not connected and names the kept device id.
Re-running connect on a connected machine reuses its install id, so the server rotates the existing device’s key in place instead of creating a second device. Because that rotation invalidates the key the running forwarder holds, the new config is validated before enrollment: a re-run whose config Vector rejects leaves the forwarder, its key, and its buffer untouched. Under launchd the new forwarder is loaded only after the old one has exited (Vector drains in-flight requests first), and if the new instance has not started within the wait, connect fails and points at launchctl print for the job (v1.3.2).
Some steps can only fail after the server has issued the key: storing it, validating the config that carries the server’s ingest URL, writing the service unit, starting the service, and recording the enrollment. connect writes asymptote/connect-pending as soon as the key arrives and removes it only when every step has succeeded. If a step in between fails, connect says the connect is incomplete and names the retry, and beacon endpoint status reports Beacon Cloud as not connected with connect_incomplete: true in --json. On a re-connect, the forwarder still running holds the key the server just rotated out, so the previous enrollment record and config are not treated as a working connection. On a first connect, Beacon stops and removes any partial forwarder before returning the error, so a later onboarding retry can safely select local-only telemetry. Run beacon endpoint connect again once the cause is fixed. An approval that is cancelled or expires before a key is issued rotates nothing and leaves an existing connection as it was.
Session backfill
Every connect, first or not and in user or system mode, uploads recent session history so the Beacon Cloud dashboard is not empty until an agent runs again. Beacon first runs the same bounded sweep asbeacon endpoint install: the last 30 days of
sessions from each runtime’s own session store, newest first, at most 24 MiB. A system connect reads
the active console user’s session stores, as a system install does. endpoint install --connect
and the onboarding wizard skip that sweep, because the install has just run it. Then, before the
forwarder starts, Beacon copies the events those sweeps wrote (harness.collection_method=poll,
timestamped in the last 30 days, newest kept up to 24 MiB) from the runtime log and its archives
into cloud-backfill.jsonl beside the runtime log (0600). The forwarder reads that file once from
the beginning into the same runtime upload, through the same privacy transform as live events, so
Metadata-only strips the backfill exactly as it strips live telemetry. Hook, OTLP and plugin events
recorded before the connection stay local.
A re-connect stages the backfill again, so sessions the agents wrote while the endpoint was
disconnected, or before a system endpoint had a console user to read for, still arrive. The runtime
upload resumes from the forwarder’s checkpoints, and the forwarder reads each newly staged file as a
new file from the beginning (it fingerprints the file by inode). That can resend events the
forwarder already shipped; every event keeps the deterministic event id it was written with, and
the dashboard collapses a re-sent event on it. A privacy-mode change clears the checkpoints and
replaces the staged file, so the backfill is resent in the new mode. disconnect removes the file.
--no-backfill or BEACON_BACKFILL=0 connects without uploading any history.
The backfill is a one-time upload per connect. With the
scheduled session sync on, the job keeps reading the
session stores every 15 minutes, and the forwarder ships what it writes as ordinary new runtime
events. When the backfill stopped at its size limit, the job’s first runs also read the rest of the
last 30 days, so that history arrives over the next runs rather than not at all.
Privacy modes
The onboarding wizard records one of two modes.connect uses that choice unless
--privacy-mode overrides it:
The transform runs locally in Vector before batching, buffering, or HTTPS upload.
Changing modes requires rerunning
beacon endpoint connect; install, repair and package
upgrades re-render the config but always keep the recorded mode. The rendered config and
status output record the active choice. A mode change stops the forwarder and clears its
disk buffer before the new config is installed, so events queued under the previous mode
are not uploaded under the new one.
Keeping the forwarder config current
connect is not the only time vector.toml is written. beacon endpoint install,
beacon endpoint repair, and the macOS, .deb and .rpm package upgrades re-render it in place
for an endpoint that is already connected, so a fix to the forwarder pack, such as a
Metadata-only transform that removes more fields, reaches the endpoint without a re-connect,
which would rotate the device key. The re-render:
- keeps the recorded ingest URL and privacy mode (changing the mode is still a
connectdecision), and refuses to guess whenenrollment.jsonandconfig.jsondisagree about it; - never enrolls, makes no network request, and does not read or rewrite the secrets file;
- leaves
vector-data/, and with it Vector’s checkpoints and buffer, as it is; - validates the new config with the forwarder’s own Vector exactly as
connectdoes, and only then replaces the old file atomically. A config Vector rejects is reported as a warning, and the running forwarder keeps the old one; - restarts the forwarder only when the content changed and the forwarder is running (a stopped one reads the new config when it next starts).
--no-start leaves the forwarder alone; the macOS package installs that way and then runs
beacon endpoint asymptote reconcile --system itself. Run that command by hand (add --json for
the result) to reconcile without reinstalling.
Files and services
The directory is
0700. The device key appears only in the secrets file, which Vector reads through its file secret backend; it is in neither vector.toml, config.json, nor the forwarder’s environment. install-id pins this machine’s install id before enrollment starts, so a connect retried after a failure rotates the same device’s key instead of registering a second device.
Flags
disconnect accepts the same path flags and --json (which prints disconnected, kept_credentials, and device_id), plus --keep-credentials, which keeps the enrollment record and device key so a later connect can reuse this device without a new approval.
Examples
Connect the default per-user install
Connect a system-mode install from the signed package
Connect a system endpoint from a machine without a browser
Connect with metadata-only forwarding
Stop forwarding and remove the local credentials
Checking the connection
beacon endpoint status prints one line for managed ingest: whether this endpoint is connected, organization and device identity, active privacy mode, forwarder state, credential validity, and disk-buffer size. --json exposes the same under managed_ingest. A system install that was never connected, usually an MDM rollout, leaves the line out, as does any install that forwards to its own S3, GCS or Falcon LogScale; status lists those forwarders instead.
credential revoked means the key was revoked or expired, or the approving user is no longer a member of the organization; Vector is logging 401s and dropping batches. Run beacon endpoint connect --dashboard-url https://beacon.sh again to re-enroll.
Revocation and disconnect
Revoke a device, or every device a person approved, from the dashboard’s Beacon Endpoints page. The ingest service rejects the key within about a minute.disconnect is the local half: it stops and removes the forwarder and its config and, unless --keep-credentials is given, the enrollment record and device key. beacon endpoint uninstall removes the forwarder and the asymptote/ directory as part of removing the endpoint, except that --keep-config keeps the enrollment record and device key. Neither revokes the device server-side; the CLI tells you where to do that.
Offline behavior
Vector keeps reading into an on-disk buffer (512 MiB for runtime, 256 MiB for inventory) while the network is unavailable and drains it when connectivity returns. The ingest service accepts old timestamps and the dashboard collapses re-sent duplicates on Beacon’s deterministic event id, so a laptop that was asleep or offline catches up without loss or double counting, up to the buffer size.Related
Beacon Cloud forwarding
Wire contract, what leaves the machine, revocation, and offline behavior.
beacon endpoint asymptote
The forwarder pack, for running Vector by hand.
Endpoint status
Inspect the forwarder and credential state.
Endpoint paths
Every file and service Beacon writes.