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

# OTelEventSink

> Export every `Event` and `Receipt` as OpenTelemetry spans (SPEC-v0.2 §8).

`ctrlrun.otel.OTelEventSink` — class, defined at `src/ctrlrun/otel.py:45`

```python theme={null}
class OTelEventSink()
    def __init__(tracer_provider: Any, arguments: bool, max_open_spans: int)
```

Export every `Event` and `Receipt` as OpenTelemetry spans (SPEC-v0.2 §8).

**Never blocks.** Spans are handed to whatever span processor the application configured
and nothing is flushed synchronously; with no configured tracer provider the API's no-op
provider makes the whole thing free. A process that dies mid-action leaves that span
unended — stated, not solved.

## Next

* [Python API index](/reference/api/index).
* [Get started](/get-started/quickstart) · [Why](/why).


## Related topics

- [Receipts into OpenTelemetry](/cookbook/receipts-to-opentelemetry.md)
- [Export to OpenTelemetry](/guides/export-to-opentelemetry.md)
- [Receipts and evidence](/concepts/receipts-and-evidence.md)
- [Install](/get-started/install.md)
- [Python API](/reference/api/index.md)
