Pre-release Harn is pre-1.0 — the language, standard library, and CLI may change between releases. See the release notes

Unified Observability API

Use std/observability when Harn code wants to record "something happened" without caring whether the configured backend represents it as a log, span, metric, or event.

import { obs } from "std/observability"

pipeline default() {
  const o = obs()
  o.configure({backend: o.Backend.auto})

  const span = o.start_span("sync", {tenant: "acme"})
  o.log_in_span(span, "queued", "info", {items: 3})
  o.end_span(span)
}

For scoped work, prefer callback form:

o.span("sync", {tenant: "acme"}, { ->
  o.log("started")
  o.metric("items_synced", 3)
})

Configure processors when events need a shared transform before export:

o.configure({
  backend: o.Backend.auto,
  processors: [o.Processor.redaction],
})

The stock redaction processor applies the active runtime redaction policy before OTLP, Splunk, Honeycomb, pretty, or test payloads are formatted.