diff --git a/README.md b/README.md
index 5835526bf..28afad08c 100644
--- a/README.md
+++ b/README.md
@@ -103,6 +103,7 @@ For more details, see our [quickstart guide](https://docs.odigos.io/intro).
| Grafana Cloud | ✅ | ✅ | ✅ |
| Groundcover inCloud | ✅ | ✅ | ✅ |
| Honeycomb | ✅ | ✅ | ✅ |
+| HyperDX | ✅ | ✅ | ✅ |
| KloudMate | ✅ | ✅ | ✅ |
| Last9 | ✅ | ✅ | |
| Lightstep | ✅ | | |
diff --git a/common/config/hyperdx.go b/common/config/hyperdx.go
new file mode 100644
index 000000000..8068956ea
--- /dev/null
+++ b/common/config/hyperdx.go
@@ -0,0 +1,48 @@
+package config
+
+import (
+ "github.com/odigos-io/odigos/common"
+)
+
+type HyperDX struct{}
+
+func (j *HyperDX) DestType() common.DestinationType {
+ return common.HyperDxDestinationType
+}
+
+func (j *HyperDX) ModifyConfig(dest ExporterConfigurer, cfg *Config) error {
+ uniqueUri := "hdx-" + dest.GetID()
+
+ exporterName := "otlp/" + uniqueUri
+ exporterConfig := GenericMap{
+ "endpoint": "in-otel.hyperdx.io:4317",
+ "headers": GenericMap{
+ "authorization": "${HYPERDX_API_KEY}",
+ },
+ }
+
+ cfg.Exporters[exporterName] = exporterConfig
+
+ if isTracingEnabled(dest) {
+ pipeName := "traces/" + uniqueUri
+ cfg.Service.Pipelines[pipeName] = Pipeline{
+ Exporters: []string{exporterName},
+ }
+ }
+
+ if isMetricsEnabled(dest) {
+ pipeName := "metrics/" + uniqueUri
+ cfg.Service.Pipelines[pipeName] = Pipeline{
+ Exporters: []string{exporterName},
+ }
+ }
+
+ if isLoggingEnabled(dest) {
+ pipeName := "logs/" + uniqueUri
+ cfg.Service.Pipelines[pipeName] = Pipeline{
+ Exporters: []string{exporterName},
+ }
+ }
+
+ return nil
+}
diff --git a/common/config/root.go b/common/config/root.go
index 8193dbbae..c4d98b15d 100644
--- a/common/config/root.go
+++ b/common/config/root.go
@@ -18,7 +18,7 @@ var availableConfigers = []Configer{
&AppDynamics{}, &Axiom{}, &AWSS3{}, &AzureBlobStorage{}, &BetterStack{}, &Causely{}, &Chronosphere{}, &Clickhouse{}, &Coralogix{},
&Datadog{}, &Debug{}, &Dynatrace{}, &ElasticAPM{}, &Elasticsearch{}, &GenericOTLP{}, &GoogleCloud{},
&GoogleCloudStorage{}, &GrafanaCloudLoki{}, &GrafanaCloudPrometheus{}, &GrafanaCloudTempo{}, &Groundcover{},
- &Honeycomb{}, &Jaeger{}, &KloudMate{}, &Last9{}, &Lightstep{}, &Logzio{}, &Loki{}, &Lumigo{}, &Middleware{}, &Mock{}, &NewRelic{},
+ &Honeycomb{}, &HyperDX{}, &Jaeger{}, &KloudMate{}, &Last9{}, &Lightstep{}, &Logzio{}, &Loki{}, &Lumigo{}, &Middleware{}, &Mock{}, &NewRelic{},
&Nop{}, &OpsVerse{}, &OTLPHttp{}, &Prometheus{}, &Qryn{}, &QrynOSS{}, &Quickwit{}, &Sentry{},
&Signoz{}, &Splunk{}, &SumoLogic{}, &Tempo{}, &Uptrace{},
}
diff --git a/common/dests.go b/common/dests.go
index 469ce8ee0..f43189aac 100644
--- a/common/dests.go
+++ b/common/dests.go
@@ -25,6 +25,7 @@ const (
GrafanaCloudTempoDestinationType DestinationType = "grafanacloudtempo"
GroundcoverDestinationType DestinationType = "groundcover"
HoneycombDestinationType DestinationType = "honeycomb"
+ HyperDxDestinationType DestinationType = "hyperdx"
JaegerDestinationType DestinationType = "jaeger"
KloudMateDestinationType DestinationType = "kloudmate"
Last9DestinationType DestinationType = "last9"
diff --git a/destinations/data/hyperdx.yaml b/destinations/data/hyperdx.yaml
new file mode 100644
index 000000000..f11c577ed
--- /dev/null
+++ b/destinations/data/hyperdx.yaml
@@ -0,0 +1,23 @@
+apiVersion: internal.odigos.io/v1beta1
+kind: Destination
+metadata:
+ type: hyperdx
+ displayName: HyperDX
+ category: managed
+spec:
+ image: hyperdx.svg
+ signals:
+ traces:
+ supported: true
+ metrics:
+ supported: true
+ logs:
+ supported: true
+ fields:
+ - name: HYPERDX_API_KEY
+ displayName: HyperDX API Key
+ componentType: input
+ secret: true
+ componentProps:
+ type: password
+ required: true
diff --git a/destinations/logos/hyperdx.svg b/destinations/logos/hyperdx.svg
new file mode 100644
index 000000000..1f81e3f20
--- /dev/null
+++ b/destinations/logos/hyperdx.svg
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/docs/backends-overview.mdx b/docs/backends-overview.mdx
index 063588a27..69f9c870c 100644
--- a/docs/backends-overview.mdx
+++ b/docs/backends-overview.mdx
@@ -24,6 +24,7 @@ Odigos has destinations for many observability backends.
| Grafana Cloud | Managed | ✅ | ✅ | ✅ |
| Groundcover inCloud | Managed | ✅ | ✅ | ✅ |
| Honeycomb | Managed | ✅ | ✅ | ✅ |
+| HyperDX | Managed | ✅ | ✅ | ✅ |
| Jaeger | Self-Hosted | ✅ | | |
| KloudMate | Managed | ✅ | ✅ | ✅ |
| Last9 | Managed | ✅ | ✅ | |
diff --git a/docs/backends/hyperdx.mdx b/docs/backends/hyperdx.mdx
new file mode 100644
index 000000000..fdac90ab0
--- /dev/null
+++ b/docs/backends/hyperdx.mdx
@@ -0,0 +1,60 @@
+---
+title: 'HyperDX'
+---
+
+## Configuring Backend
+
+- **HYPERDX_API_KEY** - HyperDX API Key.
+
+**Note:**
+We handle the endpoint internally, so you don't need to provide it.
+- The endpoint is `in-otel.hyperdx.io:4317`.
+
+## Adding a Destination to Odigos
+
+Odigos makes it simple to add and configure destinations, allowing you to select the specific signals [traces/logs/metrics] that you want to send to each destination. There are two primary methods for configuring destinations in Odigos:
+
+1. **Using the UI**
+
+Use the [Odigos CLI](https://docs.odigos.io/cli/odigos_ui) to access the UI:
+
+```bash
+odigos ui
+```
+
+2. **Using kubernetes manifests**
+
+Save the YAML below to a file (e.g., `destination.yaml`) and apply it using `kubectl`:
+
+```bash
+kubectl apply -f destination.yaml
+```
+
+
+```yaml
+apiVersion: odigos.io/v1alpha1
+kind: Destination
+metadata:
+ name: hyperdx-example
+ namespace: odigos-system
+spec:
+ data: {}
+ destinationName: hyperdx
+ secretRef:
+ name: hyperdx-secret
+ signals:
+ - TRACES
+ - METRICS
+ - LOGS
+ type: hyperdx
+
+---
+apiVersion: v1
+data:
+ HYPERDX_API_KEY:
+kind: Secret
+metadata:
+ name: hyperdx-secret
+ namespace: odigos-system
+type: Opaque
+```
diff --git a/docs/mint.json b/docs/mint.json
index 4c7c5fef7..b402dd4aa 100644
--- a/docs/mint.json
+++ b/docs/mint.json
@@ -198,6 +198,7 @@
"backends/grafanacloudtempo",
"backends/groundcover",
"backends/honeycomb",
+ "backends/hyperdx",
"backends/jaeger",
"backends/kloudmate",
"backends/last9",
diff --git a/docs/quickstart/next-steps.mdx b/docs/quickstart/next-steps.mdx
index ef7ccc636..85818cd6a 100644
--- a/docs/quickstart/next-steps.mdx
+++ b/docs/quickstart/next-steps.mdx
@@ -36,6 +36,7 @@ Select the relevant backend for your use case below to connect it to Odigos.
+