Skip to main content
The agent is published as a single-file binary per platform. Each binary embeds the Bun runtime + every dependency, so the install collapses to “download, chmod, run”. Use this path on minimal hosts that cannot or should not run Docker.

Prerequisites

  • An agent key from the Observer console (Agents > Add agent).
  • A reachable Prometheus URL, if you plan to use Prometheus probes. PROMETHEUS_SERVER_URL is optional: without it the agent starts, logs a warning, and Prometheus probes report no_data. Active probes (HTTP, TCP, DNS, and the rest) work either way.
Proxies, private CAs and restricted egressIf the host reaches the internet through a proxy, a TLS-intercepting proxy or a private CA, or cannot pull from public registries, see Run behind a proxy or in a restricted network.

Steps

1

Download and verify

Releases live at github.com/useobserver/agent/releases. Each release publishes five binaries plus a SHA256SUMS.txt checksum file (named SHA256SUMS in releases before 1.6.0).On Linux and macOS, this picks the right file from uname, downloads it, and checks it against the published checksums:
To always take the newest release instead, set BASE to https://github.com/useobserver/agent/releases/latest/download. The install command in the console (Agents > Add agent, install target Binary, systemd or launchd) runs the same detection with your agent key already filled in.
2

macOS: clear the quarantine flag

macOS Gatekeeper refuses to run a binary that carries the quarantine flag (set on files from a browser download or AirDrop) and reports that it cannot be opened. Clear it once:
The command does nothing when the flag is not set. Files downloaded with curl usually do not carry it.
3

Run

The agent runs in the foreground: logs print to the terminal and Ctrl-C stops it. The dashboard listens on http://localhost:10101. The console’s Agents page marks the agent as running within 90 seconds. To keep it running in the background, use systemd on Linux or launchd on macOS (below).
4

Linux: run as a systemd service (optional)

/etc/systemd/system/observer-agent.service
Logs: journalctl -u observer-agent -f.
5

macOS: run as a launchd service (optional)

A per-user LaunchAgent starts the agent now and at every login, and restarts it if it exits. launchd passes no shell environment to the process, so every variable the agent needs, including secrets that probes reference by name (connection_string_ref, header_refs and the like), goes in the plist’s EnvironmentVariables. The plist holds the agent key, so only you may read it.
The heredoc is unquoted so that $HOME expands to the absolute paths launchd needs. Escape any $ in a value you add (\$).The agent keeps its local queue in ~/Library/Application Support/observer-agent, its working directory. Logs go to ~/Library/Logs/observer-agent.log:
After you edit the plist, run the two load commands again. To stop the agent and remove it from login:
Host metrics on macOSThe host source reports macOS memory as Activity Monitor’s Memory Used, and network throughput is Linux only. See Probe types.

Forwarding flags to the embedded Bun runtime

The binary ships with a copy of the Bun runtime baked in. Runtime flags reach it via the BUN_OPTIONS environment variable, not via command-line arguments. Example:
See bun.com/docs/bundler/executables for the full list of supported flags.

Upgrades

Run the download step again with the new VERSION, then restart the agent:
Pin every installPin to an exact version in your install scripts and CI. New releases at github.com/useobserver/agent/releases. Roll forward deliberately; rollbacks are a one-line revert of the URL.
When to prefer DockerUse the Docker quickstart when your host already runs containers, when you want pinning via image tags, or when you want the agent isolated from the host’s user namespace. The binary path is the lightest install but offers fewer guardrails.