> ## Documentation Index
> Fetch the complete documentation index at: https://arize-ax.mintlify.site/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrate from Phoenix to Arize AX

> Move historical Phoenix data and new application traces into Arize AX.

Move your historical Phoenix data and future application traces into Arize AX.

This keeps past and new observability data together in one AX space, where your team can investigate traces, manage datasets, and compare experiment results.

## What you can migrate

| Migrated by the coding-agent skill                             | Not currently migrated                                               |
| -------------------------------------------------------------- | -------------------------------------------------------------------- |
| Traces and spans                                               | Evaluator definitions                                                |
| Datasets, versions, and examples                               | Prompts and tags                                                     |
| Experiments and runs                                           | Attachments                                                          |
| Stored evaluation scores, labels, and explanations             | Span, trace, and session annotations                                 |
| IDs, relationships, historical times, and supported attributes | Dataset/version descriptions and dataset/version/experiment metadata |

The skill verifies the recreated records in AX and does not rerun evaluators or make model calls. If AX cannot preserve a dataset-version relationship, it stops instead of importing an incorrect relationship.

## Migrate existing Phoenix data

<Steps>
  <Step title="Install the migration skill">
    ```bash theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
    npx skills add Arize-ai/arize-skills --skill arize-phoenix-migration --yes
    ```
  </Step>

  <Step title="Ask your coding agent to start">
    > Use the Arize Phoenix migration skill. I want to migrate my Phoenix data to AX.

    The agent inventories Phoenix, proposes fresh AX destination names, and asks what you want to migrate. You can migrate everything supported, traces only, dataset and experiment data only, or selected resources. You can also choose the destination AX project name.
  </Step>

  <Step title="Provide connection details privately">
    Give the agent the path to an existing local `.env`, or let it create a secure credential-entry command for you to run in a separate terminal window. Do not paste API keys into agent chat.

    * [Create or find a Phoenix API key](https://arize.com/docs/phoenix/settings/api-keys). A key is optional only for self-hosted Phoenix with authentication disabled.
    * [Create or find an AX API key](/docs/ax/security-and-settings/api-keys).

    The agent resolves human-readable AX spaces for you; you do not need to find opaque IDs.
  </Step>

  <Step title="Review the inventory and migrate">
    The agent shows what it found, what is excluded, the AX organization and space, and the proposed project and dataset names. Reply `go` to accept everything shown, or specify a subset or another project name.

    A typical small or medium migration takes about 5–20 minutes. Large exports or AX trace indexing can take longer.
  </Step>

  <Step title="Open the verified results">
    Wait for the agent to report `verified`, not only uploaded. Its final table links directly to the AX trace project, dataset examples and versions, and experiments with stored evaluation results.
  </Step>
</Steps>

## Send new application traces to AX

Historical migration does not redirect your running application. Update its trace exporter so new spans go to AX.

<Steps>
  <Step title="Install the AX tracing SDK">
    ```bash theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
    pip install "arize[otel]"
    ```
  </Step>

  <Step title="Register the AX tracer">
    Keep your existing OpenInference instrumentors and manual spans. Replace the Phoenix registration with AX credentials and a space ID:

    ```python theme={"theme":{"light":"github-light-default","dark":"github-dark-default"}}
    import os

    from arize.otel import register
    from openinference.instrumentation.openai import OpenAIInstrumentor

    tracer_provider = register(
        space_id=os.environ["ARIZE_SPACE_ID"],
        api_key=os.environ["ARIZE_API_KEY"],
        project_name="my-llm-app",
    )
    OpenAIInstrumentor().instrument(tracer_provider=tracer_provider)
    ```

    See [Configure your tracer](/docs/ax/instrument/configure-your-tracer) for other frameworks, JavaScript, regions, and manual OpenTelemetry setup.
  </Step>

  <Step title="Verify and finish the cutover">
    For production applications, send traces to Phoenix and AX for one representative traffic cycle. Compare trace counts, span trees, attributes, sessions, and users over the same time window. Once they match, stop the Phoenix export path and remove its credentials from your deployment.
  </Step>
</Steps>

<Note>
  Keep Phoenix running until the historical migration is verified because the skill reads directly from the source instance. See the [migration skill source](https://github.com/Arize-ai/arize-skills/tree/main/skills/arize-phoenix-migration) for current behavior and limits.
</Note>
