Maple is live · start your free trial
OpenTelemetry native

Open-source observability.
Built for you. Native to AI.

Traces, logs, and metrics on OpenTelemetry. Query billions of rows in milliseconds — or let your AI agent do it.

maple.dev
Service Map
Live dependencies
production live · 60s
edge
req/s 12.4k
err% 0.1%
avg 8ms
pods 6
checkout-api
req/s 4.2k
err% 0.3%
avg 24ms
pods 12
auth-svc
req/s 4.2k
err% 0.0%
avg 6ms
pods 8
pricing
req/s 2.8k
err% 2.4%
avg 142ms
pods 4
payments
req/s 1.1k
err% 0.5%
avg 38ms
pods
redis db
calls/s 18.2k
avg 2ms
postgres db
calls/s 6.4k
avg 14ms
Drag to arrange · scroll to zoom | Healthy Degraded Error
pricing · p99 +18% vs 1h ago
Overview
Dashboard
production Last 24h
Total Traces
24.3K
Total Logs
1.2M
Total Metrics
847K
Data Size
2.4GB
Request Volume
Error Rate
Latency
p50 p95 p99
Log Volume
Services
Services
Last 24h
ServiceEnvP50P95P99Throughput
api-gateway prod 12ms 45ms 120ms 1.2K/s
auth-service prod 8ms 22ms 67ms 890/s
order-service prod 34ms 89ms 234ms 456/s
payment-svc prod 56ms 145ms 380ms 234/s
notification-svc staging 5ms 15ms 42ms 120/s
inventory-svc prod 18ms 52ms 156ms 678/s
Traces
Traces
Last 24h
Trace IDRoot SpanServicesDurationSpansStatus
a3f8c1d2 POST /api/checkout api-gworder+2 203ms 8 Ok
b7e2f9a1 POST /api/payment paymentauth 1.2s 5 Error
c4d1e8b3 GET /api/products api-gwinventory 45ms 3 Ok
d9a3b5c7 POST /api/auth/login auth 89ms 4 Ok
e2f6a8d4 GET /api/users/me api-gwauth 23ms 2 Ok
f1c5d7e9 PUT /api/orders/confirm ordernotify 156ms 6 Ok
Logs
Logs
Last 1h
TimestampServiceLevelMessage
14:23:01.342 api-gateway INFO POST /api/checkout 200 203ms
14:23:01.298 order-service INFO Order created order_id=ord_8f3a2c
14:23:01.245 payment-svc WARN Retry attempt 2/3 for charge txn_9d1e
14:22:58.891 payment-svc ERROR Connection timeout to stripe after 5000ms
14:22:57.123 auth-service INFO Token validated user_id=usr_2f8a
14:22:56.445 api-gateway DEBUG Rate limit check passed ip=192.168.1.42
14:22:55.201 inventory-svc INFO Stock reserved sku=SKU-1234 qty=2
Metrics
Metrics
Last 6h
http.server.duration (p95)
6h agonow
http.server.request.count
6h agonow
process.runtime.memory
6h agonow
db.client.connections.active
6h agonow
01 · Sovereignty

Your data, your instrumentation, your bill.

Maple is the observability backend you'd build if you weren't trying to extract every dollar. OpenTelemetry in. ClickHouse-grade query speed out. The source on GitHub the whole time.

01 · Open source
Open-source under FSL-1.1. Read every line. Fork it. Self-host on your own boxes if that's what your security review needs.
02 · OpenTelemetry native
OTLP straight in. No proprietary agent. The instrumentation you write today moves to anywhere OTel-compatible tomorrow.
03 · Honest pricing
Pay for the gigabytes you send. No per-host fees. No per-seat fees. The same numbers your invoice shows.
02 · Trace

Read the trace, not the chart.

Every request ends up as a span tree with attributes you can actually inspect. Hover any row in this trace to see what was on it.

