Metric Charts for Experiments
July 28, 2026 Available in arize-phoenix 19.10.0+ The chart strip that sits above the spans, traces, and sessions tables now sits above the experiments table too. Pick up to three charts from the Charts menu and every chart plots the dataset’s seven most recent experiments side by side, so a regression shows up before you open a single run.- Chart catalog — annotation score comparison, run latency, cost, token usage, and error rate, plus a dedicated chart for each annotation name on the dataset. Annotation scores, latency, and cost are selected by default.
- Per-dataset selection — your chart choice and the strip’s height persist per dataset across reloads.
- Drag to reorder — charts in the Selected section of the Charts menu have a drag handle, so you can order the strip however you read it. This applies to the project table charts as well.
- Token charts break down by sub-type — token count and cost charts split prompt and completion
usage into a series per token type (
input/output,cache_read,cache_write,reasoning,audio) instead of showing one opaque total. - Breakdown bars in tooltips — cost and token tooltips on spans, traces, sessions, and experiments draw a proportional bar per token type alongside each value’s share of the total.
- Readable when narrow — chart panels keep their axes, legend, and titles legible as the strip is resized or the window shrinks (arize-phoenix 19.9.0+).
Experiments
Run and compare experiments over a dataset
Download Spans and Traces
July 27, 2026 Available in arize-phoenix 19.6.0+ (bulk downloads) and 19.7.0+ (span detail downloads) Take your traces with you. Select rows in the spans or traces table and download them, or grab a single span straight from its detail header.
- Bulk download — select spans or traces in a project table and export them as OTLP JSON
(an OTLP
resource_spansenvelope, ready to replay into any OTLP-compatible collector) or as JSONL in Phoenix’s span format. Choosing the traces scope pulls every span in each selected trace, not just the selected rows. - Span detail downloads — the span header has a download menu with Download span JSON, Download span OTLP JSON, and Download trace.
- Streamed and paginated — downloads page through the API and are assembled incrementally, so large selections don’t have to fit in one response.
Filter Spans by Span ID
July 24, 2026 Available in arize-phoenix 19.6.0+ (server), @arizeai/phoenix-client 7.1.0+ and @arizeai/phoenix-cli 1.11.0+ (TypeScript) Fetch exactly the spans you already have IDs for — no time-range guessing, no filter expression. Both span endpoints (/v1/projects/{project_identifier}/spans and .../spans/otlpv1) accept a
repeatable span_id query parameter.
--span-idonpx span listtakes one or more span IDs.--untilonpx span listandpx trace listsets an exclusive end timestamp, pairing with the existing--since.
client.spans.get_spans() gains the same span_ids argument in its next
release.
Root-Span Filtering in the Span Query DSL
July 27, 2026 Available in arize-phoenix 19.7.0+ Root-span scoping is now part of the filter expression instead of a separate flag, so it composes with everything else in the query. Two predicates are available, and they differ in how they treat orphans — spans that carry aparent_id whose parent is not in the database:
parent_span is None— matches spans with no parent span present, so orphans count as roots.parent_id is None— matches only spans that carry no parent pointer at all.
root_spans_only and orphan_span_as_root_span parameters on
get_spans_dataframe() and the span query endpoint are now deprecated in favor of the filter
predicates.
Extract Data from Spans
Query and export spans with the SpanQuery DSL
Span Detail as Searchable Tables
July 27, 2026 Available in arize-phoenix 19.7.0+ Reading a wide span used to mean scrolling through nested JSON. The span info tab now presents its data as tables you can search and scan.- Attributes as a searchable table — flattened key/value rows with a search field and a count of every attribute on the span (the count reflects the span, not the current search).
- Annotations and notes as tables — sortable, resizable tables with annotator kind, value, author, and timestamp, and a delete action per row.
- Collapse or expand every section at once — one control in the span info tab flips all cards, so you can take in the shape of a span without scrolling. Individual cards stay independent afterward.
- Clip or wrap rows — the spans, traces, sessions, and experiments tables get a toggle that either clips each row to a single line for even scanning or wraps each row over as many lines as its content needs.
Toxicity Evaluator
July 23, 2026 Available in arize-phoenix-evals 3.3.0+ (Python) and @arizeai/phoenix-evals 2.1.0+ (TypeScript) A new built-in classification evaluator labels a single piece of texttoxic or non-toxic —
hateful or discriminatory statements, demeaning insults, abusive language directed at a person, and
threats or incitement to harm. Because it judges one field on its own, the same evaluator works on
a model’s output or a user’s input; input mapping decides which.
direction: "minimize", so lower is better, plus the judge’s explanation.
Toxicity
Detect hateful, demeaning, abusive, or threatening text
Monty — a Local Restricted-Python Sandbox
July 28, 2026 Available in arize-phoenix 19.10.0+ Monty joins WebAssembly and Deno as a local sandbox provider in Settings → Sandboxes. It runs restricted Python in a pool of worker subprocesses on the Phoenix machine with memory and recursion limits, so simple code evaluators start in milliseconds and need no third-party credentials.
- Local, like WebAssembly and Deno — no environment variables, outbound network, or third-party dependencies. Use a hosted sandbox when an evaluator needs any of those.
- Shared runtime — one worker pool serves code evaluators, evaluator validation, and MCP code mode, and enforces per-execution deadlines and bounded output capture.
- Optional dependency — the provider reports as unavailable until
pydantic-montyis installed in the server environment.
Sandboxes
Configure the sandbox providers that execute code evaluators
Claude Opus 5 and New Gemini Flash Models
July 27, 2026 Available in arize-phoenix 19.5.0+ (Gemini), 19.8.0+ (Claude Opus 5), @arizeai/phoenix-cli 1.13.0+- Claude Opus 5 is registered in the Playground for Anthropic and AWS Bedrock
(
anthropic.claude-opus-5), and appears in the PXI curated model list. - Gemini 3.6 Flash and Gemini 3.5 Flash-lite join the Google provider in the Playground.
- The
pxiterminal client defaults toclaude-opus-5— override with--modelas before. - Built-in token prices refreshed so cost tracking stays accurate for the current model lineup.
AI SDK v7 for the TypeScript SDKs
July 24, 2026 Breaking change in @arizeai/phoenix-client 7.0.0 and @arizeai/phoenix-evals 2.0.0 Following@arizeai/phoenix-otel 2.0.0, the TypeScript client and evals packages move to Vercel
AI SDK v7.
@arizeai/phoenix-client7.0.0 requires the optionalaipeer dependency at^7.0.0. AI SDK v7 no longer emits OpenTelemetry spans through the global tracer provider on its own, so to trace AI SDK calls inside an experiment task, pass the@ai-sdk/otelintegration per call, constructed inside the task:
- Evaluators from
@arizeai/phoenix-evalsare traced automatically and need no setup. Core client APIs keep Node.js 18 compatibility; AI SDK v7-backed features require the Node.js version AI SDK v7 supports. Type-checking the published declarations now requires TypeScript >= 5.3. @arizeai/phoenix-evals2.0.0 emits evaluator spans under the OpenTelemetrygen_ai.*conventions from@ai-sdk/otelinstead of the AI SDK v6ai.*span format, and requires Node.js >= 22.12. Thetelemetry.tracerandtelemetry.isEnabledoptions are unchanged.@arizeai/phoenix-otel2.1.0 re-exportsOTLPTraceExporterfrom the package root and adds an ESM-only@arizeai/phoenix-otel/vercelsubpath re-exporting@arizeai/openinference-vercel, so custom span-processor setups no longer need to install the underlying packages:
Also in This Release
July 23–28, 2026 Available in arize-phoenix 19.5.0–19.10.0 and @arizeai/phoenix-cli 1.12.0+- Dataset example provenance over REST — dataset examples created from a span now return a
sourceobject with the originatingspan_idandspan_node_id, so you can walk from an example back to the trace it came from (arize-phoenix 19.5.0+). - Retention policy project management — a retention policy’s projects are shown as a filterable token list, with a searchable picker for adding projects and a remove action on each token; removed projects fall back to the default policy (arize-phoenix 19.7.0+).
- Annotation metrics time series in GraphQL —
spanAnnotationMetricsTimeSeries,traceAnnotationMetricsTimeSeries, andsessionAnnotationMetricsTimeSeriesonProjectreturn annotation summaries bucketed over a time range (arize-phoenix 19.5.0+). - pytest plugin metadata — the
@pytest.mark.phoenixmarker acceptsexperiment_descriptionandexperiment_metadata, the plugin records the current commit asgit_shawhen it runs inside a Git checkout, and evaluator spans are traced through their own pipeline so they no longer mix with task spans (arize-phoenix 19.7.0+). px project list --name-contains— a case-insensitive name filter for the project listing (@arizeai/phoenix-cli 1.12.0+).- Invalid span MIME types fall back to text instead of breaking the span view, and PXI API key errors surface to the user rather than being swallowed (arize-phoenix 19.8.0+).

