Skip to main content

Buyer guide

Phoenix Self-Hosting Checklist

Prepare Phoenix for shared production traffic. Review its license and access controls, then storage, retention, capacity, and upgrades, including air-gapped operation.

Reading time
4 min read
Sources
24 cited
In this piece
Arize+26 Positive

Self-host Phoenix when traces must stay in your network and your team can run the database, sign-in, and upgrades. The software is free with every feature included, and all of the operating work falls to you. Settle the license, storage, access, retention, scale, and upgrade plan before a shared instance takes production traffic. Move to Arize AX when you need SAML SSO, separate access per team, or managed alerts.

When you need this

  • A team wants traces and evals without sending prompts or customer data to a vendor.
  • A Phoenix instance that started on a laptop is about to serve several teams or environments.
  • Legal or security must approve the license and the data path before rollout.

Evaluation criteria

  1. License review

    Does the Elastic License 2.0 fit your policy?

    Look forPhoenix's Elastic License 2.0 allows free self-hosting on your own infrastructure or cloud account, with no feature gates. It forbids offering Phoenix to third parties as a hosted or managed service. Arize calls Phoenix open source, and ELv2 is not on the Open Source Initiative's approved list, so check it against your policy. The client library carries a separate license. After a contributor asked in 2025, Arize moved arize-phoenix-client to Apache-2.0 in November 2025.

  2. Storage

    Where do traces persist?

    Look forUse PostgreSQL 14 or later for a shared instance. The default SQLite database lives in the working directory, so a container stopped without a volume loses its traces. Phoenix runs as one container beside PostgreSQL. One developer measured it at about 400 MiB, against 1,848 MiB for the four-container Langfuse v4 stack it replaced.

  3. Sign-in

    Who can open the instance?

    Look forTurn on authentication before you share Phoenix. With it off, anyone who can reach the container can use the UI and API. Set PHOENIX_ENABLE_AUTH and a secret. Connect OAuth2 through a provider such as Keycloak or Microsoft Entra ID, or use LDAP. Seed the admin account at deployment and test the identity provider. One team found Keycloak let users sign in regardless of role. Another hit an Entra ID configuration error.

  4. Access by team

    Can one instance serve several teams?

    Look forEach Phoenix instance is one tenant. The admin, member, and viewer roles apply to the whole instance, so a viewer sees every project. Per-project roles are on Arize's roadmap as Phoenix issue #11646, which was still open on October 25, 2026, and a maintainer confirmed in July 2026 that they will come to self-hosted Phoenix. Until they ship, give each team or environment its own instance with its own database or PostgreSQL schema. AX already has organizations and spaces with custom roles.

  5. Retention

    How long are traces kept?

    Look forPhoenix keeps data indefinitely by default. From Phoenix 9.0, set PHOENIX_DEFAULT_RETENTION_POLICY_DAYS or a per-project policy by age or trace count, which a cron schedule enforces. A policy covers a whole project, so traces that need longer retention belong in a project with a longer policy. Phoenix has moved traces between projects since August 2025, from the UI or its GraphQL API.

  6. Scale

    What happens at production volume?

    Look forSize PostgreSQL for your span volume and load-test your own queries. Users report slow attribute searches on Cloud SQL at about 100,000 interactions a day, and an Arize maintainer endorsed adding PostgreSQL indexes on the attributes you search. Other reports describe OpenShift deadlocks that lost traces and a connection pool exhausted by two replicas under sustained ingestion. Projects above 10,000 spans failed to load behind nginx, and large gRPC exports returned RESOURCE_EXHAUSTED. Phoenix scales by adding instances against one database. OpenTelemetry head or tail sampling cuts volume.

  7. Upgrades

    How do you take a new release safely?

    Look forPin the image version, as Arize recommends for production. Read the release notes and test database migrations on a copy. Arize lists each major version's required steps in MIGRATION.md. Version 13 removed the old evaluations endpoint and client, which broke direct REST calls. It also builds an index on span attributes at startup. Arize tells teams with PostgreSQL databases of hundreds of GiB to create that index concurrently before upgrading, because the migration can lock the table for a long time.

  8. Privacy and air gap

    What leaves the network?

    Look forSelf-hosted Phoenix keeps traces, evaluations, and datasets away from Arize. PHOENIX_TELEMETRY_ENABLED=false turns off web analytics. PHOENIX_ALLOW_EXTERNAL_RESOURCES=false stops its internet requests for air-gapped use. In September 2026 an Arize maintainer confirmed that pip install arize-phoenix[container,pg] is a supported offline install, and that the published arizephoenix/phoenix image bundles the evaluator runtimes and runs offline. Older releases tried to download a WASM binary at startup and timed out behind a firewall. Arize made the external-resources flag cover that download on October 1, 2026, so deploy a release that includes the fix.

  9. When to move to AX

    What would make managed Arize AX the better buy?

    Look forMove to AX when you need SAML SSO, access split by team, managed monitors and alerts, HIPAA, or a database Arize runs at your volume. Arize's migration skill moves traces, datasets, experiments, and stored eval results. Recreate evaluator definitions, prompts, and annotations in AX yourself.

