Skip to main content
Most of the time you should finish onboarding and let focale open the watching pull request. Merge it if it is still open, set your ingest DSN as a host secret, then publish. The PR adds OpenTelemetry boot for your backend runtime and instruments the handlers you confirmed with spans, flow metrics, and failure logs. The example env file uses a placeholder, not the live key.
Never commit the live ingest key. Put FOCALE_DSN in .env locally, or in your host’s secret store (Lovable, Bolt, Vercel, Railway, and the like). The key is not a GitHub token.

DSN

focale gives you this value. Copy it into secrets. See DSN for the shape. Boot code parses the key into Authorization: Bearer <key> and sends OTLP/HTTP to that host (/v1/traces, /v1/metrics, /v1/logs).

Manual install

Use this if the PR did not land, or you want to add watching yourself. Prefer that language’s official OpenTelemetry SDK. There is no @focale/sdk package.
Install OTLP HTTP exporters for traces, metrics, and logs, then boot once:
A typical boot file (focale.instrument.mjs) starts the Node SDK, exports all three signals, and emits a boot span with focale.boot=true. Load it with NODE_OPTIONS=--import ./focale.instrument.mjs or import it from your server entry.Then wrap each confirmed handler with a span, flow metrics, and an error log on failure. See watch a flow.
Full endpoint and attribute contract: OTLP.