Example
Arize Phoenix — trace an LLM call (self-hosted)

A real, runnable mini-project. Download it and run with Docker.

June 28, 2026

Arize Phoenix — trace an LLM call (self-hosted)

A tiny Phoenix demo: the bundled docker-compose runs a Phoenix server, and the app registers OpenTelemetry tracing, makes one LiteLLM call (auto-instrumented), then queries Phoenix for the spans — proving the round trip, not just that the call didn't error.

Configure

cd samples/arize-phoenix_1
cp .env.sample .env
# edit .env: set ANTHROPIC_API_KEY (for the call being traced)

Phoenix itself needs no key; you only provide the model key. .env is gitignored — only .env.sample is committed.

Run with Docker Compose

cd samples/arize-phoenix_1
docker compose up --build

The app waits for Phoenix, makes the traced call, and prints the spans it read back. Browse them in the UI at http://localhost:6006. Tear down when done:

docker compose down -v

Run with Docker Compose (in a devcontainer with DooD)

In a dev container that talks to the host Docker daemon (Docker-outside-of-Docker), the attached docker compose up may print nothing for the app even though it ran — the live attached stream drops output over the VM boundary. Run detached and read it back from the logs:

cd samples/arize-phoenix_1
docker compose up --build -d
docker compose logs -f app
docker compose down -v

Notes

  • The traced call goes through LiteLLM, so MODEL (in docker-compose.yml) can be any provider — change it and set the matching key.
  • To trace into Phoenix Cloud instead, point PHOENIX_COLLECTOR_ENDPOINT at it and skip the bundled server.

Example run

The model's wording varies by run (LLMs are non-deterministic); what's shown is the trace round-trip. Below is one run with anthropic/claude-opus-4-8.

model says: Arize Phoenix is an open-source observability and evaluation platform
for tracing, monitoring, and debugging LLM and AI applications.

reading spans back from Phoenix ...
  traced 1 span(s): ['completion']
  UI: http://localhost:6006

Files

.env.sample
# Copy this file to `.env` and add your Anthropic key.
#   cp .env.sample .env
#
# Phoenix itself needs no key; this is the model key for the call being traced.
ANTHROPIC_API_KEY=