# OTel Object Store

**Export captured artifacts directly through your OpenTelemetry pipeline.**

Qtap now supports **OpenTelemetry-native object storage**, letting you send captured request/response bodies, TLS metadata, and other artifacts through the same OTel collector that handles your events. No separate S3 setup required.

**Released:** March 2026

{% hint style="success" %}
**Available Now**: OTel object storage is available in Qtap v0.17.4+.
{% endhint %}

***

## What's New

### OTel-Native Artifact Storage

Configure `objectstore.otel` to send captured artifacts through your existing OpenTelemetry collector. Artifacts flow through the same gRPC endpoint as events, simplifying your infrastructure.

### Unified Pipeline

Events and artifacts now share a single export path. One collector endpoint, one set of credentials, one pipeline to manage.

### ClickStack Integration

The OTel object store is the foundation for **ClickStack** — a fully self-hosted observability stack that stores everything (events, artifacts, metrics) in ClickHouse with S3-compatible object storage via Garage. No cloud dependencies.

***

## Configuration

Add an OTel object store to your Qtap YAML configuration:

```yaml
version: 2
services:
    event_stores:
        - type: otel
          endpoint: "localhost:4317"
          protocol: grpc
          service_name: "qtap"
          environment: "production"
          tls:
              enabled: false
    object_stores:
        - type: otel
          otel_endpoint: "localhost:4317"
          protocol: grpc
          service_name: "qtap"
          environment: "production"
          tls:
              enabled: false
```

Both the event store and object store point to the same OTel collector endpoint. The collector routes events and artifacts to their respective backends.

***

## Why It Matters

Before this release, exporting captured artifacts required configuring a separate S3-compatible object store (AWS S3, GCS, MinIO). Now you can route everything through OpenTelemetry:

* **Simpler infrastructure** — one collector handles events and artifacts
* **Self-hosted friendly** — pair with ClickStack for a fully local stack
* **Consistent auth** — no separate cloud storage credentials to manage
* **Flexible routing** — use OTel collector pipelines to filter, transform, or fan out artifacts

***

## Common Use Cases

* **Self-hosted observability:** Run ClickStack with ClickHouse + Garage for a zero-cloud-dependency setup
* **Compliance and audit:** Capture and store full request/response bodies locally
* **Security investigation:** Retain artifacts for forensic analysis without external storage
* **Dev and staging:** Spin up a complete capture + storage stack with `docker compose`

***

## Getting Started

See the [sample ClickStack configuration](https://github.com/qpoint-io/qtap/blob/main/examples/sample-otel-objectstore-clickstack.yaml) for a complete working example that captures HTTP transactions and streams artifacts to a ClickStack instance via the OTel object store.

***

## Feedback

We'd love your feedback on OTel object storage.

* **GitHub Issues**: [qpoint-io/qtap](https://github.com/qpoint-io/qtap/issues)
