Skip to main content
If a model was called, there’s a trace — and you can see what it cost.
The AI-coding-tool pipeline traces the IDEs. This is its sibling for the AI orchestration stack: n8n, Dify, LangFlow, and the agent code emit OpenTelemetry for every LLM call, and the same Cribl tier routes it — this time to two sinks.

Emitting traces — OpenLLMetry + OTEL GenAI

Apps are instrumented with OpenLLMetry (the Traceloop SDK), which wraps LLM providers, vector stores, and frameworks (LangChain, CrewAI) and emits spans following OpenTelemetry’s GenAI semantic conventions. Those conventions matured in 2026, so framework-native spans and SDK-emitted spans now line up on the same schema — prompt, completion, model, token counts, latency, cost. The spans leave the app over OTLP (gRPC 4317 / HTTP 4318) pointed at the collector, not at any one backend. Keeping the emit target on the pipeline — not the trace store — is what lets the same telemetry reach more than one place.

Cribl is the hub

A single collector tier owns ingest and fan-out. Cribl Edge runs native OpenTelemetry sources, one per signal type on its own port, so it can route by type without parsing payloads. From there it forks:
  • Langfuse gets the traces. It is the LLM-native view: trace waterfalls per request, token cost, prompt and completion inspection, plus datasets, evals, and prompt versioning.
  • Splunk gets everything, for archival and correlation with the rest of the homelab’s telemetry — the same indexer the AI-coding pipeline already feeds.
Apps never talk to a trace store directly, and they never reach across into the monitoring tier — they emit to the collector, and the collector decides where it goes. One ingest point, two sinks, no second collector to run.

Why Langfuse

CriterionLangfuse
LicenseMIT — self-host with no feature gates
IngestionNative OTLP, GenAI-convention aware
Built forLLM apps — traces, cost, evals, prompt management
FootprintWeb + worker + Postgres + ClickHouse + Redis + object storage
Laminar (Apache-2.0) is the runner-up — lighter, tilted toward long-running agent debugging. Arize Phoenix is capable but ships under the Elastic License, which gates self-host use.
Langfuse keeps its trace-of-record (relational + analytical) on durable local storage; its blob store points at the homelab object store. Backend choices like the vector store and model provider are made per tool, per that tool’s own standard — never by forcing a shared backend across unrelated stacks.

Where to go next

AI orchestration stack

The tools whose calls this pipeline traces.

Observability overview

The AI-coding-tool side of the same Cribl → Splunk spine.

ansible-proxmox-apps

Deploys Langfuse and the Cribl OTEL sources.

Local LLM

The models being traced.