trace 9f3c · order fetch LIVE
edge GET /api/orders/8421 412ms
orders-api load_order 366ms
auth verify_jwt 38ms
orders-api fetch_line_items 184ms
postgres SELECT * FROM line_items 158ms
shipping rate_quote 96ms
fedex-api POST /rates 72ms
redis SET order:8421:rate 14ms
8 spans · 412ms wall queried 12.8B rows in 198ms
logs · volume · last 5hLIVE
14.0K logsin selected range
4 severities · 60 buckets · 5m eachwarn cluster 11:10–11:40 · error blip 11:50
logs · stream LIVE
12:04:18 INFO edge GET /api/orders/8421 200 412ms
12:04:18 INFO orders-api load_order order_id=8421 366ms
12:04:18 DEBUG auth verify_jwt iss=auth.maple.dev 38ms
12:04:18 INFO postgres SELECT line_items rows=12 158ms
12:04:18 INFO shipping rate_quote carrier=ups 96ms
12:04:18 WARN fedex-api POST /rates retried (1/3) 72ms
12:04:18 INFO redis SET order:8421:rate ttl=3600 14ms
12:04:19 INFO edge GET /api/cart 200 94ms
12:04:19 INFO cart-svc load_cart user=u_4109 58ms
12:04:19 DEBUG feature-flag evaluate fast_checkout=false
12:04:19 ERROR payments stripe.charge declined card=v•••4242 204ms
12:04:19 WARN payments fallback to authorize_only flow
12:04:19 INFO kafka produce orders.canceled offset=98041
12:04:20 INFO edge POST /webhooks/stripe 200 26ms
12:04:20 INFO events dispatch payment.failed → ops
12:04:20 DEBUG scheduler reschedule retry_at=12:04:25
12:04:20 INFO edge GET /api/inventory 200 41ms
12:04:20 INFO inventory lookup sku=SKU-9081 region=iad 23ms
12:04:20 WARN inventory stock low sku=SKU-9081 qty=3
12:04:21 INFO search query "red shoes" hits=412 82ms
12:04:21 INFO edge GET /api/recos 200 67ms
12:04:21 DEBUG recos model=v3.2 cohort=A2
12:04:21 INFO edge POST /api/feedback 201 18ms
12:04:21 INFO analytics track event=checkout_started
12:04:18 INFO edge GET /api/orders/8421 200 412ms
12:04:18 INFO orders-api load_order order_id=8421 366ms
12:04:18 DEBUG auth verify_jwt iss=auth.maple.dev 38ms
12:04:18 INFO postgres SELECT line_items rows=12 158ms
12:04:18 INFO shipping rate_quote carrier=ups 96ms
12:04:18 WARN fedex-api POST /rates retried (1/3) 72ms
12:04:18 INFO redis SET order:8421:rate ttl=3600 14ms
12:04:19 INFO edge GET /api/cart 200 94ms
12:04:19 INFO cart-svc load_cart user=u_4109 58ms
12:04:19 DEBUG feature-flag evaluate fast_checkout=false
12:04:19 ERROR payments stripe.charge declined card=v•••4242 204ms
12:04:19 WARN payments fallback to authorize_only flow
12:04:19 INFO kafka produce orders.canceled offset=98041
12:04:20 INFO edge POST /webhooks/stripe 200 26ms
12:04:20 INFO events dispatch payment.failed → ops
12:04:20 DEBUG scheduler reschedule retry_at=12:04:25
12:04:20 INFO edge GET /api/inventory 200 41ms
12:04:20 INFO inventory lookup sku=SKU-9081 region=iad 23ms
12:04:20 WARN inventory stock low sku=SKU-9081 qty=3
12:04:21 INFO search query "red shoes" hits=412 82ms
12:04:21 INFO edge GET /api/recos 200 67ms
12:04:21 DEBUG recos model=v3.2 cohort=A2
12:04:21 INFO edge POST /api/feedback 201 18ms
12:04:21 INFO analytics track event=checkout_started
14.2k events / minute retention 30d · structured
03 · Logs

A log feed that doesn't crater your bill at scale.

Structured logs streamed straight from OTLP. Severity, service, message, duration. Searchable in seconds, retained for the window you actually care about.

service map · last 60s LIVE
2.8k req/s edge req/s 12.4k err% 0.1% avg 8ms checkout-api req/s 4.2k err% 0.3% avg 24ms cart-svc req/s 8.1k err% 0.1% avg 18ms auth-svc req/s 4.2k err% 0.0% avg 6ms pricing req/s 2.8k err% 2.4% avg 142ms payments req/s 1.1k err% 0.5% avg 38ms redis DB calls/s 18.2k avg 2ms postgres DB calls/s 6.4k avg 14ms
8 services · 8 edges · 60s window pricing-svc · p99 +18% vs 1h ago
04 · Service map

See dependencies move.

Live request flow across your services. Hot services light up. The cascade you'd otherwise reconstruct from a postmortem is right here in the foreground.

05 · Agents

Your AI agent reads it too.

Maple ships with a first-class MCP server. Any compatible agent can list services, search traces, find errors, propose fixes, open PRs. The transcript on the right is real.

mcp · agent session LIVE
> ask maple
list services that errored in the last 15m
→ list_services { window: "15m", filter: "errors > 0" }
← 3 services
paymentserrors142p992.4s recoserrors38p99840ms shippingerrors6p99320ms
> investigate payments
→ find_errors { service: "payments", window: "15m" }
← 1 issue
stripe.charge declined  ·  142 events  ·  98 users
→ error_detail { issue_id: "iss_8a91" }
← root cause: idempotency key collision
sample trace: trace_9f3c · order 8421
→ propose_fix { issue: "iss_8a91", fix: "scope idempotency_key by user_id" }
← fix attached. opened pr#412.
5 tool calls · 4.2s open mcp protocol
06 · Sessions

Watch what the user did.

Session replay with every click, route, console line, and failed request captured. Replay and your spans share one session id — so you jump from the moment it broke straight to the trace behind it.

