# Share an Arize Phoenix Trace or Eval — Publish It Instead of Screen Sharing

Canonical: https://commareports.com/agents/share-phoenix-trace-report
Published: 2026-09-12

> Phoenix runs on localhost:6006 and dies with the notebook. Export the trace or eval table to HTML and publish it to Comma so the spans someone needs to see survive at a URL.

# Share an Arize Phoenix trace or eval

Phoenix is a local-first tool and that is mostly a feature: `px.launch_app()`,
a browser tab, spans appearing as your chain runs. The cost shows up the moment
someone else needs to look — the app is on `localhost:6006`, and the only
sharing mechanism is a call where you drive the mouse.

## Export the spans

```python
import phoenix as px

client = px.Client()
spans = client.get_spans_dataframe()

cols = ["name", "span_kind", "status_code", "latency_ms",
        "attributes.input.value", "attributes.output.value"]
spans[cols].sort_values("latency_ms", ascending=False).to_html(
    "phoenix-spans.html", index=False, escape=True
)
```

Eval output is the same shape:

```python
from phoenix.evals import llm_classify

evals = llm_classify(dataframe=df, template=HALLUCINATION_PROMPT, model=model,
                     rails=["factual", "hallucinated"], provide_explanation=True)
evals.to_html("phoenix-evals.html", index=False, escape=True)
```

Drag either file into [the app](https://commareports.com/), or publish from a
job:

```bash
curl -fsS -X PATCH "https://commareports.com/api/v1/reports/$REPORT_ID" \
  -H "Authorization: Bearer $COMMA_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d "$(jq -n --rawfile html phoenix-evals.html \
        --arg title "Hallucination sweep — $(date +%F)" '{title: $title, html: $html}')"
```

## Why publish rather than re-run

The trace that mattered was produced by a specific input on a specific day. A
teammate re-running the chain gets a different trace, and the conversation
starts over. A published table is the same rows for everyone, with the
disagreement attached:

- **Anchored threads** — "this span is the one adding 4 seconds" sits on the
  row. See [commenting on HTML](/comment-on-html).
- **Revisions** — one report id per sweep; the URL keeps the history.
- **Access per report** — spans contain prompt and user text. Keep the report
  private, team-only, or domain-gated; see the [sharing model](/docs/sharing).

## Limits

- **Entry HTML: 5 MB.** Span input/output values are the bulk of it — truncate
  them, or export the slowest few hundred spans rather than all of them.
- **Assets: 25 MB per file, 250 MB and 500 files per report.**
- **60 requests/minute per token.**

## Try it

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

**[Publish a trace report →](https://commareports.com/)**

### Related

- [Share an LLM eval report](/agents/share-llm-eval-report) · [Share a Langfuse eval report](/agents/share-langfuse-eval-report)
- [Share a Ragas evaluation report](/agents/share-ragas-eval-report) · [Share a flamegraph](/share-flamegraph)
- [Share a pandas DataFrame as HTML](/share-pandas-dataframe-html) · [Context budgeting for AI reports](/agents/context-budgeting-ai-reports)
