EVERY REQUEST LEAVES A TRACE · EVERY TRACE HAS A SHAPE · STACKFRAME TURNS THE NOISE OF A THOUSAND SERVICES INTO ONE PICTURE YOU CAN READ AT 3 AM · LOGS METRICS TRACES PROFILES IN ONE QUERY · NO SAMPLING · NO DASHBOARD SPRAWL · NO SURPRISES ON THE INVOICE · SEE THE WHOLE STACK, FRAME BY FRAME

// ingesting 12,408 spans/s · p99 41 ms · 0 dropped
// 14-day trial · no card · otlp native

signals

One query. Every signal.

Logs, metrics, traces and profiles land in the same store with the same schema, so one line of SFQL answers the question you actually have — not the four questions your four tools can answer.

Logs

sf logs service=checkout level>=warn since=15m

Structured at ingest and indexed by every key. Nothing is sampled, nothing is dropped, nothing is "rehydrated" later.

Metrics

sf rate(http.errors) by route | top 5

Native histograms with exemplars, each one linked to the exact trace that produced the outlier.

Traces

sf trace where duration>2s and db.calls>40

Full-fidelity spans kept for 30 days. Tail-based retention decides what matters after the request finished, not before.

incident

Read an incident like a stack trace.

GET /checkout1 842 ms
auth.verify12 ms
cart.load41 ms
pricing.quote1 391 ms
pg: SELECT … FROM prices1 377 ms
inventory.reserve88 ms
payment.authorize210 ms

The frame that cost you 1.4 seconds is highlighted before you ask. Click it and Stackframe shows the query plan, the connection-pool wait and the deploy that changed the index.

pricing

Pay for bytes, not for seats.

$0.18per GB ingested

  • 30-day retention on every signal, included
  • Unlimited users, unlimited dashboards, unlimited alerts
  • OpenTelemetry native; agents licensed Apache-2.0
  • First 50 GB every month are free, forever