Questions to ask vendors

  1. Has legal approved the Elastic License 2.0 for our use?
  2. Which database backs the instance, and who restores it?
  3. Which identity provider signs users in, and which roles can see production projects?
  4. What retention policy applies to each project?
  5. Who owns upgrades, and how do we test migrations?

Red flags

  • A shared instance on SQLite in a container with no persistent volume.
  • Authentication left off on an instance reachable from the company network.
  • Production and development traces in one instance that every viewer can read.
  • Upgrading to the latest image tag without reading the release notes.

Products in this piece

Sources

Official documentation
11
Public source
13
  1. Phoenix docs: LicenseOfficial documentationarize.com
  2. Arize Phoenix LICENSE (Elastic License 2.0)Official documentationgithub.com
  3. Phoenix docs: Self-hostingOfficial documentationarize.com
  4. Phoenix docs: ArchitectureOfficial documentationarize.com
  5. Phoenix docs: AuthenticationOfficial documentationarize.com
  6. Phoenix docs: Access control (RBAC)Official documentationarize.com
  7. Phoenix docs: Data retentionOfficial documentationarize.com
  8. Phoenix docs: PrivacyOfficial documentationarize.com
  9. Phoenix docs: Trace samplingOfficial documentationarize.com
  10. Phoenix docs: Arize Phoenix or Arize AXOfficial documentationarize.com
  11. Arize AX docs: Migrate from Phoenix to Arize AXOfficial documentationarize.com
  12. jordimo/infra pull request #15: standardise on Phoenix, keep Langfuse v4 as fallback (Aug 6, 2026)Public sourcegithub.com
  13. Phoenix issue #9890: Apache-2.0 relicensing for arize-phoenix-client (Oct 13, 2025)Public sourcegithub.com
  14. Phoenix issue #6685: authorization beyond authentication with Keycloak (Mar 5, 2025)Public sourcegithub.com
  15. Phoenix issue #10504: group-based multi-tenancy for data isolation (Dec 8, 2025)Public sourcegithub.com
  16. Phoenix issue #8537: copy or move traces between projects to keep them longer (Jul 11, 2025)Public sourcegithub.com
  17. Phoenix discussion #11233: slow attribute search at about 100,000 interactions a day (Feb 4, 2026)Public sourcegithub.com
  18. Phoenix issue #8879: PostgreSQL deadlocks and lost traces on OpenShift (Jul 31, 2025)Public sourcegithub.com
  19. Phoenix issue #12358: bulk inserter exhausts the connection pool under load (Mar 25, 2026)Public sourcegithub.com
  20. Phoenix issue #11243: projects with more than 10,000 spans fail to load (Feb 5, 2026)Public sourcegithub.com
  21. Phoenix issue #10021: RESOURCE_EXHAUSTED when exporting large traces (Oct 27, 2025)Public sourcegithub.com
  22. Phoenix discussion #11452: breaking changes in v13.0 (Feb 13, 2026)Public sourcegithub.com
  23. Phoenix discussion #16004: image dependencies for an air-gapped deployment (Sep 9, 2026)Public sourcegithub.com
  24. Phoenix issue #11646: Custom RBAC & Roles roadmap epic, open (opened Feb 20, 2026)Public sourcegithub.com