replay · checkout flow LIVE
app.acme.com/checkout Chrome macOS Desktop
trace ↳ 9f3c · POST /api/pay 1.24s · 5 spans
edge 1.24s
api 180ms
payment-svc 880ms
stripe 690ms
postgres 85ms
1 session · 9 events · 2 errors trace-linked · 30d retention
07 · Kubernetes

The pod underneath the slow span.

Drop a Helm chart on your cluster. Kubelet, host, and kube-state metrics start flowing in. Every span your apps emit arrives carrying pod, node, and namespace, so a slow request lands you on the exact replica that served it.

pod heatmap · 192 pods · cluster cpu 44% LIVE
PODS 192
RUNNING 184
DEGRADED 6
FAILING 2
HOT >78% 11
default 72
observability 32
kube-system 40
ingress-nginx 24
data 24
CPU
0% 100% degraded failing

Helm chart, not a black box

maple-k8s-infra is a small Helm chart you can read end-to-end. Kubelet stats per pod, host metrics per node, kube-state metrics across the cluster. OTLP receivers on every node for your apps.

Pod and span, joined

Spans arrive carrying k8s.pod.name, k8s.node.name, and k8s.namespace.name. Drill from a slow trace straight to the pod and node that ran it.

Kube-state metrics

Deployments, StatefulSets, DaemonSets, replica counts, and pod phase, all scraped via the standard kube-state-metrics exporter.

07 · The bill

We told you it was honest.

Side-by-side, line-item. The questions your finance team will ask, answered before they have to ask.

Line item Maple Datadog New Relic Grafana Cloud
Per-host fee None $15+ / host / mo Bundled in plan Bundled in plan
Per-seat fee None Enterprise tier $99 / full-user / mo $8+ / active-user / mo
Ingest pricing $0.30 / GB ingested $1.27 / M events $0.30 / GB $0.50 / M lines
Default retention 30d default · custom 15d default 30d default 14d default
OpenTelemetry support Native Partial (custom agent) Yes Yes
License FSL-1.1 Proprietary Proprietary AGPL components
Self-host option Supported No No OSS components
MCP / agent surface First-class No No No

Competitor numbers are public list prices summarized for comparison. Maple ingest rate is the published flat per-GB. See the calculator for projected monthly cost on your volume.

FAQ

Frequently asked questions

What is Maple?
Maple is an observability platform for traces, logs, and metrics, built on OpenTelemetry and backed by ClickHouse. It lets you collect, visualize, and query telemetry from distributed systems in real time — or let an AI agent do it for you over MCP.
Is Maple open source?
Maple's source is available under the Functional Source License (FSL-1.1) — you can read every line, fork it, and self-host. Under FSL the code converts to Apache 2.0 over time. You own your data and your instrumentation, and you can run Maple yourself or use the hosted version.
Is Maple OpenTelemetry-native?
Yes. Maple is built on OpenTelemetry — the open, vendor-neutral standard for telemetry — so there are no proprietary agents and no lock-in. If you already emit OpenTelemetry data, you can point it at Maple without re-instrumenting your code.
How is Maple priced?
Maple uses transparent, usage-based pricing — no per-host or per-seat fees. You pay for the data you ingest and the retention window you choose.
Does Maple work with AI agents?
Yes. Maple ships a first-class MCP (Model Context Protocol) server, so compatible AI agents can list services, search traces, find errors, and propose fixes directly against your telemetry.
08 · Start
Endpoint https://ingest.maple.dev Key maple_pk_••••••••

Pick your SDK. First trace in five minutes.

Drop a snippet into your app, paste your key, run. Six SDKs covered out of the box; any OTel-compatible runtime works.

01
Pick
02
Install
$ Install
npm install @opentelemetry/sdk-node \
  @opentelemetry/auto-instrumentations-node \
  @opentelemetry/exporter-trace-otlp-http \
  @opentelemetry/exporter-logs-otlp-http
03
Instrument
tracing.ts
// tracing.ts — run with: node --import ./tracing.ts app.ts
import { NodeSDK } from "@opentelemetry/sdk-node";
import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-http";
import { SimpleLogRecordProcessor } from "@opentelemetry/sdk-logs";

const sdk = new NodeSDK({
  traceExporter: new OTLPTraceExporter({
    url: "https://ingest.maple.dev/v1/traces",
    headers: { Authorization: "Bearer maple_pk_••••••••" },
  }),
  logRecordProcessors: [
    new SimpleLogRecordProcessor(
      new OTLPLogExporter({
        url: "https://ingest.maple.dev/v1/logs",
        headers: { Authorization: "Bearer maple_pk_••••••••" },
      })
    ),
  ],
  instrumentations: [getNodeAutoInstrumentations()],
});

sdk.start();

Java, Rust, .NET, Ruby — anything that speaks OTLP works. The custom tab shows the env-var-only setup.

Run it yourself.

14-day trial on Starter. Self-host is supported. The dashboard ships with the same live waterfall you just watched.