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 a boot file (focale.instrument.mjs) and wraps the handlers you confirmed with watch(). 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.
Manual install
Use this if the PR did not land, or you want to add watching yourself.
Node is the runtime focale lands today.Call start() once when the process boots, then wrap the handler you care about:The file focale would have added looks like this: Browser start() exists so a page can share the same DSN. Automatic browser watching is not in scope yet. Deno start() is a stub around the same core. Edge start() is a stub around the same core.
If you already send OpenTelemetry yourself, you can skip the SDK. See OTLP.