Langfuse — Quick Reference

Open-source LLM observability · work context · → Lesson 1

The "Lang" family — Build vs Observe (memorise this)

Four tools, two jobs. The shared prefix is a trap; they are not the same layer.

ToolLayerJobLicense
LangChainBUILDFramework to assemble LLM apps — chains, prompts, tools, RAG.MIT
LangGraphBUILDBuild stateful, cyclical agents as graphs (state machines). Part of the LangChain ecosystem.MIT
LangSmithOBSERVETrace/eval platform, native to LangChain/LangGraph. Closed source.Proprietary
LangfuseOBSERVETrace/eval platform, framework-agnostic. Works with any stack.MIT core
Rule of thumb: LangChain/LangGraph = how you BUILD the app. LangSmith/Langfuse = how you OBSERVE it. Langfuse competes with LangSmith, not with LangChain.

Langfuse vs LangSmith (mid-2026, grounded)

DimensionLangfuseLangSmith
LicenseMIT core (+ /ee enterprise folders)Closed source
Self-hostFree, first-class, ~full parityEnterprise plan only (paid contract)
Framework fitFramework-agnostic (100+ integrations)LangChain/LangGraph-native (zero-setup)
OpenTelemetryNative — SDKs built on OTelIngests + exports OTel, but tuned for native SDK
Pricing modelPer unit (trace/observation/score)Per trace + per seat
Free tier50k units/mo5k traces/mo, 1 seat
≈ Cost @ 1M events/mo~$101 (Core, unlimited users)~$2,514 (1 seat, 14-day retention)
AlertingWebhooks only (no native paging)Native + PagerDuty
Backend data layerClickHouse + Postgres (open, SQL access)Proprietary / managed
Runs your agents?NoYes — managed LangGraph runtime
ClickHouse acquired Langfuse on 16 Jan 2026 and preserved the MIT license + free self-hosting. The same ClickHouse engine Langfuse already runs on now backs it directly — stability signal for self-hosters.

What Langfuse IS

What Langfuse is NOT (do not adopt it for these)

Go instrumentation — the practical path

There is no native Go SDK. Go integrates via OpenTelemetry — Langfuse is an OTel backend. Our shared HTTP library already injects OTel (otel.GetTextMapPropagator().Inject), so adding Langfuse is largely a config change: point the OTLP exporter at it.
import (
    "go.opentelemetry.io/otel"
    "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
    "go.opentelemetry.io/otel/sdk/trace"
)

exp, _ := otlptracehttp.New(ctx)        // reads OTEL_EXPORTER_OTLP_* env vars
tp := trace.NewTracerProvider(trace.WithBatcher(exp))
otel.SetTracerProvider(tp)
defer tp.Shutdown(ctx)                  // flush before exit or short-lived progs lose spans
Caveat for the rich LLM UI: plain OTel spans render as generic traces. To get the model/prompt/token/cost cards in Langfuse, spans must carry GenAI semantic-convention attributes (gen_ai.*). For Python/TS services, the native SDK / OpenAI drop-in wrapper does this for free.

Self-host footprint (v3 — 6 moving parts)

ComponentRole
Langfuse web + worker containersApp + async ingestion
PostgreSQLTransactional data (users, projects, config)
ClickHouseOLAP trace/observation/score store (the hot path)
Redis / ValkeyIngestion queue + cache
S3-compatible blobLarge payloads (prompt I/O bodies)
docker compose up for dev in ~5 min. Production = Kubernetes (Helm) or Terraform (AWS/Azure/GCP). Heavier than a single binary — if you can't operate ClickHouse, self-host is off the table.

License reality (the GitHub "NOASSERTION" scare)

GitHub shows "Other (NOASSERTION)" because of mixed licensing, not a red flag. Core = MIT. Enterprise code lives in clearly-marked /ee folders (SCIM, audit logs, data-retention policies, org creators, instance-mgmt API, UI customisation) — shipped as source, dormant unless a license key is provided. Everything product-facing (tracing, evals, prompt mgmt, playground, datasets, annotation) is MIT with no usage limits. Fork, modify, ship — even commercially.

Decision tree — should we use it?

1. Does the system make ANY LLM / GenAI call?
     NO  → Langfuse is useless here. Stop.
     YES → continue.

2. Must traces stay in our VPC, or do we want open source / $0 self-host?
     YES → Langfuse self-host. (ends the conversation)

3. Are we all-in on LangChain/LangGraph, AND want zero-setup tracing,
   native alerting, and a managed agent runtime?
     YES → LangSmith.
     NO  → Langfuse.

4. Mixed frameworks, or hedging framework bets?
     → Langfuse (OTel-native, portable).

Either way: instrument on OpenTelemetry → the backend stays an env-var swap away.

Pricing snapshot (verify before quoting — changes)

LangfuseLangSmith
Free50k units/mo, 2 users5k traces/mo, 1 seat
First paidCore $29/mo, 100k units, unlimited usersPlus $39/seat/mo, 10k traces
Overage$8 / 100k units (→$6 at 50M+)$2.50 / 1k traces (14-day)

Sources: langfuse.com/docs, github.com/langfuse/langfuse, open-source handbook, Langfuse LangSmith-alternative page, issue #9521 (license wording). Comparison figures cross-checked vs third-party writeups (mid-2026).