# Arize Phoenix — per-trace agent waterfall / flamegraph viz. # https://github.com/Arize-ai/phoenix # # Picked over Langfuse for "show me one OpenCode turn as a tree": # - Single container vs Langfuse's six (Postgres+ClickHouse+Redis+MinIO+web+worker). # - First-class ingestion of Vercel AI SDK spans (which is what OpenCode # emits under the hood when experimental.openTelemetry=true). # - Best-in-class waterfall + agent-graph view for nested LLM/tool calls. # # Complements OpenLIT, doesn't replace it: OpenLIT is the fleet-metrics # layer (cost / tokens / latency aggregated across sessions). Phoenix is # the per-prompt debugger (see what one turn actually did). # # Bring-up: `docker compose up -d` — no first-run setup needed; UI prompts # for project name on first trace ingest. Storage is SQLite at /data. services: phoenix: image: arizephoenix/phoenix:latest container_name: phoenix restart: unless-stopped ports: # UI + OTLP/HTTP both ride on 6006 in Phoenix 15.x — HTTP traces go # to http://framework:6006/v1/traces. (Pre-15 had a separate 4318; # the consolidation happened in Phoenix v15.0.) - "6006:6006" # OTLP/gRPC stays separate. - "4317:4317" environment: PHOENIX_WORKING_DIR: /data # Phoenix listens on all interfaces by default; explicit for clarity. PHOENIX_HOST: 0.0.0.0 PHOENIX_PORT: "6006" PHOENIX_GRPC_PORT: "4317" volumes: - /srv/docker/phoenix/data:/data