Comparing with Langfuse

LLM tracing and evaluations, tied to what reaches production.

EUVYRA traces and evaluates LLM applications like a dedicated observability tool, and connects the results to a release process: the gateway serves a prompt or model only after it passed its evaluation gate and its approvals.

Statements about Langfuse are taken from Langfuse's own pages, checked on 13 November 2026. Sources

Langfuse today

  • Langfuse is open source. Outside its enterprise folders, the code is under the MIT licence, and Langfuse can be self-hosted with Docker; some add-on features require a licence key.
  • On 16 January 2026, Langfuse announced that ClickHouse had acquired it, and stated that there were no planned changes to licensing.

Langfuse and EUVYRA overlap in tracing, evaluation and prompt management. EUVYRA is broader: it also covers training, model serving, an AI gateway and AI governance, which matters if you want one set of records from the experiment to the audit.

Your LLM engineering work in EUVYRA

Typical LLM observability work and where it lives in EUVYRA
What you doIn EUVYRA
Trace LLM calls, agents and retrievalTraces with nested spans of kinds such as llm, retrieval, tool, agent and guardrail, from the SDK or OpenTelemetry
Track users and sessionsUser and session ids per trace; user ids are pseudonymized on arrival
Track cost and latencyTokens, cost from your price list, latency and time to first token per span
Manage promptsVersioned prompts with labels and diffs; the production label moves only when an approved release is deployed
Run evaluations on datasetsVersioned datasets and test suites with built-in evaluators and LLM judges on approved EU endpoints, and gates for CI
Have people score outputsAnnotation queues with a rubric, and blind pairwise review
Try prompts against modelsA playground that runs one prompt against up to four models side by side
A trace of a customer support agent in EUVYRA: a waterfall of retrieval, model and tool spans with token counts and cost.

What EUVYRA adds around it

  • A gateway with a gate

    Applications call an AI system by name, and the gateway answers only with a release that passed its evaluation and approvals. Canary and shadow releases split or mirror traffic.

  • Approvals by function

    Engineering, data protection and compliance sign in sequence, and nobody approves their own release. API keys and AI assistants cannot approve.

  • AI Act evidence

    Risk classification, controls checked against traces and evaluations, incident clocks and signed evidence packages per AI system.

  • Redaction before it leaves

    Personal data is masked in the SDK, again on the server, and in gateway requests before they reach a model provider.

  • Models on your GPUs

    vLLM, llama.cpp or any container on your own hardware, with autoscaling, next to EU model providers behind the same gateway.

  • Training too

    Fine-tuning runs, sweeps and jobs live in the same installation, so a model version links back to its training data.

How to move

There is no importer for Langfuse data. Start sending new traces to EUVYRA, move prompts and test datasets, and keep the old traces where they are until their retention ends.

  1. Send traces

    If your application emits OpenTelemetry spans with the GenAI semantic conventions or OpenInference attributes, point the exporter at EUVYRA. Otherwise use the SDK's decorators.

    export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://euvyra.example.eu/api/otlp/v1/traces
    export OTEL_EXPORTER_OTLP_TRACES_HEADERS=Authorization=Bearer%20euv_...
  2. Move prompts

    Create each prompt as a version in EUVYRA. Labels such as staging can be set here; production follows your release process.

    import euvyra
    
    euvyra.create_prompt_version(
        "support-answer",
        [{"role": "system", "content": "Help {{customer}} with {{topic}}."}],
        project="support-bot",
        labels=["staging"],
    )
  3. Move test datasets

    Items are dictionaries with input, expected and optional metadata, or pairs of input and expected output.

    items = [{"input": row["input"], "expected": row["expected"]} for row in rows]
    euvyra.create_dataset("support-bot", "support-regression", items)
  4. Route calls through the gateway

    Optional, but this is where the approval gate takes effect: change the OpenAI client's base URL to EUVYRA and use the AI system's name as the model.

Questions about moving from Langfuse

Can we import our existing Langfuse traces?

Not today. Teams usually send new traces to EUVYRA and keep the old ones in Langfuse until they are no longer needed.

Do we have to use the EUVYRA gateway?

No. Tracing, evaluations and prompts work without it. The gateway is what turns an approval into a technical control, because it only serves approved releases.

Which evaluators are built in?

Server-side evaluators for correctness, groundedness, PII leakage, refusal, bias and robustness consistency, LLM judges on approved EU endpoints, and more. The server scores every output, so every number a gate depends on comes from the same code.