Prerequisites
- An agent key from the Observer console (Agents > Add agent).
- A reachable Prometheus URL, if you plan to use Prometheus probes.
PROMETHEUS_SERVER_URLis optional: without it the agent starts, logs a warning, and Prometheus probes reportno_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 To always take the newest release instead, set
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: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
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
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 (The heredoc is unquoted so that After you edit the plist, run the two load commands again. To stop the
agent and remove it from login:
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.$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: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 theBUN_OPTIONS environment variable, not via
command-line arguments. Example:
Upgrades
Run the download step again with the newVERSION, 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.

