Chapter 1. Llama Stack to OGX migration


Starting in OpenShift AI version 3.5EA1, Llama Stack is being fully renamed to OGX. This creates breaking changes in any applications created with the Llama Stack Operator.

The following charts show the naming changes of the components, environment variables, and field changes.

Expand
Table 1.1. Name Mapping
ComponentPrevious nameNew name

API Group

llamastack.io

ogx.io

API Version

v1alpha1

v1beta1

Kind

LlamaStackDistribution

OGXServer

Plural

llamastackdistributions

ogxservers

Short Name

llsd

ogxserver

Container Name

llama-stack

ogx

App Label

app: llama-stack

app: ogx

Managed-by

llama-stack-operator

ogx-operator

Watch Label

llamastack.io/watch: "true"

ogx.io/watch: "true"

Mount Path

/.llama

/.ogx

Leader Election ID

81d5736e.llamastack.io

54e06e98.ogx.io

Expand
Table 1.2. Environment Variables
Previous nameNew nameAdditional details

LLS_PORT

OGX_PORT

Container port for the server

LLS_WORKERS

OGX_WORKERS

Number of uvicorn worker processes

LLAMA_STACK_CONFIG

OGX_CONFIG

Path to the server config file

Expand
Table 1.3. Status Field Changes
Old PathNew Path

.status.version.llamaStackServerVersion

.status.version.serverVersion

.status.routeURL

.status.externalURL

The following YAML examples display the changes in specifications. For example: OGXServer CRs, network configurations, and workload configurations.

Workload Configuration

Previous workload configuration (flat on spec):

spec:
  replicas: 2
  server:
    distribution:
      name: rh-dev
    containerSpec:
      env:
        - name: MY_VAR
          value: "hello"
    storage:
      size: "20Gi"

New workload configuration (grouped under spec.workload):

spec:
  distribution:
    name: rh-dev
  workload:
    replicas: 2
    storage:
      size: "20Gi"
    overrides:
      env:
        - name: MY_VAR
          value: "hello"

Network Configurations

Previous network configurations (spec.network):

spec:
  network:
    exposeRoute: true
    allowedFrom:
      namespaces: ["my-app"]
      labels: ["team=frontend"]

New network configurations(spec.network):

spec:
  network:
    externalAccess:
      enabled: true
    policy:
      enabled: true
      ingress:
        - from:
            - namespaceSelector:
                matchLabels:
                  kubernetes.io/metadata.name: my-app
            - namespaceSelector:
                matchLabels:
                  team: frontend
          ports:
            - protocol: TCP
              port: 8321

1.1. Migrating from Llama Stack to OGX

In order to migrate to the newly named ogx-operator, you must remove the Llama Stack Operator and create new OGXServer custom resources (CRs).

Prerequisites

  • You have the Llama Stack Operator installed on your OpenShift AI cluster.
  • You have custom LlamaStackDistribution applications.
  • You have cluster administrator permissions.
  • You have installed the OpenShift CLI (oc).

Procedure

  1. Remove the Llama Stack Operator from your environment. You can remove the Llama Stack Operator by setting the component spec:

    $ dsc.spec.components.lls = "Removed"
  2. Install the new OGX operator by setting the component spec:

    $ dsc.spec.components.ogx = "Managed"
  3. Create the OGXServer custom resource (CR).

    apiVersion: ogx.io/v1beta1
    kind: OGXServer
    metadata:
      name: my-server
    spec:
      distribution:
        name: rh-dev
      workload:
        replicas: 1
        storage:
          size: "20Gi"
        overrides:
          env:
            - name: OLLAMA_INFERENCE_MODEL
              value: "llama3.2:1b"
            - name: OLLAMA_URL
              value: "http://ollama-server-service.ollama-dist.svc.cluster.local:11434"
  4. Apply the OGXServer CR to the cluster:

    $ oc apply -f ogxserver.yaml

Verification

  1. Verify the pod deployment with the following command:

    # Check the new CRD is registered
    $ oc get crd ogxservers.ogx.io
    
    # List OGXServer resources
    $ oc get ogxserver
    
    # Check conditions for adoption status
    $ oc get ogxserver my-server -o jsonpath='{.status.conditions}'
    
    # Verify the server is ready
    $ oc get ogxserver my-server -o jsonpath='{.status.phase}'
  2. You can then clean up the legacy resources when the new OGXServer is verified.

    1. Remove the LlamaStackDistribution CR resources:

      $ oc delete llamastackdistribution <old-llsd-name> -n <namespace>
  3. (Optional) Adopting existing PVC.

    1. To preserve existing data by adopting the PVC from the old LlamaStackDistribution, set the annotations parameter similar to the following:

      metadata:
        annotations:
          ogx.io/adopt-storage: "<old-llsd-name>"

      The operator strips the old ownerRef from the PVC and labels it for discovery. The adopted PVC intentionally has no ownerReference to the OGXServer.

  4. (Optional) Adopting existing Service and Ingress

    1. To preserve ClusterIP and external endpoints, set the annotations similar to the following:

      metadata:
        annotations:
          ogx.io/adopt-storage: "<old-llsd-name>"
          ogx.io/adopt-networking: "<old-llsd-name>"

The operator adopts the orphaned Service + Ingress, replaces Service selectors with new pod labels: app: ogx, app.kubernetes.io/instance: <name>, and sets ownerReferences.

Red Hat logoGithubredditYoutubeTwitter

Learn

Try, buy, & sell

Communities

About Red Hat

We deliver hardened solutions that make it easier for enterprises to work across platforms and environments, from the core datacenter to the network edge.

Making open source more inclusive

Red Hat is committed to replacing problematic language in our code, documentation, and web properties. For more details, see the Red Hat Blog.

About Red Hat Documentation

Legal Notice

Theme

© 2026 Red Hat
Back to top