Skip to content

Keep your OpenTelemetry. Change one endpoint.

Squasher accepts OTLP over HTTP for traces, logs, and metrics. Point your SDK or Collector at one URL with one header, and each trace opens as a waterfall linked to its logs.

Free plan. No credit card required.

app.squasher.ai/acme/checkout-api/traces?trace=8a71b29c

POST /api/checkout

Error
trace 8a71b29c4f0e3d15a6b2c7e9f1d04a38
Service
api-gateway
Duration
2.31 s
Spans
7
Status
Error

Example trace. OpenTelemetry spans from three services.

Works with any OpenTelemetry SDK.

  • OpenTelemetry
  • Node.js
  • Python
  • Go
  • Java
  • .NET
  • Ruby
  • PHP
  • Rust
  • Elixir

One endpoint for three signals.

OTLP over HTTP, in protobuf or JSON. The key in the header picks the project, so there is nothing else to set.

  • Send the key as x-squasher-key or Authorization: Bearer.
  • Compress bodies with gzip if your exporter does.
  • gRPC is not accepted. Use the HTTP exporter.
OpenTelemetry guide
https://ingest.squasher.ai
  • POST/v1/tracesTraces
  • POST/v1/logsLogs
  • POST/v1/metricsMetrics
x-squasher-key
sq_pk_… (or Authorization: Bearer sq_pk_…)
Content-Type
application/x-protobuf or application/json
Content-Encoding
gzip, optional

What happens to each signal.

Everything you send stays searchable. Failed spans and error logs are also recorded as errors.

Traces

Stored as
Spans with their attributes and events
Recorded as an error when
The span status is ERROR
Where you use it
Trace search and the waterfall

Logs

Stored as
Log records with their attributes
Recorded as an error when
Severity is ERROR or higher
Where you use it
Log search, patterns, and query monitors

Metrics

Stored as
Gauges, sums, and histograms
Recorded as an error when
No
Where you use it
The Metrics API

Histograms include exponential histograms. Summary metric points are not stored.

Configure it with environment variables.

Most OpenTelemetry SDKs read these standard variables, so you change configuration, not code. Or let your coding agent find every service and set them.

  1. Point the exporter at Squasher

    Set the endpoint and the HTTP protocol. Squasher does not accept gRPC.

    OTEL_EXPORTER_OTLP_ENDPOINT=https://ingest.squasher.aiOTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
  2. Add your project key

    The key picks the project. Read it from your secret store, never from code.

    OTEL_EXPORTER_OTLP_HEADERS=x-squasher-key=sq_pk_…
  3. Name the service and release

    Add deployment.environment.name the same way. All three become filters on traces and logs.

    OTEL_SERVICE_NAME=checkout-apiOTEL_RESOURCE_ATTRIBUTES=service.version=a41c
  4. Send one error span

    Throw inside a traced request, then open Traces and turn on Errors only.

    Check your config with the OTLP endpoint tester
Paste into your coding agent
Install Squasher for this project. If Squasher skills or MCP are not configured in this agent environment, run `bash <(curl -fsSL https://squasher.ai/install.sh) --agents -y`. Then read https://skills.squasher.ai/squasher-onboard/SKILL.md, map every runnable app/service/worker/frontend/agent in the repo, choose the matching Squasher SDK, log drain, OTLP, or Agent SDK path, initialize with SQUASHER_API_KEY and SQUASHER_PROJECT_ID from environment variables, send one real verification event, and report the files changed plus the verification step. Do not hardcode or reveal real API keys.
bash <(curl -fsSL https://squasher.ai/install.sh) --agents -y

Already run a Collector? Add an exporter.

Add Squasher next to the backend you use today, and the same traces, logs, and metrics go to both.

  • Tail-sample in your Collector, before data leaves your network.
  • Translate Prometheus or Jaeger data to OTLP on the way.
  • Your processors, sampling, and other exporters stay as they are.
Tail sampling guide
otel-collector-config.yaml
1exporters:2  otlphttp/squasher:3    endpoint: https://ingest.squasher.ai4    headers:5      x-squasher-key: "${env:SQUASHER_API_KEY}"6 7service:8  pipelines:9    traces:10      exporters: [otlphttp/squasher]11    logs:12      exporters: [otlphttp/squasher]13    metrics:14      exporters: [otlphttp/squasher]

Add the exporter to the pipelines you already run. Your other exporters stay as they are.

From an error log to its trace.

Logs and spans that share a trace ID link both ways. A log opens its trace, and a trace lists its logs.

  • The Trace tab draws the waterfall for the log's trace ID.
  • Related logs lists every log from the same request.
  • The API and the MCP server return the same IDs to your agent.
Log search and alerts
app.squasher.ai/acme/checkout-api/logs

errorcheckout-api14:06:13.246

TypeError: Cannot read properties of undefined (reading 'amount')

trace 8a71b29c4f0e3d15… · 7 spans · 2.31 s

  1. POST /api/checkout2.31 s
  2. checkout.create2.27 s
  3. cart.load180 ms
  4. SELECT carts42 ms
  5. GET /prices1.87 s
  6. SELECT prices96 ms
  7. parseCurrency14 ms

Example project and data

What Squasher reads from your telemetry.

Standard resource and span attributes turn into filters and context, with no extra configuration.

  • service.name

    Becomes the service you filter traces and logs by.

  • deployment.environment.name

    Becomes the environment filter. Older attribute names still work.

  • service.version

    Becomes the release, so you can compare logs from before and after a deploy.

  • HTTP attributes

    Filter traces by HTTP method, status code, and root span, and by duration.

  • code.file.path

    Span details show the file and line where the span ran.

  • gen_ai.* attributes

    AI spans also land in AI observability, with the model and token counts.

Questions, answered.

Does Squasher support OpenTelemetry?

Yes. Squasher accepts OTLP over HTTP at https://ingest.squasher.ai: traces at /v1/traces, logs at /v1/logs, and metrics at /v1/metrics. Any OpenTelemetry SDK, agent, or Collector can send to it.

Does Squasher accept OTLP over gRPC?

No. Use OTLP over HTTP with protobuf or JSON. If your SDK defaults to gRPC, set OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf. In the Collector, use the otlphttp exporter.

How do I authenticate OTLP requests?

Send your project key in the x-squasher-key header, or as Authorization: Bearer. The key identifies the project, so you do not need a project ID header.

Do I need the OpenTelemetry Collector?

No. SDKs can export straight to Squasher. A Collector helps when you already route telemetry through one, want to send the same data to two backends, or want tail sampling before data leaves your network.

Which OpenTelemetry data becomes an error?

A span that ends with an ERROR status, and a log record at ERROR severity or higher, are recorded as errors. Every other span and log is stored as context you can search and follow by trace ID.

Which metric types does Squasher store?

Gauges, sums, histograms, and exponential histograms. Summary points are not stored. Query metrics through the Metrics API.

How long does Squasher keep traces and metrics?

Traces are kept for 7 days to 30 days, and metrics for 30 days to 13 months, depending on your plan. The log monitoring page lists every plan.

What happens when a request is rejected?

Squasher answers 429 when a project goes over its per-minute limit, and 5xx when it cannot accept data. Retry both with backoff; OpenTelemetry exporters do this by default. Delivery is at least once, so keep stable trace and span IDs.

Go squash some bugs.

Point one exporter at Squasher and watch your first trace arrive.

Free plan. No credit card required.