# Share a Langfuse Eval Result When Langfuse Is Self-Hosted

Canonical: https://commareports.com/agents/share-langfuse-eval-report
Published: 2026-09-02

> Self-hosted Langfuse is behind your VPN, which is why the reviewer who needs to score the outputs can't see them. Publish the scored table to a URL they can open and comment on.

# Share a Langfuse eval result

You self-host Langfuse for a good reason: the traces contain prompts, customer
messages and retrieved documents, and you would rather they never left your
network. That decision is correct and it has a consequence — the person whose
judgement you need is on the other side of the VPN.

The people who should be reading eval results are rarely the people with a
cluster login. The support lead who knows which answers are actually wrong. The
clinician, the lawyer, the domain expert you are paying for exactly this. The
exec who asked whether the model is good enough to ship. None of them are
getting a Langfuse project role, and none of them should need one.

So the results get exported to a spreadsheet, the spreadsheet gets emailed, and
the feedback comes back as row numbers in a reply-all.

## Publish the scored table, not the traces

Pull the dataset run out with the SDK, keep the columns a reviewer needs, and
publish:

```python
import os
import pandas as pd
import requests
from langfuse import Langfuse

lf = Langfuse()  # LANGFUSE_HOST points at your own install
run = lf.get_dataset_run(dataset_name="qa-golden-set", dataset_run_name="prompt-v7")

df = pd.DataFrame(
    [
        {
            "question": item.input["question"],
            "answer": item.output["answer"],
            "expected": item.expected_output["answer"],
            "score": next((s.value for s in item.scores if s.name == "correctness"), None),
        }
        for item in run.dataset_run_items
    ]
)

html = f"""<!doctype html><meta charset="utf-8">
<title>prompt-v7 — golden set</title>
<style>body{{font:15px/1.6 system-ui;margin:2rem;max-width:70rem}}
table{{border-collapse:collapse;width:100%}}
td,th{{border:1px solid #ddd;padding:.5rem;vertical-align:top}}</style>
<h1>prompt-v7 — golden set</h1>
<p>Mean correctness: {df["score"].mean():.2f} over {len(df)} examples.</p>
{df.to_html(index=False, escape=True)}"""

requests.patch(
    f"https://commareports.com/api/v1/reports/{os.environ['COMMA_REPORT_ID']}",
    headers={"Authorization": f"Bearer {os.environ['COMMA_API_TOKEN']}"},
    json={"title": "Golden set — prompt-v7", "html": html},
    timeout=30,
).raise_for_status()
```

Note what did not leave: the system prompt, the retrieved chunks, the spans,
the latency traces, every other dataset. The report is the four columns you
chose. Langfuse keeps everything else, on your cluster, where you put it.

## What the published copy adds

- **Reviewers outside the network.** Visibility is
  [private, team, domain-gated, or link](/docs/sharing), set per report — no
  VPN, no project role, no seat.
- **Judgement anchored to the example.** A reviewer highlights the generation
  and pins "this is confidently wrong about the refund window" to it. Those
  threads read back through the [API](/docs/api) or [MCP server](/mcp), so the
  labels can feed your next dataset — see
  [commenting on HTML](/comment-on-html).
- **One URL as the eval re-runs.** Revisions accumulate at the same address and
  any two can be diffed, which is how a regression gets dated.
- **A deliberate boundary.** Every field in the report is one you wrote into
  it — which is a stronger privacy story than "we gave them read access and
  hoped they only looked at the one project".

## Worth knowing

- **HTML body: 5 MB.** For a large eval, publish a sampled or aggregated view
  and attach the full export as an [asset](/docs/api) — 25 MB per file.
- **Scope the token to `reports:write`.** The eval job needs to publish, not to
  read your workspace back — see
  [scoped tokens for AI agents](/agents/scoped-tokens-for-ai-agents).
- **Nothing re-executes.** A published report is a snapshot; a
  [routine](/docs/routines) is what refreshes one nightly.

## Try it

Comma is free — unlimited reports, unlimited commenters, unlimited revision
history.

**[Create your first report →](https://commareports.com/)**

### Related

- [Share a LangSmith eval report](/agents/share-langsmith-eval-report) ·
  [Share an LLM eval report](/agents/share-llm-eval-report)
- [Share a promptfoo report](/share-promptfoo-report) ·
  [Share a deepchecks report](/share-deepchecks-report)
- [Daily Claude eval refresh](/features/routines/daily-claude-eval-refresh)
