Langfuse
32,617 GitHub stars · checked 2026-08-06OpenTelemetry-based tracing and prompt management, with an organization layer above projects.
Comparison
We compared seven open-source and source-available platforms for prompt management, LLM gateways, tracing, and evaluation. We self-hosted each one and ran the same prompt through it. This page shows how each one handles prompts, tools, teams, audit logs, and licensing.
Every platform here is an LLM gateway, an observability tool, or both. A gateway sits in the request path, so it can route, cache, and cap spending before a call reaches the provider. An observability tool records the calls your own client already makes, so you can trace and evaluate them afterwards. AcruxCore, MLflow, and Helicone are both. Langfuse, Phoenix, Opik, and Laminar only observe.
AcruxCore is the only platform in this comparison where you define the tools a model can call, version them, and let the gateway run them. Each tool has its own version history, so you can add, change, or roll back a tool without deploying application code. AcruxCore is also the only platform here whose audit trail needs no paid plan. Hosted or self-hosted, every change anyone makes is recorded with their name. Langfuse has the largest community and an organization layer above projects. MLflow has a prompt registry, tracing, and a gateway, and many teams already run it for classic ML. Opik is built around datasets, experiments, and online scoring rules. Laminar traces agent runs, with SQL over spans and three workspace roles. AcruxCore has the smallest community here, a single team layer with no organization above it, and one role per member.
How to choose
An LLM gateway controls requests before they reach a provider. An observability tool records traces so you can inspect what happened. AcruxCore, MLflow’s gateway, and Helicone sit in the request path and act as a proxy. There they can route a call, cache it, check a budget, and hold the provider key. Langfuse, Phoenix, Opik, and Laminar collect traces without sitting in the request path, so they add no proxy.
In AcruxCore you define a tool once, keep every version of it, and the gateway runs it when the model calls it. So the tool the model sees and the code that ran are always the same version. You can add a tool, change it, or roll it back without deploying application code. No other platform in this comparison keeps versions of a tool and also runs it. Langfuse saves a tool schema in its playground, but does not version it or run it. Laminar stores tool schemas inside playground entries. Phoenix, Opik, and Helicone have no tool catalog. MLflow catalogs whole MCP servers rather than individual tools. In the MLflow workflow we tested, a single tool had no version history, and nothing ran the call.
Every platform here except Laminar has a prompt registry, so you can change a prompt without redeploying code. The registries differ in templating. AcruxCore and MLflow support Jinja2 conditionals and loops, so a prompt can branch on its inputs. Langfuse, Phoenix, Opik, and Helicone substitute variables only, and any branching logic stays in your application code. Laminar’s playground had no prompt versions, aliases, or variables.
AcruxCore has members, invites, and roles inside a single team, with nothing above it, and one role per member. In the self-hosted versions we tested, Langfuse and Laminar had an organization or workspace layer above projects. Laminar had three workspace roles. Phoenix, Opik, and MLflow had no team, member, or invite management, and MLflow had no login screen. Helicone had one organization tier and no role field in its invite dialog.
Yes, in AcruxCore, and it costs nothing extra. Every prompt and every tool keeps its own change history. Owners and admins also see one audit trail for the whole team in the dashboard. That trail records 39 event types across eight areas: prompts, tools, members and invites, API keys, gateway credentials and budgets, secrets, evaluations, and trace settings. You can filter the trail by area, by one event type, or by person. Entries stay in the trail after the person who made them leaves the team, so you can still filter by that person. The trail is on by default, whether hosted or self-hosted, with nothing to pay and nothing to switch on. Of the other six platforms, Langfuse is the only one where we found an audit log, and that log needs the top paid plan even if you self-host. For Phoenix, Opik, Helicone, MLflow and Laminar we found no activity audit option in the platform.
AcruxCore labels end-user feedback and developer notes separately, and both can be added to a dataset of test cases. Experiments run those cases against different prompt versions and models so you can compare the results. Automated rules score live traffic as it arrives. The optimizer uses a large language model to propose rewrites and tests them on the same cases as your production prompt. You can edit the prompt that instructs the optimizer, so the rewrites follow your own rules for a good prompt. Promoting a better rewrite creates a numbered version and moves the alias, so your app picks it up without a deployment. Opik and MLflow also have optimizers, with more algorithms than AcruxCore. Both run from the SDK only and cannot be started from the UI. Langfuse, Phoenix, and Helicone have no optimizer in the product, and Laminar has no stored prompt to optimize.
Opik, Helicone, MLflow, Laminar, and AcruxCore are Apache 2.0, with no folder under a separate paid license. Langfuse has an MIT-licensed core and one folder under an enterprise license. Its audit log needs the top paid plan even if you self-host. Phoenix uses Elastic License 2.0, which is source-available rather than OSI-approved open source.
The platforms
Competitors are listed by community size, with AcruxCore last. The order is not a ranking. Each card shows the date we checked it. The comparison matrix links every claim to the platform’s own documentation.
OpenTelemetry-based tracing and prompt management, with an organization layer above projects.
The open-source ML and GenAI platform, with a prompt registry, tracing, evaluation, and its own request-path AI Gateway.
Observability from Comet, built around datasets, experiments, and online scoring rules.
Arize's tracing and evaluation, running on your own machine inside a notebook.
A request-path proxy with per-user metrics. It has been in maintenance mode since Mintlify acquired it.
Observability for agent runs, built in Rust on ClickHouse. Laminar has SQL over spans, LLM-watched Signals, and a CLI made for coding agents.
A gateway in the request path, and tools that are defined, versioned, and run in the same place.
Methodology
We tested the same example prompt across all seven platforms, including AcruxCore, and self-hosted each where supported. The linked reviews include screenshots from these hands-on tests.
A feature marked as absent means we did not find it. We looked in the version we ran and in the sources linked from the comparison matrix. Platforms change, so each finding carries the date we checked it.
AcruxCore’s gateway added about 42 ms per call compared with calling OpenAI directly. The confidence interval is +17 ms to +81 ms. The gateway latency benchmark has the full distribution, the tail latencies, and the scripts to rerun it.
AcruxCore publishes this comparison. Every claim about a competitor links to that competitor’s own documentation, with the date we checked it.
The comparison matrix puts every platform side by side, row by row, with a source for each cell. The hands-on review of nine platforms has the screenshots from each test. The FAQ says which teams AcruxCore fits and which should pick something else.