> ## Documentation Index
> Fetch the complete documentation index at: https://repost.sh/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Observe the Kotlin Client

> Runtime diagnostics, lifecycle observers, and the Micrometer and OpenTelemetry bridges for the Repost Kotlin client.

The runtime exposes the same credential- and payload-free windows as the [Java SDK](/docs/send/java/observability): a diagnostics snapshot, a bounded observer stream, and optional metrics and tracing bridges.

## Diagnostics

`repost.diagnostics` returns a credential- and payload-free snapshot: `inFlightOperations`, `droppedObserverEvents`, `observerFailures`, and admission-rejection counters.

## Observers and bridges

Register a `RepostObserver` (via the `observer` config property) for bounded lifecycle events, or wire a metrics or tracing bridge. The observer is intentionally lossy (a bounded 1,024-event queue that drops and counts rather than blocking a send) and runs off the transport thread, so a slow or throwing observer never changes an application send:

<CodeGroup>
  ```kotlin Micrometer theme={"languages":{"custom":["/languages/repost.json"]}}
  // sh.repost:repost-client-micrometer
  RepostClient {
      observer = MicrometerRepostObserver.create(meterRegistry)
  }
  ```

  ```kotlin OpenTelemetry theme={"languages":{"custom":["/languages/repost.json"]}}
  // sh.repost:repost-client-opentelemetry
  RepostClient {
      telemetry = OpenTelemetryRepostTelemetry.create(openTelemetry)
  }
  ```
</CodeGroup>

The recorded meters and spans are identical to the [Java SDK](/docs/send/java/observability#micrometer-and-opentelemetry): `repost.client.*` meters tagged with `outcome`, `error.code`, `delivery.state`, and `http.status.class`, and one `repost.send` span with a `repost.send.attempt` child per attempt — low-cardinality metadata only, never payloads or credentials.

## Continue

<Columns cols={3} className="gap-y-4">
  <Card title="Testing" icon="flask-conical" href="/docs/send/kotlin/testing" cta="Test" arrow="true">
    A recording transport, deterministic clocks, and a no-network guard.
  </Card>

  <Card title="Frameworks" icon="boxes" href="/docs/send/kotlin/frameworks" cta="Inject" arrow="true">
    Spring Boot auto-wires these bridges when a registry bean is present.
  </Card>

  <Card title="Reliability" icon="shield-check" href="/docs/send/kotlin/reliability" cta="Outcomes" arrow="true">
    The delivery states and error codes these signals report.
  </Card>
</Columns>
