> For the complete documentation index, see [llms.txt](https://docs.qpoint.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.qpoint.io/release-notes/otel-object-store.md).

# 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)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.qpoint.io/release-notes/otel-object-store.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
