Interacting with Red Hat Developer Hub Intelligent Assistant
Leverage Artificial Intelligence (AI)-driven expertise of the Red Hat Developer Hub Intelligent Assistant to help you use Red Hat Developer Hub (RHDH)
Abstract
- Preface
- 1. Chat assistance with Developer Hub Intelligent Assistant
- 2. Red Hat Developer Hub Intelligent Assistant architecture for your AI backend deployment
- 3. Retrieval augmented generation (RAG) embeddings for grounded AI responses
- 4. Configure Developer Hub Intelligent Assistant to initialize the AI assistant
- 4.1. Configure the virtual assistant components
- 4.2. Configure Developer Hub Intelligent Assistant by using the Helm chart
- 4.3. Inference provider configuration reference for Developer Hub Intelligent Assistant
- 4.4. Disable Developer Hub Intelligent Assistant by using the Operator
- 4.5. Disable Developer Hub Intelligent Assistant by using the Helm chart
- 4.6. Mirror Developer Hub Intelligent Assistant images for air-gapped environments
- 5. Migrate Developer Hub Intelligent Assistant configuration to remove OGX dependencies
- 5.1. Consolidated Developer Hub Intelligent Assistant configuration for stable model integration
- 5.2. Record Developer Hub Intelligent Assistant settings to prevent migration data loss
- 5.3. Migrate Developer Hub Intelligent Assistant settings to remove direct OGX configuration
- 5.4. Complete the Developer Hub Intelligent Assistant migration by using the Helm chart
- 5.5. Complete the Developer Hub Intelligent Assistant migration by using the Operator
- 5.6. Verify the migration to confirm a stable Developer Hub Intelligent Assistant deployment
- 5.7. Inference provider configuration reference for Developer Hub Intelligent Assistant
- 6. AI feature permissions
- 7. Extend Intelligent Assistant with Bring Your Own Knowledge (BYOK)
- 7.1. Bring Your Own Knowledge (BYOK) for Intelligent Assistant
- 7.2. Prepare the source documents for BYOK RAG
- 7.3. Generate a vector store for BYOK RAG
- 7.4. Package a BYOK RAG container image
- 7.5. Configure BYOK RAG by using the Helm chart
- 7.6. Configure BYOK RAG by using the Operator
- 7.7. Deploy BYOK RAG in a disconnected environment
- 7.8. Verify the deployed vector store
- 7.9. Update the BYOK RAG knowledge base
- 7.10. BYOK RAG configuration fields for
lightspeed-stack.yaml - 7.11. Resolve common BYOK RAG problems
- 8. Customize Developer Hub Intelligent Assistant AI responses
- 9. Provide organization context to the Intelligent Assistant with Agent Skills
- 10. Solve project-specific challenges with Developer Hub Intelligent Assistant Notebooks
- 11. Get AI-assisted help for your development tasks
- 11.1. Prerequisites
- 11.2. Enable query validation to block off-topic AI responses
- 11.3. Restrict the models available for selection
- 11.4. Best results for assistant queries
- 11.5. AI response monitoring and context management
- 11.6. Manage chats
- 11.7. Save and reuse chat prompts to avoid retyping
- 11.8. Build a private knowledge base with Developer Hub Intelligent Assistant Notebooks
- 12. AI model evaluation data to select the right AI model
- 12.1. Configure the evaluation environment to validate model accuracy
- 12.2. Prepare evaluation datasets to verify AI-generated responses
- 12.3. Run performance tests to ensure AI response reliability
- 12.4. Analyze evaluation results to identify performance gaps
- 12.5. Evaluation metrics and historical data reference
- 12.6. Release report and historical data
- 13. Appendix: LLM requirements
- 14. Appendix: Manage user data security
Preface
Red Hat Developer Hub Intelligent Assistant (formerly Developer Lightspeed for Developer Hub) is an AI-powered virtual assistant for Red Hat Developer Hub (RHDH). You can interact with the Intelligent Assistant to explore RHDH capabilities in detail.
Chapter 1. Chat assistance with Developer Hub Intelligent Assistant
Use Developer Hub Intelligent Assistant to find product information, discover features, and resolve technical questions using natural language prompts directly within the RHDH console.
To speed up repeat tasks, you can save prompts that you enter frequently and reuse them in any chat session without retyping them.

Chapter 2. Red Hat Developer Hub Intelligent Assistant architecture for your AI backend deployment
Review the Developer Hub Intelligent Assistant component architecture to plan your system layout and coordinate connections with your artificial intelligence (AI) backend deployment.
The architecture relies on the Lightspeed Core Service (LCORE) container, which operates as the primary intermediary layer to manage Developer Hub Intelligent Assistant functionality and console user interactions. After you enable the plugin, the interface appears as the Intelligent Assistant button on all platforms that host RHDH.
Developer Hub Intelligent Assistant connects only to LCORE. LCORE manages the configuration for the model inference, query validation, tool calling, and the vector store. You configure these capabilities through LCORE, and Developer Hub Intelligent Assistant consumes them through LCORE APIs.
Open GenAI Stack (OGX) is an internal implementation detail of LCORE and is not a customer-facing component. Do not configure OGX directly, call OGX APIs, or edit the generated /tmp/.generated/run.yaml file. Configure LCORE instead, so that your deployment stays stable across OGX changes.
Additional resources
2.1. AI reference and tool-calling capabilities through Lightspeed Core Service
Review the core components managed by the Lightspeed Core Service (LCORE) sidecar container to plan integrations with large language models (LLM) and tool runtime providers.
The LCORE container deploys as a sidecar to extend RHDH functionality, and it integrates and manages the following core components:
- Large language model (LLM) inference providers
Model Context Protocol (MCP) or Retrieval Augmented Generation (RAG) tool runtime providers
ImportantVerify that your model supports tool calling before you enable MCP features. Using an incompatible model results in error messages.
- Safety providers
- Vector database settings
LCORE also manages the following operational data:
- User feedback collection
- MCP server configuration
- Chat history
All prompts and LLM responses pass through the LCORE sidecar.
Chapter 3. Retrieval augmented generation (RAG) embeddings for grounded AI responses
Use retrieval-augmented generation (RAG) embeddings to ground artificial intelligence (AI) responses in your internal documentation and provide verified citations during user interactions.
The RHDH documentation serves as the primary data source for RAG operations. To provide accurate citations to production documentation during inference, the system uses RAG embeddings stored within a vector database.
The system processes RAG data through the following sequence:
- An initialization container copies the RAG data to a shared volume.
- The Lightspeed Core Service (LCORE) sidecar container mounts the shared volume to access the data.
- The sidecar layer uses the embeddings to attach precise documentation references to the chat responses.
Chapter 4. Configure Developer Hub Intelligent Assistant to initialize the AI assistant
Red Hat Developer Hub Intelligent Assistant is enabled by default on Red Hat Developer Hub (RHDH) instances. To provide developers with chat assistance, configure your deployment settings by using either the Operator or the Helm chart.
4.1. Configure the virtual assistant components
Configure Developer Hub Intelligent Assistant by updating your Backstage custom resource (CR) to map environment variables, manage configurations, and set access rights.
Prerequisites
- The RHDH Operator is installed on your cluster.
- You have cluster administrator privileges.
Procedure
Create an opaque Kubernetes Secret containing your operational credentials and query validation keys before applying the Backstage CR. Refer to the following key definitions for required environment variables:
ImportantThe Secret supplies only provider credentials and endpoints. To enable an inference provider, define it as an entry under the
inference.providerssection of thelightspeed-stack.yamlfile. Adding a credential key to the Secret does not enable a provider on its own.Key Description VLLM_URLSpecifies the target API endpoint URL for vLLM. The URL must end in
/v1, for example,https://<api_endpoint>/v1.VLLM_API_KEYStores the authorization token for your vLLM platform.
OPENAI_API_KEYStores the authorization secret key for OpenAI.
VERTEX_AI_PROJECTSpecifies your Google Cloud project ID.
VERTEX_AI_LOCATIONSpecifies your target Google Cloud region.
GOOGLE_APPLICATION_CREDENTIALSSpecifies the in-container file path of your mounted Google Cloud service account credentials JSON file.
ENABLE_VALIDATIONEnables the question-validity shield when set to
question_validity. Leave the variable unset, or set it todisabled, to keep validation disabled. A nonempty value such astruedoes not enable the shield.VALIDATION_PROVIDERSpecifies the type of the inference provider that runs the classification, for example,
openaiorvllm. A provider of this type must be enabled ininference.providers.VALIDATION_MODEL_NAMESpecifies the model that classifies each prompt, for example,
gpt-4o-mini.The following code shows an example configuration Secret for vLLM with validation:
apiVersion: v1 kind: Secret metadata: name: intelligent-assistant-auth-secrets type: Opaque stringData: VLLM_URL: "https://<api_endpoint>/v1" VLLM_API_KEY: "<api_key>" ENABLE_VALIDATION: question_validity VALIDATION_PROVIDER: "vllm" VALIDATION_MODEL_NAME: "llama3.1"
NoteThe
VALIDATION_PROVIDERvalue is the inference provider type, such asvllmoropenai. A provider of this type must be enabled in theinference.providerssection of thelightspeed-stack.yamlfile.-
Enable at least one inference provider by defining it under the
inference.providerssection of thelightspeed-stack.yamlfile. Creating the Secret alone does not enable a provider. For the provider entry format and the Secret keys that each provider requires, see the inference provider configuration reference for Developer Hub Intelligent Assistant. Map your secret inside the
extraEnvssection of the Backstage CR to complete container provisioning:apiVersion: rhdh.redhat.com/v1alpha5 kind: Backstage metadata: name: intelligent-assistant-rhdh spec: application: extraEnvs: secrets: - name: intelligent-assistant-auth-secrets containers: - lightspeed-coreOptional: To protect settings such as Model Context Protocol (MCP) server additions from being overwritten during reconciliation loops, define a custom ConfigMap mapping in the
extraFilessection of the CR:extraFiles: configMaps: - name: "my-custom-config" mountPath: /app-root key: lightspeed-stack.yaml containers: - lightspeed-coreConfigure access rights by updating the RBAC policy inside your Backstage CR:
To grant non-administrator teams access to the virtual assistant, append permission lines to the
rbac-policies.csvsection, replacing<team>with your target team name:p, role:default/<team>, intelligent-assistant.chat, use, allow 1
- <1>
Grants full use of the Developer Hub Intelligent Assistant chat feature, including opening the chat window, sending messages, managing chat history, and saving and reusing chat prompts.
For the complete list of AI feature permissions, including Notebooks, MCP tools, and skills, see AI feature permissions.
Apply the updated custom resource manifest to your cluster:
$ oc apply -f <backstage_cr_file>.yaml
Verification
- Log in to your console instance.
- Verify that the Intelligent Assistant button appears on the home page.
- Select the Intelligent Assistant button and confirm that the chat window initializes successfully.
4.2. Configure Developer Hub Intelligent Assistant by using the Helm chart
Configure Developer Hub Intelligent Assistant by using the Helm chart to manage large language model (LLM) providers, enable query validation, and authorize custom role-based access control (RBAC) policies.
Prerequisites
- You have access to a running RHDH instance deployed with Helm.
- You have operational credentials for your chosen LLM provider.
Procedure
Create a Kubernetes Secret to store your provider credentials by adding the required keys to your Secret based on your provider requirements:
ImportantThe Secret supplies only provider credentials and endpoints. To enable an inference provider, define it as an entry under the
inference.providerssection of thelightspeed-stack.yamlfile. Adding a credential key to the Secret does not enable a provider on its own.Key Description VLLM_URLSpecifies the target API endpoint URL for vLLM. The URL must end in
/v1, for example,https://<api_endpoint>/v1.VLLM_API_KEYStores the authorization token for your vLLM platform.
OPENAI_API_KEYStores the authorization secret key for OpenAI.
VERTEX_AI_PROJECTSpecifies your Google Cloud project ID.
VERTEX_AI_LOCATIONSpecifies your target Google Cloud region.
GOOGLE_APPLICATION_CREDENTIALSSpecifies the in-container file path of your mounted Google Cloud service account credentials JSON file.
ENABLE_VALIDATIONEnables the question-validity shield when set to
question_validity. Leave the variable unset, or set it todisabled, to keep validation disabled. A nonempty value such astruedoes not enable the shield.VALIDATION_PROVIDERSpecifies the type of the inference provider that runs the classification, for example,
openaiorvllm. A provider of this type must be enabled ininference.providers.VALIDATION_MODEL_NAMESpecifies the model that classifies each prompt, for example,
gpt-4o-mini.NoteVertex AI requires custom architecture mapping and has received limited testing.
TipTo filter and reject off-topic user queries, you can optionally configure query validation within this Secret by defining the
ENABLE_VALIDATION,VALIDATION_PROVIDER, andVALIDATION_MODEL_NAMEkeys.Reference your Secret inside the
values.yamlfile:intelligentAssistant: existingSecret: "my-custom-secret"
-
Enable at least one inference provider by defining it under the
inference.providerssection of thelightspeed-stack.yamlfile. Creating the Secret alone does not enable a provider. For the provider entry format and the Secret keys that each provider requires, see the inference provider configuration reference for Developer Hub Intelligent Assistant. Optional: Configuration files such as
lightspeed-stack.yamlandrhdh-profile.pyare managed by the Helm deployment and are overwritten onhelm upgraderuns. To protect changes to a file, create a custom config map and reference it in thevalues.yamlfile:ImportantProvide only the
nameandkeyof your existing ConfigMap. The chart manages the mount path and file configuration.intelligentAssistant: config: stack: existingConfigMap: name: my-custom-stack key: lightspeed-stack.yamlConfigure access rights by updating your RBAC definitions:
To grant non-administrator teams access to the virtual assistant, append permission lines to the
rbac-policies.csvsection, replacing<team>with your target team name:p, role:default/<team>, intelligent-assistant.chat, use, allow 1
- <1>
Grants full use of the Developer Hub Intelligent Assistant chat feature, including opening the chat window, sending messages, managing chat history, and saving and reusing chat prompts.
For the complete list of AI feature permissions, including Notebooks, MCP tools, and skills, see AI feature permissions.
-
Run the
helm upgradecommand to apply your configurations to the cluster.
Verification
- Log in to your console instance.
- Verify that the Intelligent Assistant button appears on the home page.
- Select the Intelligent Assistant button and confirm that the chat window initializes successfully.
4.3. Inference provider configuration reference for Developer Hub Intelligent Assistant
To give Developer Hub Intelligent Assistant access to a model, define each inference provider as an entry under the top-level inference.providers section of the lightspeed-stack.yaml file.
The provider entry enables the provider. Adding an API key or an ENABLE_* variable to the Secret does not enable a provider on its own.
Keep the sentence_transformers provider when you add a large language model (LLM) provider. It supports the default embedding path that the shipped vector store uses.
Each LLM provider entry requires a unique id. The api_key_env field contains the name of an environment variable, not ${env…} syntax and not the credential value. Lightspeed Core Service (LCORE) resolves the variable without exposing the key in the configuration file.
- OpenAI
Set
typetoopenai, and addOPENAI_API_KEYto the Secret. Useextra.allowed_modelsto limit model registration. If you omit it, the provider registers every model that is visible to the account.inference: providers: - type: sentence_transformers - type: openai id: openai-primary api_key_env: OPENAI_API_KEY extra: allowed_models: - gpt-4o - gpt-4o-mini- vLLM
Set
typetovllm, and addVLLM_URLandVLLM_API_KEYto the Secret.VLLM_URLmust be the full OpenAI-compatible base URL and end in/v1, for example,https://vllm.example.com/v1. AddVLLM_MAX_TOKENSorVLLM_TLS_VERIFYonly when the defaults do not suit the endpoint.inference: providers: - type: sentence_transformers - type: vllm id: rhoai-vllm api_key_env: VLLM_API_KEY extra: base_url: ${env.VLLM_URL:=} max_tokens: ${env.VLLM_MAX_TOKENS:=4096} network: tls: verify: ${env.VLLM_TLS_VERIFY:=true}- Vertex AI
Set
typetovertexai, and setVERTEX_AI_PROJECT,VERTEX_AI_LOCATION, andGOOGLE_APPLICATION_CREDENTIALSin the Secret. TheGOOGLE_APPLICATION_CREDENTIALSvalue must be the in-container path of a separately mounted Google Cloud credential file.inference: providers: - type: sentence_transformers - type: vertexai id: vertex-gemini extra: project: ${env.VERTEX_AI_PROJECT:=} location: ${env.VERTEX_AI_LOCATION:=global} allowed_models: - google/gemini-2.5-flash
To enable more than one provider, combine the entries in a single inference.providers list. Keep every id unique, even when two entries use the same provider type. The following example enables two OpenAI providers and a vLLM provider while retaining the embedding provider that the default vector store uses:
inference:
providers:
- type: sentence_transformers
- type: openai
id: openai-primary
api_key_env: OPENAI_API_KEY
extra:
allowed_models:
- gpt-4o-mini
- type: openai
id: openai-secondary
api_key_env: OPENAI_SECONDARY_API_KEY
extra:
allowed_models:
- gpt-4o
- type: vllm
id: rhoai-vllm
api_key_env: VLLM_API_KEY
extra:
base_url: ${env.VLLM_URL:=}
max_tokens: ${env.VLLM_MAX_TOKENS:=4096}
network:
tls:
verify: ${env.VLLM_TLS_VERIFY:=true}
The paired Secret must define OPENAI_API_KEY, OPENAI_SECONDARY_API_KEY, VLLM_API_KEY, and a VLLM_URL value that ends in /v1. A user can then select models that any of these providers expose.
4.4. Disable Developer Hub Intelligent Assistant by using the Operator
Disable the Developer Hub Intelligent Assistant chat interface and stop associated container processes to remove the service from your Operator-backed deployment.
Prerequisites
- You have access to the cluster where your instance is deployed.
- You have cluster administrator privileges.
Procedure
- Open your Backstage custom resource (CR) YAML file.
In the
specsection, set theenabledflag tofalsefor theintelligent-assistantflavour. This disables the chat interface and prevents the Operator from injecting unconfigured sidecar containers:apiVersion: rhdh.redhat.com/v1alpha5 kind: Backstage metadata: name: intelligent-assistant-disabled spec: flavours: - name: intelligent-assistant enabled: falseApply the updated custom resource manifest to your cluster:
oc apply -f <backstage_cr_file>.yaml
Verification
- Log in to your console instance.
- Verify that the Intelligent Assistant button no longer appears on the home page.
4.5. Disable Developer Hub Intelligent Assistant by using the Helm chart
Disable the Developer Hub Intelligent Assistant chat interface and stop associated container processes to remove the service from your Helm-deployed environment.
Prerequisites
- You have access to the cluster where your instance is deployed.
- You have cluster administrator privileges.
Procedure
-
Open your Helm
values.yamlfile. Update the
global.lightspeed.enabledparameter tofalseto disable the chat interface:global: lightspeed: enabled: false-
Run the
helm upgradecommand to apply the configuration change to your cluster.
Verification
- Log in to your console instance.
- Verify that the Intelligent Assistant button no longer appears on the home page.
4.6. Mirror Developer Hub Intelligent Assistant images for air-gapped environments
To provide chat assistance in a network environment without internet access, you must mirror the required Developer Hub Intelligent Assistant container images and dynamic plugins to your local registry. This ensures your secure environment can pull the necessary components inside your network perimeter.
4.6.1. Mirror Developer Hub Intelligent Assistant images for air-gapped environments
Mirror the required Developer Hub Intelligent Assistant container images and plugins to your local registry to provide chat assistance in an air-gapped environment.
The prepare-restricted-environment.sh script does not automatically parse Developer Hub Intelligent Assistant images from the bundle manifest, so mirror these images manually before running the script.
Prerequisites
- You have a target mirror registry accessible to your disconnected cluster.
- You authenticated to the Red Hat Container Registry and your target mirror registry.
-
You have configured image pull authentication for your mirror registry as described in Install Red Hat Developer Hub in an air-gapped environment with the Operator. The
kubeletrequires these credentials to pull all Red Hat Developer Hub container images, including the Developer Hub Intelligent Assistant sidecar images.
Procedure
Extract the deployment configurations from the official Operator bundle:
BUNDLE_IMAGE="registry.redhat.io/rhdh/rhdh-operator-bundle:2.1" CONTAINER_ID=$(podman create "${BUNDLE_IMAGE}") podman cp $CONTAINER_ID:/manifests/rhdh-flavour-lightspeed-config_v1_configmap.yaml ./lightspeed-config.yaml podman rm $CONTAINER_IDIdentify the initialization and sidecar container image tags from the extracted configuration file:
LS_RAG_IMAGE=$(yq '.data["deployment.yaml"]' lightspeed-config.yaml | yq '.spec.template.spec.initContainers[] | select(.name == "init-rag-data") | .image') LS_CORE_IMAGE=$(yq '.data["deployment.yaml"]' lightspeed-config.yaml | yq '.spec.template.spec.containers[] | select(.name == "lightspeed-core") | .image')
Mirror the images to your internal registry by running the
skopeo copycommand:skopeo copy docker://${LS_RAG_IMAGE} docker://<mirror_registry>/<ls_rag_repo>@<digest> skopeo copy docker://${LS_CORE_IMAGE} docker://<mirror_registry>/<ls_core_repo>@<digest>
4.6.2. Mirror Developer Hub Intelligent Assistant images for Helm deployments on OpenShift Container Platform
Mirror the required Developer Hub Intelligent Assistant container images to your local registry by using the oc-mirror plugin when deploying the Helm chart on an OpenShift Container Platform cluster.
Prerequisites
- You have a target mirror registry accessible to your disconnected OpenShift Container Platform cluster.
- You authenticated to the Red Hat Container Registry and your target mirror registry.
-
You have configured image pull authentication for your mirror registry as described in Install Red Hat Developer Hub on OpenShift Container Platform in an air-gapped environment with the Helm chart. The
kubeletrequires these credentials to pull all Red Hat Developer Hub container images, including the Developer Hub Intelligent Assistant sidecar images.
Procedure
Identify the initialization and sidecar container images from the default values file of the chart:
helm show values redhat-developer-hub --repo https://charts.openshift.io/ --version 2.1.0 > values.default.yaml LS_RAG_IMAGE=$(yq '.global.lightspeed.initContainer.image | .registry + "/" + .repository' values.default.yaml) LS_RAG_DIGEST=$(yq '.global.lightspeed.initContainer.image.tag' values.default.yaml) LS_CORE_IMAGE=$(yq '.global.lightspeed.sidecar.image | .registry + "/" + .repository' values.default.yaml) LS_CORE_DIGEST=$(yq '.global.lightspeed.sidecar.image.tag' values.default.yaml)
Add these images to the
additionalImagessection of yourImageSetConfigurationfile:apiVersion: mirror.openshift.io/v2alpha1 kind: ImageSetConfiguration mirror: additionalImages: - name: ${LS_RAG_IMAGE}:${LS_RAG_DIGEST} - name: ${LS_CORE_IMAGE}:${LS_CORE_DIGEST} helm: repositories: - name: openshift-charts url: https://charts.openshift.io charts: - name: redhat-developer-hub version: "2.1"
4.6.3. Mirror Developer Hub Intelligent Assistant images for Helm deployments on Kubernetes
Isolate image references, copy them manually to your internal registry, and update your configuration file when deploying the Helm chart on non-OpenShift platforms.
Prerequisites
- You have a target mirror registry accessible to your disconnected cluster.
- You authenticated to the Red Hat Container Registry and your target mirror registry.
-
You have configured image pull authentication for your mirror registry as described in Install Red Hat Developer Hub on a supported Kubernetes platform in an air-gapped environment with the Helm chart. The
kubeletrequires these credentials to pull all Red Hat Developer Hub container images, including the Developer Hub Intelligent Assistant sidecar images.
Procedure
Extract the image references from the default values file of the chart:
$ helm show values redhat-developer-hub --repo https://charts.openshift.io/ --version 2.1.0 > values.default.yaml LS_RAG_IMAGE=$(yq '.global.lightspeed.initContainer.image | .registry + "/" + .repository' values.default.yaml) LS_RAG_DIGEST=$(yq '.global.lightspeed.initContainer.image.tag' values.default.yaml) LS_CORE_IMAGE=$(yq '.global.lightspeed.sidecar.image | .registry + "/" + .repository' values.default.yaml) LS_CORE_DIGEST=$(yq '.global.lightspeed.sidecar.image.tag' values.default.yaml)
Mirror the images to your internal mirror registry:
skopeo copy --all docker://${LS_RAG_IMAGE}:${LS_RAG_DIGEST} docker://<mirror_registry_name>/<ls_rag_repo_name>:${LS_RAG_DIGEST} skopeo copy --all docker://${LS_CORE_IMAGE}:${LS_CORE_DIGEST} docker://<mirror_registry_name>/<ls_core_repo_name>:${LS_CORE_DIGEST}Update your custom Helm values file with the mirrored registry locations and plugin references. Mirror the dynamic plugins to the local registry before you add their package paths to the file. For mirroring instructions, see Mirroring Red Hat Developer Hub dynamic plugins in disconnected environments:
global: lightspeed: initContainer: image: registry: "<mirror_registry_name>" repository: <ls_rag_repo_name> tag: "${LS_RAG_DIGEST}" sidecar: image: registry: "<mirror_registry_name>" repository: <ls_core_repo_name> tag: "${LS_CORE_DIGEST}" plugins: - package: "oci://<mirror_registry_name>/rhdh/red-hat-developer-hub-backstage-plugin-lightspeed@<ls_frontend_digest>" disabled: false - package: "oci://<mirror_registry_name>/rhdh/red-hat-developer-hub-backstage-plugin-lightspeed-backend@<ls_backend_digest>" disabled: false
Additional resources
Chapter 5. Migrate Developer Hub Intelligent Assistant configuration to remove OGX dependencies
Migrate your Developer Hub Intelligent Assistant configuration from RHDH 1.10 to the unified Lightspeed Core Service (LCORE) configuration file, so that your deployment no longer depends on direct OGX APIs and configuration.
5.1. Consolidated Developer Hub Intelligent Assistant configuration for stable model integration
In Red Hat Developer Hub (RHDH) 2.1, Developer Hub Intelligent Assistant sources all model, validation, tool, and vector-store settings from Lightspeed Core Service (LCORE), so you no longer configure or interact with Open GenAI Stack (OGX) directly.
Earlier releases exposed OGX configuration and used some OGX APIs directly. Because those APIs and configurations changed often, deployments broke and required expensive migrations. In RHDH 2.1, LCORE is the exclusive integration layer, and OGX is an internal implementation detail that is no longer customer-facing.
This change consolidates configuration into a single file and removes the direct OGX surface:
- Unified configuration file
-
RHDH 1.10 used both a
lightspeed-stack.yamlfile and a separateconfig.yamlfile. RHDH 2.1 uses onelightspeed-stack.yamlfile. Theconfig.yamlfile and thellama_stack.library_client_config_pathsetting no longer apply. - Inference providers
-
You define each provider as an explicit entry under
inference.providers, each with a uniqueid. TheENABLE_OPENAI,ENABLE_VLLM,ENABLE_VERTEX_AI, andENABLE_OLLAMAswitches no longer enable providers. A Secret supplies only credentials and endpoints. - Query validation
-
A top-level
shieldsblock defines the question-validity shield. You enable it by settingENABLE_VALIDATIONtoquestion_validity, instead of the Llama Guard safety provider and registered shield resources used in 1.10. - Vector store
-
The file uses a singular top-level
vector_storesection. The installation program supplies the default configuration used for Notebooks. - Model Context Protocol (MCP) servers
-
The top-level
mcp_serverssection is unchanged from 1.10. You do not need to change existing entries. - Generated runtime file
-
LCORE creates the
/tmp/.generated/run.yamlfile at runtime fromlightspeed-stack.yaml. Do not edit the generated file.
5.2. Record Developer Hub Intelligent Assistant settings to prevent migration data loss
To migrate without losing customizations, record your RHDH 1.10 settings and back up your configuration before you deploy Red Hat Developer Hub (RHDH) 2.1.
Keep the 1.10 deployment available until 2.1 verification finishes, so that you can roll back if the migration fails.
Prerequisites
- You have administrative access to your RHDH 1.10 deployment.
- You have access to your deployment method configuration: your Helm values file or your Backstage custom resource (CR).
- You have an approved secret-management process for storing credentials.
Procedure
- Record the installed RHDH and Developer Hub Intelligent Assistant versions.
- Back up your 1.10 Helm values or your Backstage custom resource (CR).
-
Export your customer-managed ConfigMaps, Secrets,
app-configfiles, dynamic plugin configuration, role-based access control (RBAC) policies, Routes, Services, and persistent volume claims. - Record the Developer Hub Intelligent Assistant settings that you must reapply in 2.1: enabled inference providers and their model names, Model Context Protocol (MCP) server endpoints, query validation behavior, feedback and chat history storage settings, and prompt customizations and storage requirements.
- Store credentials through your approved secret-management process. Do not add decoded Secret values to your migration workspace.
Verification
- Confirm that you have a stored copy of your 1.10 Helm values or Backstage CR.
- Confirm that you have a recorded list of the Developer Hub Intelligent Assistant settings that you must reapply in 2.1.
- Confirm that your 1.10 deployment remains available for rollback.
5.3. Migrate Developer Hub Intelligent Assistant settings to remove direct OGX configuration
To move your settings to Red Hat Developer Hub (RHDH) 2.1, start from the unified lightspeed-stack.yaml file shipped with your deployment and reapply each supported customization in its new section.
Do not merge the 1.10 lightspeed-stack.yaml and config.yaml files. Start from a fresh copy of the shipped 2.1 file, keep the sections you are not changing, and edit only the sections you customized in 1.10.
Prerequisites
- You completed the steps in Record Developer Hub Intelligent Assistant settings to prevent migration data loss.
-
You have the
lightspeed-stack.yamlfile shipped by your 2.1 deployment method.
Procedure
Keep the shipped runtime baseline:
llama_stack: use_as_library_client: true config: baseline: byo-llmDo not point
library_client_config_pathat aconfig.yamlfile, and do not carry aconfig.yamlfile forward.Re-create each enabled inference provider as an explicit entry under
inference.providers. Give each provider a uniqueid, keep thesentence_transformersprovider, and reference credentials through the Secret:inference: providers: - type: sentence_transformers - type: openai id: openai-primary api_key_env: OPENAI_API_KEYNoteReplace the
ENABLE_OPENAI,ENABLE_VLLM,ENABLE_VERTEX_AI, andENABLE_OLLAMAswitches with provider entries. Adding a Secret key alone does not enable a provider.For the configuration schema and Secret keys for each supported provider, see Inference provider configuration reference for Developer Hub Intelligent Assistant.
Keep the supplied
vector_storesection unless you customized vector storage in 1.10. Do not copy the oldproviders.vector_ioorregistered_resources.vector_storesblocks.ImportantKeeping the supplied configuration does not migrate existing vector data. If users must retain indexed notebook content, verify the source and destination volumes and plan the data movement separately.
-
Enable query validation. To use the validation that ships by default with 2.1, set
ENABLE_VALIDATIONtoquestion_validityin the Secret. If you supplied a custom validation prompt in 1.10, reapply it to the prompt block under the top-levelshieldsblock in the shippedlightspeed-stack.yamlfile. For more information, see Enable query validation to block off-topic AI responses. -
Keep your existing top-level
mcp_serversentries. The schema is unchanged from 1.10. Do not copy the internaltool_runtimeprovider from the oldconfig.yamlfile. - Leave every other section in the shipped 2.1 file unchanged. If you customized feedback collection, the conversation cache, authentication, or the prompt profile in 1.10, reapply only the values that you still need instead of replacing the whole section.
- Complete the migration for your deployment method. For a Helm deployment, see Complete the Developer Hub Intelligent Assistant migration by using the Helm chart. For an Operator deployment, see Complete the Developer Hub Intelligent Assistant migration by using the Operator.
5.4. Complete the Developer Hub Intelligent Assistant migration by using the Helm chart
To finish migrating on Helm, apply your unified Developer Hub Intelligent Assistant configuration and provider Secret to a fresh Red Hat Developer Hub (RHDH) 2.1 release.
The 2.1 Helm chart does not support an in-place helm upgrade from the 1.x backstage chart. Plan a fresh release, and keep the 1.10 release available until you verify the 2.1 deployment.
Prerequisites
-
You migrated your configuration to the unified
lightspeed-stack.yamlfile. For more information, see Migrate Developer Hub Intelligent Assistant settings to remove direct OGX configuration. - You backed up your 1.10 Helm values.
- You have operational credentials for your inference providers.
Procedure
-
Move your
global.lightspeed.*customizations to the matching rootintelligentAssistant.*keys. -
Do not migrate the 1.10
name: serverConfigMap entry. The 2.1 chart provides only stack and profile entries. -
Create the provider Secret, and then reference it by setting
intelligentAssistant.existingSecret. For the credential and endpoint keys to include in the Secret, see Configure Developer Hub Intelligent Assistant by using the Helm chart. If you customized the shipped configuration file, supply your unified stack ConfigMap through the
intelligentAssistant.config.stack.existingConfigMapvalue:intelligentAssistant: existingSecret: intelligent-assistant-auth-secrets config: stack: existingConfigMap: name: my-lightspeed-stack key: lightspeed-stack.yaml-
Install a fresh
redhat-developer-hub2.1 chart release. Do not runhelm upgradeagainst the 1.xbackstagerelease.
Verification
-
Confirm that the RHDH pod is ready and includes the
lightspeed-corecontainer, and then continue with Verify the migration to confirm a stable Developer Hub Intelligent Assistant deployment.
Additional resources
5.5. Complete the Developer Hub Intelligent Assistant migration by using the Operator
To finish migrating on the Operator, update your Backstage custom resource (CR) to use the unified Developer Hub Intelligent Assistant configuration and provider Secret.
Prerequisites
-
You migrated your configuration to the unified
lightspeed-stack.yamlfile. For more information, see Migrate Developer Hub Intelligent Assistant settings to remove direct OGX configuration. - The RHDH Operator is installed on your cluster.
- You have cluster administrator privileges.
Procedure
-
Change any explicit
lightspeedflavor name tointelligent-assistant. Create the provider Secret, and inject it into the
lightspeed-corecontainer through thespec.application.extraEnvs.secretssection of the Backstage CR. For the credential and endpoint keys to include in the Secret, see Configure Developer Hub Intelligent Assistant by using the Operator.apiVersion: rhdh.redhat.com/v1alpha5 kind: Backstage metadata: name: intelligent-assistant-rhdh spec: application: extraEnvs: secrets: - name: intelligent-assistant-auth-secrets containers: - lightspeed-coreIf you customized the shipped configuration file, create a unified
lightspeed-stack.yamlConfigMap, and mount it at/app-rootin thelightspeed-corecontainer through thespec.application.extraFiles.configMapssection:extraFiles: configMaps: - name: my-custom-lightspeed-stack mountPath: /app-root key: lightspeed-stack.yaml containers: - lightspeed-core-
Do not carry a custom
llama-stack-configmount or aconfig.yamlreference into the 2.1 CR. -
Keep the flavor-managed
rhdh-profile.pyfile unless you maintain a custom prompt profile. Apply the updated custom resource:
$ oc apply -f <backstage_cr_file>.yaml
Verification
-
Confirm that the RHDH pod is ready and includes the
lightspeed-corecontainer, and then continue with Verify the migration to confirm a stable Developer Hub Intelligent Assistant deployment.
Additional resources
5.6. Verify the migration to confirm a stable Developer Hub Intelligent Assistant deployment
To confirm a successful migration, verify that Developer Hub Intelligent Assistant runs on Lightspeed Core Service (LCORE) with the unified configuration and that no RHDH 1.10 Open GenAI Stack (OGX) files remain.
Prerequisites
-
You migrated your configuration to the unified
lightspeed-stack.yamlfile and deployed Red Hat Developer Hub (RHDH) 2.1.
Procedure
Confirm that the RHDH pod is ready and has the
lightspeed-corecontainer:$ oc get pods -n <namespace>-
Confirm that
/app-root/lightspeed-stack.yamlcomes from the intended ConfigMap and that the pod has no/app-root/config.yamlmount. Review the
lightspeed-corelogs for configuration, provider, credential, model, vector-store, and Model Context Protocol (MCP) connection errors. Do not print Secret values:$ oc logs -n <namespace> deployment/<deployment_name> -c lightspeed-core
- Open the Intelligent Assistant and submit a development question to confirm that each enabled provider and allowed model responds.
- If query validation is enabled, submit one development question and one unrelated question to confirm the expected results.
- Test any required MCP tools, and confirm feedback and notebook behavior when those features are enabled.
- Restart the pod and confirm the expected persistence behavior for feedback, cache, and vector data.
Troubleshooting
- If verification fails, keep the 1.10 deployment available and roll back to it. For a parallel Helm installation, direct traffic back to the 1.10 release. For an Operator deployment, restore the backed-up Backstage custom resource (CR) and its customer-managed resources.
- Do not overwrite 1.10 persistent data with an untested 2.1 path. Take storage-level backups before you change claims or database schemas.
5.7. Inference provider configuration reference for Developer Hub Intelligent Assistant
To give Developer Hub Intelligent Assistant access to a model, define each inference provider as an entry under the top-level inference.providers section of the lightspeed-stack.yaml file.
The provider entry enables the provider. Adding an API key or an ENABLE_* variable to the Secret does not enable a provider on its own.
Keep the sentence_transformers provider when you add a large language model (LLM) provider. It supports the default embedding path that the shipped vector store uses.
Each LLM provider entry requires a unique id. The api_key_env field contains the name of an environment variable, not ${env…} syntax and not the credential value. Lightspeed Core Service (LCORE) resolves the variable without exposing the key in the configuration file.
- OpenAI
Set
typetoopenai, and addOPENAI_API_KEYto the Secret. Useextra.allowed_modelsto limit model registration. If you omit it, the provider registers every model that is visible to the account.inference: providers: - type: sentence_transformers - type: openai id: openai-primary api_key_env: OPENAI_API_KEY extra: allowed_models: - gpt-4o - gpt-4o-mini- vLLM
Set
typetovllm, and addVLLM_URLandVLLM_API_KEYto the Secret.VLLM_URLmust be the full OpenAI-compatible base URL and end in/v1, for example,https://vllm.example.com/v1. AddVLLM_MAX_TOKENSorVLLM_TLS_VERIFYonly when the defaults do not suit the endpoint.inference: providers: - type: sentence_transformers - type: vllm id: rhoai-vllm api_key_env: VLLM_API_KEY extra: base_url: ${env.VLLM_URL:=} max_tokens: ${env.VLLM_MAX_TOKENS:=4096} network: tls: verify: ${env.VLLM_TLS_VERIFY:=true}- Vertex AI
Set
typetovertexai, and setVERTEX_AI_PROJECT,VERTEX_AI_LOCATION, andGOOGLE_APPLICATION_CREDENTIALSin the Secret. TheGOOGLE_APPLICATION_CREDENTIALSvalue must be the in-container path of a separately mounted Google Cloud credential file.inference: providers: - type: sentence_transformers - type: vertexai id: vertex-gemini extra: project: ${env.VERTEX_AI_PROJECT:=} location: ${env.VERTEX_AI_LOCATION:=global} allowed_models: - google/gemini-2.5-flash
To enable more than one provider, combine the entries in a single inference.providers list. Keep every id unique, even when two entries use the same provider type. The following example enables two OpenAI providers and a vLLM provider while retaining the embedding provider that the default vector store uses:
inference:
providers:
- type: sentence_transformers
- type: openai
id: openai-primary
api_key_env: OPENAI_API_KEY
extra:
allowed_models:
- gpt-4o-mini
- type: openai
id: openai-secondary
api_key_env: OPENAI_SECONDARY_API_KEY
extra:
allowed_models:
- gpt-4o
- type: vllm
id: rhoai-vllm
api_key_env: VLLM_API_KEY
extra:
base_url: ${env.VLLM_URL:=}
max_tokens: ${env.VLLM_MAX_TOKENS:=4096}
network:
tls:
verify: ${env.VLLM_TLS_VERIFY:=true}
The paired Secret must define OPENAI_API_KEY, OPENAI_SECONDARY_API_KEY, VLLM_API_KEY, and a VLLM_URL value that ends in /v1. A user can then select models that any of these providers expose.
Chapter 6. AI feature permissions
To control who can use each Developer Hub Intelligent Assistant AI feature, assign the feature-linked RBAC permissions that grant access to the chat, Notebooks, MCP tools, and skills.
Each feature uses a single permission that grants full access of that feature. Permissions do not separate create, read, update, and delete actions: a role either has full permission to use a feature or no access. All AI feature permissions use the use action.
| Permission | What it grants |
|---|---|
|
|
Use the Developer Hub Intelligent Assistant chat feature, including opening the chat window, sending messages, managing chat history, and saving and reusing chat prompts. |
|
|
Use the Developer Hub Intelligent Assistant Notebooks feature, including listing, reading, creating, uploading, querying, updating, and deleting Notebooks. |
|
|
Use the Model Context Protocol (MCP) tools, including listing MCP servers and managing their configuration. |
|
|
Use the Developer Hub Intelligent Assistant skills feature. |
Agent Skills permissions
| Permission | Action | What it grants |
|---|---|---|
|
|
|
View information about the Agent Skills that are available to the deployment. This permission controls visibility only. It does not control whether skills are loaded or whether configured skills influence answers. |
Example RBAC policy
The following example grants a team full access to all Developer Hub Intelligent Assistant AI features:
p, role:default/<team>, intelligent-assistant.chat, use, allow p, role:default/<team>, intelligent-assistant.notebooks, use, allow p, role:default/<team>, intelligent-assistant.mcp.tools, use, allow p, role:default/<team>, intelligent-assistant.skills, use, allow
To grant access to a subset of features, include permissions for only those features.
Migration from previous permission names
If you are upgrading from Developer Hub 1.x, replace the previous lightspeed.* permission names with the feature-linked names. Developer Hub 2.1 grants each feature with a single permission and no longer uses individual action verbs such as create, read, update, or delete.
| Previous permissions (1.x) | New permission (2.1) |
|---|---|
|
|
|
|
|
|
|
|
|
This is a breaking change. Developer Hub 2.1 does not support the previous permission names. You must update all RBAC policies, conditional rules, and automation scripts that reference the previous lightspeed.* permission identifiers before you upgrade.
Chapter 7. Extend Intelligent Assistant with Bring Your Own Knowledge (BYOK)
Add your organization’s internal documentation as a retrieval-augmented generation (RAG) knowledge source so that Intelligent Assistant can search and cite your content alongside the default Red Hat Developer Hub (RHDH) product documentation.
7.1. Bring Your Own Knowledge (BYOK) for Intelligent Assistant
To ground AI answers in your organization’s own documentation, add an OGX vector store as a retrieval source. Developer Hub intelligent assistant then searches and cites your internal content alongside the default RHDH product documentation.
By default, Intelligent Assistant grounds AI responses in Red Hat Developer Hub (RHDH) product documentation. With BYOK, you can add knowledge sources such as internal runbooks, architecture guides, or custom API references, so that Intelligent Assistant can retrieve and cite content that is specific to your organization.
This workflow is intended for RHDH administrators. For the current vector-store generation commands and prerequisites, see the rag-content README listed in the additional resources.
7.1.1. How BYOK works
The BYOK workflow has four parts:
- Prepare source documents and citation metadata.
-
Generate embeddings and an OGX vector store with
rag-content. - Deliver the vector database and, when required, a local embedding model to the Intelligent Assistant runtime.
- Register the store as a retrieval source and verify it through the Intelligent Assistant.
The embedding model and dimension used to generate the database must match the model and dimension in the runtime configuration. A mismatch prevents reliable retrieval and can stop the vector store from loading.
7.1.2. Retrieval source ordering and prioritization
The order of entries under rag.retrieval.inline.sources or rag.retrieval.tool.sources does not assign priority to the vector stores. For example, listing custom-docs before okp does not guarantee that content from custom-docs is returned first.
Intelligent Assistant supports per-store BYOK weighting only with Inline RAG. Set score_multiplier on each entry under rag.byok.stores to adjust its relative importance. Values greater than 1.0 boost that store’s results, while values less than 1.0 reduce them.
Inline RAG queries the configured BYOK stores, multiplies each raw relevance score by that store’s score_multiplier, merges the results, and ranks them by weighted score. Consequently, a store with a higher score_multiplier receives a boost regardless of where it appears in the sources list.
Tool RAG does not apply score_multiplier. It exposes the configured stores through the file_search tool. OGX searches them, merges their chunks, and ranks the combined results by the scores returned by the stores. Use Tool RAG when the model should decide when to search. Use Inline RAG when every request must retrieve context and you require configurable BYOK store weighting.
score_multiplier applies only to BYOK stores. It does not weight OKP results, whose scores use a different scoring system. When you combine BYOK and OKP through Inline RAG, enable the supported reranker to normalize and rerank results across those sources.
Additional resources
7.2. Prepare the source documents for BYOK RAG
Organize the documents that you want Intelligent Assistant to search into a directory, and add citation metadata before you generate the vector store.
The examples in this workflow use Markdown documents, an OGX FAISS store, and the sentence-transformers/all-mpnet-base-v2 embedding model. This model produces embeddings with dimension 768.
Prerequisites
-
You have a workstation with Git and
uvinstalled, or a container runtime such as Podman. - You have access to the lightspeed-core rag-content repository.
- You have source documents that you are authorized to use.
- You have access to a container registry or another approved method of delivering files to your RHDH deployment.
-
You have a Intelligent Assistant deployment configured with the
sentence_transformersinference provider. - You have network access to download the embedding model from Hugging Face, unless the model is supplied locally.
Procedure
Create a directory for the documents that you want the assistant to search. For example:
custom_docs/ installation-guide.md operations-guide.md
Use clear headings and ordinary text wherever possible. Text embedded only in screenshots or scanned PDF pages must be converted with optical character recognition before it can be indexed reliably.
-
Process one document type per generation run and set
--doc-typeaccordingly. This example usesmarkdown. For Markdown content, add YAML frontmatter to identify the document and its canonical source URL:
--- title: Example Operations Guide url: https://docs.example.com/operations-guide --- # Example Operations Guide Document content begins here.
The metadata is stored with each generated chunk. Intelligent Assistant can use the title and URL when presenting retrieval sources and citations.
ImportantDo not include secrets, credentials, personal data, or content that users of the assistant are not authorized to retrieve. Access controls on the source system are not automatically reproduced inside a vector store.
Next steps
7.3. Generate a vector store for BYOK RAG
Install the rag-content tooling, generate a portable OGX FAISS vector store from your custom documentation, and test retrieval before you deploy the store to Intelligent Assistant.
Prerequisites
- You have prepared your content directory as described in Prepare the source documents for BYOK RAG.
-
You have a workstation with Git and
uvinstalled.
Procedure
Clone the
rag-contentrepository and install its pinned dependencies:$ git clone https://github.com/lightspeed-core/rag-content.git $ cd rag-content $ uv sync
TipUse a specific release or commit in repeatable production workflows. The generator, query helper, and runtime dependencies must be kept compatible.
From the
rag-contentrepository, generate a portable OGX FAISS vector store:$ uv run python scripts/generate_embeddings.py \ --folder /path/to/custom_docs \ --output /path/to/vector_db/custom_docs \ --index custom-docs \ --vector-store llamastack-faiss \ --model-dir "" \ --model-name sentence-transformers/all-mpnet-base-v2 \ --doc-type markdown \ --chunk-size 512 \ --chunk-overlap 128
The
llamastack-faissvalue is retained as a compatibility name in therag-contentcommand-line interface. Currentrag-contentreleases use OGX to create this store.Passing an empty value to
--model-dirrecords the Hugging Face model ID rather than a workstation-specific model path. This makes the generated store portable. At runtime, the same model ID is resolved by thesentence_transformersprovider.NoteThis model-ID configuration can require network access when the model is not already cached. For a disconnected deployment, package the embedding model and configure its runtime filesystem path as described in Deploy BYOK RAG in a disconnected environment.
Confirm the output files. The output directory contains:
-
faiss_store.db: the vector store database required at runtime. -
lightspeed-stack.yaml: an example Intelligent Assistant configuration generated for the store. -
llama-stack.yaml: the OGX configuration used to create the store.
-
Read the unique vector store ID from the generated configuration:
$ yq '.registered_resources.vector_stores[0].vector_store_id' \ /path/to/vector_db/custom_docs/llama-stack.yaml
Save this value. The runtime configuration must use the exact same ID.
Test retrieval before deployment by using the query helper from the same
rag-contentcheckout:$ uv run python scripts/query_rag.py \ --db-path /path/to/vector_db/custom_docs \ --product-index custom-docs \ --model-path "" \ --top-k 5 \ --query "Enter a question answered only by the custom documents" \ --json
Review the returned chunks, scores, titles, and source URLs. Use a question that contains a distinctive fact from the custom content so that the result is easy to distinguish from general model knowledge.
NoteSome combinations of OGX and
rag-contentcan report that the vector store is already registered whenquery_rag.pyopens a newly generated database. Do not edit the SQLite database manually. Use a compatiblerag-contentrevision or continue validation through the deployed Intelligent Assistant vector store API, and report reproducible helper failures to therag-contentproject.
Next steps
7.4. Package a BYOK RAG container image
Bundle your generated vector store into a container image so that it can be delivered to your Red Hat Developer Hub (RHDH) cluster and copied into the Intelligent Assistant runtime by an init container.
The RHDH deployment can use an init container to copy the database from the image into a shared volume that the Intelligent Assistant container mounts. Persistent volumes, configuration-management systems, or other organization-approved delivery mechanisms can also be used.
Prerequisites
- You have generated a portable OGX FAISS vector store as described in Generate a vector store for BYOK RAG.
-
You have
podmaninstalled. - You have write access to a container registry accessible to your cluster.
Procedure
Create a
Containerfilein the directory that contains yourvector_dboutput. Use the variant that matches your deployment method:For the Operator, or any deployment that adds a dedicated BYOK init container alongside the product init container, use a minimal base image:
FROM registry.access.redhat.com/ubi9-micro:latest COPY vector_db /byok/vector_db USER 1001
For the Helm chart, which exposes a single
global.lightspeed.initContainerthat you must override, derive the image from the product RAG init image so that the overridden init container can deliver both the product-provided content and your BYOK vector store:ARG PRODUCT_RAG_IMAGE FROM ${PRODUCT_RAG_IMAGE} COPY vector_db /byok/vector_db USER 1001Set
PRODUCT_RAG_IMAGEto the value ofglobal.lightspeed.initContainer.imagefrom your installed chart version. The derived image retains the product/ragdirectory and adds your custom database under/byok/vector_db.Build the image:
For the minimal UBI-based image:
$ podman build --platform linux/amd64 \ -t quay.io/your-organization/rhdh-byok:1.0.0 .
For the Helm image derived from the product RAG init image, pass an immutable product image reference:
$ podman build --platform linux/amd64 \ --build-arg PRODUCT_RAG_IMAGE=<product_rag_image_reference> \ -t quay.io/your-organization/rhdh-byok-with-product-rag:1.0.0 .
Push the image to an approved registry:
$ podman push quay.io/your-organization/rhdh-byok:1.0.0 $ podman push quay.io/your-organization/rhdh-byok-with-product-rag:1.0.0
ImportantUse an immutable version tag or image digest in production. Ensure that the image architecture matches the OpenShift worker architecture.
-
Note the final path visible inside the Intelligent Assistant container. The
db_pathconfiguration must match that runtime path exactly. For example, if the database is copied to/rag-content/vector_db/custom_docs/faiss_store.db, use that complete path in the Intelligent Assistant configuration.
7.5. Configure BYOK RAG by using the Helm chart
Deploy your BYOK container image as an init container and register the custom knowledge source in lightspeed-stack.yaml in your Helm-based Red Hat Developer Hub (RHDH) deployment.
Prerequisites
- You have packaged your vector store as a container image as described in Package a BYOK RAG container image.
-
You have the generated
vector_db_idvalue from Generate a vector store for BYOK RAG. - You have access to a running RHDH instance deployed with the Helm chart.
- The BYOK container image is accessible from your cluster.
Procedure
Prepare a complete
lightspeed-stack.yamlfile with the BYOK sections added, then create aConfigMapfrom it:WarningThe mounted file replaces the product-provided
lightspeed-stack.yamlin its entirety; it is not merged. If you create theConfigMapfrom only the BYOK sections, you remove other supported or required settings, including the service, authentication, cache, user-data and profile, MCP, and other product configuration, and Intelligent Assistant can fail to start or lose required functionality. Always create theConfigMapfrom the complete configuration for your RHDH version with the BYOK sections added to it.-
Copy or export the complete product-provided
lightspeed-stack.yamlfor your installed RHDH version to a local file. Ensure that the
sentence_transformersembedding provider is present underinference.providers, then register the store underrag.byok.storesand activate it underrag.retrieval. Add the following fragment to the local file, merging it with the existing sections rather than replacing them:inference: providers: - type: sentence_transformers # Add only if not already present rag: byok: stores: - rag_id: custom-docs backend: faiss embedding_model: sentence-transformers/all-mpnet-base-v2 embedding_dimension: 768 vector_db_id: vs_replace_with_generated_id db_path: /rag-content/vector_db/custom_docs/faiss_store.db score_multiplier: 1.0 # Used by Inline RAG only retrieval: tool: sources: - custom-docsrag_id-
The
rag_ididentifies the retrieval source. Use the same value underrag.retrieval.tool.sources. vector_db_id-
Replace with the
vector_db_idvalue that you read from the generatedllama-stack.yamlfile. The runtime configuration must use the exact same ID. db_path- Must match the path where the init container copies the database inside the Intelligent Assistant container.
rag_id-
Must match
rag_id. If you have other sources, such as product documentation, list each required source undersources.
Create the
ConfigMapfrom the completed local file:$ kubectl create configmap lightspeed-stack-byok \ --from-file=lightspeed-stack.yaml \ --dry-run=client -o yaml | kubectl apply -f -
-
Copy or export the complete product-provided
Update your Helm
values.yamlfile to reference the customConfigMapand override the Intelligent Assistant init container so that it delivers both the product-provided RAG content and your BYOK vector store. The chart mounts the RAG volume (global.lightspeed.ragVolume) automatically into both the init container and the Intelligent Assistant container at/rag-content, so you do not define extra volumes or volume mounts:ImportantThe
global.lightspeed.configMapsvalue is a Helm list. If you provide only the customizedstackentry, you replace the entire default list and remove theconfigandrhdh-profileentries. Retain every entry from your installed chart version and change only thestackentry to referencelightspeed-stack-byok. The following example shows the minimum entries to retain; match the exact list to your chart version.global: lightspeed: configMaps: - name: stack create: false nameOverride: lightspeed-stack-byok mountPath: /app-root/lightspeed-stack.yaml subPath: lightspeed-stack.yaml sourceFile: lightspeed-stack.yaml optional: false - name: config create: true nameOverride: "" mountPath: /app-root/config.yaml subPath: config.yaml sourceFile: config.yaml optional: false - name: rhdh-profile create: true nameOverride: "" mountPath: /app-root/rhdh-profile.py subPath: rhdh-profile.py sourceFile: rhdh-profile.py optional: false initContainer: 1 image: quay.io/your-organization/rhdh-byok-with-product-rag:1.0.0 command: ["sh", "-c"] args: - | set -eu mkdir -p /tmp/data /rag-content/vector_db cp -R --no-preserve=mode,ownership \ /rag/vector_db/. /rag-content/vector_db/ cp -R --no-preserve=mode,ownership \ /rag/embeddings_model /rag-content/ cp -R --no-preserve=mode,ownership \ /byok/vector_db/. /rag-content/vector_db/ mkdir -p /rag-content/vector_db/notebooks chmod -R a+rwX \ /rag-content/embeddings_model /rag-content/vector_dbImportantThe chart exposes a single
global.lightspeed.initContainer. Overriding it replaces the default init container that delivers the product-provided RAG content. The combined image built from the product RAG init image is therefore required so that the overridden init container can deliver both the product-provided content and your BYOK vector store. Give each custom store its own directory undervector_dbso that it does not overwrite a product store. Validate the result against your chart version before relying on it in production.lightspeed-stack.yaml-
Replace the default
lightspeed-stack.yamlConfigMapwith your custom one that contains the BYOK configuration. initContainer-
Override the default init container so that it copies both the product-provided content and your BYOK vector database into the automatically mounted
/rag-contentRAG volume before Intelligent Assistant starts.
Run
helm upgradeto apply the changes:$ helm upgrade <release_name> redhat-developer-hub \ --repo https://charts.openshift.io/ \ --version 2.1.0 \ -f values.yaml
Verification
Additional resources
7.6. Configure BYOK RAG by using the Operator
Deploy your BYOK container image as an init container and register the custom knowledge source in lightspeed-stack.yaml in your Operator-based Red Hat Developer Hub (RHDH) deployment.
Prerequisites
- You have packaged your vector store as a container image as described in Package a BYOK RAG container image.
-
You have the generated
vector_db_idvalue from Generate a vector store for BYOK RAG. - The RHDH Operator is installed on your cluster.
- You have cluster administrator privileges.
- The BYOK container image is accessible from your cluster.
Procedure
Prepare a complete
lightspeed-stack.yamlfile with the BYOK sections added, then create aConfigMapfrom it:WarningThe mounted file replaces the product-provided
lightspeed-stack.yamlin its entirety; it is not merged. If you create theConfigMapfrom only the BYOK sections, you remove other supported or required settings, including the service, authentication, cache, user-data and profile, MCP, and other product configuration, and Intelligent Assistant can fail to start or lose required functionality. Always create theConfigMapfrom the complete configuration for your RHDH version with the BYOK sections added to it.-
Copy or export the complete product-provided
lightspeed-stack.yamlfor your installed RHDH version to a local file. Ensure that the
sentence_transformersembedding provider is present underinference.providers, then register the store underrag.byok.storesand activate it underrag.retrieval. Add the following fragment to the local file, merging it with the existing sections rather than replacing them:inference: providers: - type: sentence_transformers # Add only if not already present rag: byok: stores: - rag_id: custom-docs backend: faiss embedding_model: sentence-transformers/all-mpnet-base-v2 embedding_dimension: 768 vector_db_id: vs_replace_with_generated_id db_path: /rag-content-byok/vector_db/custom_docs/faiss_store.db score_multiplier: 1.0 # Used by Inline RAG only retrieval: tool: sources: - custom-docsrag_id-
The
rag_ididentifies the retrieval source. Use the same value underrag.retrieval.tool.sources. vector_db_id-
Replace with the
vector_db_idvalue that you read from the generatedllama-stack.yamlfile. The runtime configuration must use the exact same ID. db_path-
Must match the path where the init container copies the database inside the Intelligent Assistant container. This procedure uses the dedicated
/rag-content-byokmount path so that the BYOK content does not replace or shadow any existing product-provided RAG content in/rag-content. rag_id-
Must match
rag_id. If you have other sources, such as product documentation, list each required source undersources.
Create the
ConfigMapfrom the completed local file:$ oc create configmap lightspeed-stack-byok \ --from-file=lightspeed-stack.yaml \ --dry-run=client -o yaml | oc apply -f -
-
Copy or export the complete product-provided
Update your
Backstagecustom resource (CR) to mount the customConfigMap, and usespec.deployment.patchto add the BYOK init container, shared volume, and volume mount. Thespec.deployment.patchvalue is a deployment fragment that the Operator merges with the generated deployment, so the BYOK init container is added alongside any existing init containers, and the dedicated/rag-content-byokmount does not replace or shadow any existing product-provided RAG content:apiVersion: rhdh.redhat.com/v1alpha5 kind: Backstage metadata: name: intelligent-assistant-rhdh spec: application: extraFiles: configMaps: - name: "lightspeed-stack-byok" mountPath: /app-root key: lightspeed-stack.yaml containers: - lightspeed-core deployment: patch: spec: template: spec: volumes: - name: byok-rag emptyDir: {} initContainers: - name: byok-rag-init image: quay.io/<your_organization>/rhdh-byok:1.0.0 imagePullPolicy: IfNotPresent command: ["/bin/sh", "-c"] args: - | set -eu mkdir -p /rag-content-byok/vector_db cp -R /byok/vector_db/. /rag-content-byok/vector_db/ volumeMounts: - name: byok-rag mountPath: /rag-content-byok securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true runAsNonRoot: true capabilities: drop: ["ALL"] seccompProfile: type: RuntimeDefault containers: - name: lightspeed-core volumeMounts: - name: byok-rag mountPath: /rag-content-byokConfigMap-
References the
ConfigMapcreated in the previous step. This replaces the defaultlightspeed-stack.yamlfor thelightspeed-corecontainer. initContainer-
The init container runs before Intelligent Assistant starts and copies the vector database to the shared
byok-ragvolume. The dedicated/rag-content-byokmount path does not replace or shadow any existing product-provided RAG content.
Apply the updated
BackstageCR:$ oc apply -f <backstage_cr_file>.yaml
Verification
Additional resources
7.7. Deploy BYOK RAG in a disconnected environment
Package the embedding model alongside the vector store and register the store with local runtime paths so that Intelligent Assistant can retrieve custom content without network access to Hugging Face.
A precomputed FAISS database contains the document embeddings, but Intelligent Assistant must still embed each incoming question before it can search that database. The runtime therefore requires the same embedding model and dimension that were used to generate the store. Supplying only faiss_store.db is not sufficient for a disconnected deployment.
The rag-content project provides a model-download helper and also bundles its default embedding model in its RAG tool image. The following upstream references are pinned to a specific revision so that the examples do not change unexpectedly:
Prerequisites
- You have generated a portable OGX FAISS vector store as described in Generate a vector store for BYOK RAG.
-
You have a connected build workstation that uses the same pinned
rag-contentcheckout used to generate the vector store. -
You have
podmaninstalled and a registry that is available to the disconnected OpenShift cluster.
Procedure
On a connected build workstation, download the embedding model:
$ mkdir -p embeddings_model $ uv run python scripts/download_embeddings_model.py \ --local-dir ./embeddings_model \ --hf-repo-id sentence-transformers/all-mpnet-base-v2
The resulting directory includes the model weights, tokenizer, configuration, pooling, and normalization files needed by the
sentence_transformersprovider. Scan and transfer this directory according to your organization’s disconnected-content process.NoteIf the vector store is generated in a disconnected build environment, pass the local directory to
--model-dirinstead of an empty value. In either case, use the exact same model weights for generation and runtime. Changing the model requires regenerating the vector store.Place the generated
vector_dbdirectory and downloadedembeddings_modeldirectory in the container build context:byok-image/ Containerfile vector_db/ custom_docs/ faiss_store.db embeddings_model/ model.safetensors config.json tokenizer.json ...Create an init-container image that contains both artifacts:
FROM registry.access.redhat.com/ubi9/ubi-minimal:latest COPY vector_db /byok/vector_db COPY embeddings_model /byok/embeddings_model RUN chgrp -R 0 /byok && chmod -R g=u /byok USER 1001
ImportantPin the base image and resulting BYOK image by digest in production. The image reference is part of the Kubernetes deployment configuration. It is not an alternative value for
db_pathorembedding_modelin the Intelligent Assistant BYOK configuration; those fields must identify paths visible inside the Intelligent Assistant container.Build the image on a connected system, scan it, and mirror it into a registry available to the disconnected OpenShift cluster:
$ podman build -t registry.example.com/rhdh/byok-content:1.0.0 . $ podman push registry.example.com/rhdh/byok-content:1.0.0
Deliver the artifacts to the Intelligent Assistant runtime and configure offline operation. The supported customization paths differ for the Helm chart and the Operator, so use the variant that matches your RHDH installation.
Helm chart
Because the chart exposes a single
global.lightspeed.initContainer, derive a combined image from the product RAG init image that also includes your custom vector database and local embedding model. Use aContainerfilesuch as:ARG PRODUCT_RAG_IMAGE FROM ${PRODUCT_RAG_IMAGE} COPY vector_db /byok/vector_db COPY embeddings_model /byok/embeddings_model USER 1001Build the combined image, passing the product RAG init image as the
PRODUCT_RAG_IMAGEbuild argument, and push it to a registry available to the disconnected OpenShift cluster:$ podman build \ --build-arg PRODUCT_RAG_IMAGE=<product_rag_image_reference> \ -t registry.example.com/rhdh/byok-with-product-rag:1.0.0 . $ podman push registry.example.com/rhdh/byok-with-product-rag:1.0.0Override the single
global.lightspeed.initContainerso that it copies the product content, your BYOK database, and the local model into the automatically mounted/rag-contentvolume, and set the offline environment variables underglobal.lightspeed.sidecar.env:global: lightspeed: sidecar: env: - name: HF_HUB_OFFLINE value: "1" - name: TRANSFORMERS_OFFLINE value: "1" initContainer: image: registry.example.com/rhdh/byok-with-product-rag:1.0.0 command: ["sh", "-c"] args: - | set -eu mkdir -p /rag-content/vector_db cp -R --no-preserve=mode,ownership \ /rag/vector_db/. /rag-content/vector_db/ cp -R --no-preserve=mode,ownership \ /byok/vector_db/. /rag-content/vector_db/ cp -R --no-preserve=mode,ownership \ /byok/embeddings_model /rag-content/embeddings_model chmod -R a+rwX \ /rag-content/embeddings_model /rag-content/vector_dbOperator
Use
spec.deployment.patchto add thebyok-ragvolume and the BYOK init container, mount the volume at/rag-content-byokin both the init container andlightspeed-core, copy both artifacts into it, and add the offline environment variables tolightspeed-core:spec: deployment: patch: spec: template: spec: volumes: - name: byok-rag emptyDir: {} initContainers: - name: byok-rag-init image: registry.example.com/rhdh/byok-content@sha256:replace_with_digest imagePullPolicy: IfNotPresent command: ["/bin/sh", "-c"] args: - | set -eu mkdir -p /rag-content-byok/vector_db /rag-content-byok/embeddings_model cp -R /byok/vector_db/. /rag-content-byok/vector_db/ cp -R /byok/embeddings_model/. /rag-content-byok/embeddings_model/ volumeMounts: - name: byok-rag mountPath: /rag-content-byok securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: true runAsNonRoot: true capabilities: drop: ["ALL"] seccompProfile: type: RuntimeDefault containers: - name: lightspeed-core env: - name: HF_HUB_OFFLINE value: "1" - name: TRANSFORMERS_OFFLINE value: "1" volumeMounts: - name: byok-rag mountPath: /rag-content-byokKubernetes init containers run before application containers, so the model and database are present when Intelligent Assistant starts.
NoteIf several init containers populate the same volume, give each vector store a unique directory and ensure that later containers merge content instead of replacing the entire
vector_dbdirectory.Register the disconnected store with local runtime paths that match your deployment method:
For the Helm chart:
rag: byok: stores: - rag_id: custom-docs backend: faiss embedding_model: /rag-content/embeddings_model embedding_dimension: 768 vector_db_id: vs_replace_with_generated_id db_path: /rag-content/vector_db/custom_docs/faiss_store.db score_multiplier: 1.0 retrieval: tool: sources: - custom-docsFor the Operator:
rag: byok: stores: - rag_id: custom-docs backend: faiss embedding_model: /rag-content-byok/embeddings_model embedding_dimension: 768 vector_db_id: vs_replace_with_generated_id db_path: /rag-content-byok/vector_db/custom_docs/faiss_store.db score_multiplier: 1.0 retrieval: tool: sources: - custom-docsembedding_model-
Using the local path prevents the
sentence_transformersprovider from attempting to resolvesentence-transformers/all-mpnet-base-v2from Hugging Face when the pod starts or processes its first query.
Verification
Additional resources
7.8. Verify the deployed vector store
Confirm that Intelligent Assistant can read the delivered artifacts, that the BYOK source is registered, and that the assistant retrieves and cites content from your custom documentation.
Prerequisites
- You have registered the store as described in Configure BYOK RAG by using the Helm chart, Configure BYOK RAG by using the Operator, or Deploy BYOK RAG in a disconnected environment.
- You have applied the configuration and restarted or rolled out the Intelligent Assistant workload so that it receives both the configuration and the database.
Procedure
Verify the following conditions after deployment:
- The init container or file-delivery process completes successfully.
-
The Intelligent Assistant container can read the configured
faiss_store.dbpath. -
For a disconnected deployment that uses a local embedding model, the Intelligent Assistant container can read the local embedding model files, including
model.safetensors, the tokenizer, and model configuration. A connected deployment that uses a Hugging Face model ID does not require these local files. - The Intelligent Assistant readiness endpoint reports success.
- The BYOK source appears in the RAG and vector-store API responses.
- The Intelligent Assistant answers a distinctive question from the custom documents and displays the expected source metadata.
From inside the Intelligent Assistant container, test the exact
db_paththat you configured, then run the readiness and API checks. Use the path that matches your deployment method:# Helm example $ test -r /rag-content/vector_db/custom_docs/faiss_store.db # Operator example $ test -r /rag-content-byok/vector_db/custom_docs/faiss_store.db $ curl --fail http://127.0.0.1:8080/readiness $ curl --fail http://127.0.0.1:8080/v1/rags $ curl --fail http://127.0.0.1:8080/v1/vector-stores
The exact host and port can differ depending on the installation. Protect administrative and diagnostic endpoints according to your organization’s security requirements.
NoteRun the following additional check only for a disconnected deployment that bundles a local embedding model. A connected deployment that uses a Hugging Face model ID, such as
sentence-transformers/all-mpnet-base-v2, does not require this file. Test the configured embedding model path, which differs by deployment method:# Test <configured_embedding_model_path>/model.safetensors, for example: # Helm example $ test -r /rag-content/embeddings_model/model.safetensors # Operator example $ test -r /rag-content-byok/embeddings_model/model.safetensors
In the Intelligent Assistant, ask a question whose answer appears only in the custom content. Confirm both the answer and the cited title or URL.
NoteA plausible answer without the expected retrieval source does not prove that BYOK retrieval occurred.
Additional resources
7.9. Update the BYOK RAG knowledge base
Regenerate and redeploy the vector store when your source documents change. The FAISS database is a generated artifact, so you must rebuild it from the authoritative document set rather than editing it in place.
Prerequisites
- You have a deployed BYOK store as described in Verify the deployed vector store.
- You have access to the updated source documents.
Procedure
- Regenerate the complete store from the authoritative document set.
- Record the newly generated vector-store ID.
- Build and publish a new immutable image or artifact version.
-
Update the runtime
vector_db_id,db_pathwhen necessary, and image reference together. Roll out Intelligent Assistant and repeat the retrieval verification.
ImportantChanging the embedding model requires regenerating the vector store. Do not reuse a database generated with a different model or embedding dimension.
Verification
7.10. BYOK RAG configuration fields for lightspeed-stack.yaml
Reference the inference, rag.byok, and rag.retrieval fields available in lightspeed-stack.yaml to register and activate custom knowledge sources for Intelligent Assistant.
7.10.1. inference fields
The sentence_transformers inference provider embeds each incoming question before Intelligent Assistant searches the vector store.
inference:
providers:
- type: sentence_transformers7.10.2. rag.byok.stores list fields
Each entry in the rag.byok.stores list defines one custom knowledge source. You can define multiple sources.
| Field | Type | Required | Description |
|---|---|---|---|
|
|
String |
Yes |
Unique identifier for this knowledge source. Referenced under |
|
|
String |
Yes |
Vector store backend type. Use |
|
|
String |
Yes |
Hugging Face model ID for the embedding model, or a local path inside the Intelligent Assistant container for a disconnected deployment. Must match the model used during vector store generation. Default: |
|
|
Integer |
Yes |
Output dimension of the embedding model. For |
|
|
String |
Yes |
Unique store identifier generated during vector store creation. Read this value from the generated |
|
|
String |
Yes |
Absolute path to the |
|
|
Float |
No |
Relative weight applied to this store’s results with Inline RAG. Values greater than |
7.10.3. rag.retrieval fields
The rag.retrieval section activates configured BYOK sources and sets the retrieval mode.
| Field | Description |
|---|---|
|
|
List of |
|
|
List of |
7.10.4. Example: Single source
inference:
providers:
- type: sentence_transformers
rag:
byok:
stores:
- rag_id: custom-docs
backend: faiss
embedding_model: sentence-transformers/all-mpnet-base-v2
embedding_dimension: 768
vector_db_id: vs_replace_with_generated_id
db_path: /rag-content/vector_db/custom_docs/faiss_store.db
score_multiplier: 1.0 # Used by Inline RAG only
retrieval:
tool:
sources:
- custom-docs
In this example, /rag-content/vector_db/… is the Helm chart path. The Operator procedure uses /rag-content-byok/vector_db/…. The db_path value must always match the actual path mounted in the lightspeed-core container for your deployment method.
7.10.5. Example: Inline RAG with per-store weighting
rag:
byok:
stores:
- rag_id: general-docs
# Other required store settings are omitted for brevity.
score_multiplier: 1.0
- rag_id: preferred-docs
# Other required store settings are omitted for brevity.
score_multiplier: 1.2
retrieval:
inline:
sources:
- general-docs
- preferred-docsscore_multiplier-
With Inline RAG,
preferred-docsreceives a boost regardless of where it appears in thesourceslist.
7.11. Resolve common BYOK RAG problems
Resolve common errors that occur when you configure or use a Bring Your Own Knowledge (BYOK) RAG knowledge source with Intelligent Assistant.
7.11.1. The store does not load
Symptom: Intelligent Assistant fails to load the vector store at startup or on the first query.
Resolution:
-
Confirm that
db_pathis the path inside the Intelligent Assistant container, not the path used on the generation workstation or inside the delivery image. -
In a disconnected environment, confirm that
embedding_modelis the local path inside the Intelligent Assistant container rather than only a Hugging Face model ID. - Confirm that the init container copied the complete model directory, including weights, tokenizer, model configuration, pooling, and normalization files.
-
Confirm that
vector_db_idexactly matches the generated ID. - Confirm that the database file is present, non-empty, and readable by the container user.
- Review init-container and Intelligent Assistant startup logs.
7.11.2. Queries return irrelevant chunks
Symptom: The knowledge source is configured and citations appear, but retrieved content is empty or unrelated.
Resolution:
- Confirm that the generation and runtime embedding models are identical.
- Confirm that the configured embedding dimension matches the model.
- Improve document headings and remove navigation or boilerplate text that dominates the content.
- Adjust chunk size and overlap, regenerate the store, and compare results with representative test questions.
7.11.3. Citations are missing or incorrect
Symptom: Responses do not include the expected source title or URL, or cite the wrong source.
Resolution:
-
Confirm that each source document contains valid
titleandurlfrontmatter. - Inspect query results to ensure that title and URL metadata were stored with the chunks.
- Confirm that the cited URL is accessible to the intended RHDH users.
Chapter 8. Customize Developer Hub Intelligent Assistant AI responses
You can customize Developer Hub Intelligent Assistant to align model behavior with your operational goals, enhance developer productivity, and ensure secure data retention.
Customize Developer Hub Intelligent Assistant by enabling user feedback, persisting chat history, and configuring Model Context Protocol (MCP) tools.
8.1. Enable user feedback to improve model performance
Enable user feedback collection to allow users to rate chat responses and submit text comments directly within the console interface.
The Lightspeed Core Service (LCORE) stores this data as JSON files inside your cluster. Because Red Hat does not collect or access this data, platform administrators must manage, analyze, and delete these files locally.
Prerequisites
- You have platform administrator privileges.
- You created and referenced a custom config map in your deployment to ensure configuration changes persist during system upgrades or Operator reconciliation loops. For more information, see Provision your custom Red Hat Developer Hub configuration.
Procedure
In your custom configuration file, such as
lightspeed-stack.yaml, modify theuser_data_collectionblock to configure your data preferences:To enable feedback collection, set the
feedback_enabledparameter totrue:user_data_collection: feedback_enabled: true feedback_storage: "/tmp/data/feedback" transcripts_enabled: true transcripts_storage: "/tmp/data/transcripts"
To disable feedback collection, set the
feedback_enabledparameter tofalse:user_data_collection: feedback_enabled: false feedback_storage: "/tmp/data/feedback" transcripts_enabled: true transcripts_storage: "/tmp/data/transcripts"
NoteDo not modify the
feedback_storageortranscripts_storagedata paths when disabling feedback. Altering these path strings prevents the service from locating existing historical logs.
- Apply the updated configuration file changes to your cluster by running your platform’s standard deployment or upgrade sequence.
8.2. Customize AI responses by using system prompts
Configure a custom system prompt to provide environmental context to the large language model (LLM). This custom instruction prefixes user queries, guiding the assistant to generate artificial intelligence (AI) responses tailored to your RHDH instance.
Prerequisites
- You have administrative access to the RHDH host platform filesystem.
Procedure
In your
app-config.yamlfile, add or modify thesystemPromptparameter under theintelligent-assistantsection, specifying your custom instruction string:intelligent-assistant: # ... other intelligent-assistant configurations systemPrompt: "You are a helpful assistant focused on Red Hat Developer Hub development."
- Save the file.
- Restart the RHDH service to apply the updated system prompt configuration.
8.3. Customize chat history storage
Configure chat history storage to choose between non-persistent local logs and a persistent external database for user conversations.
By default, the system stores chat history in a non-persistent local database within the Lightspeed Core Service (LCORE) container. To retain data across system restarts, you must configure a PostgreSQL database connection.
Storing chat history records user prompts and responses. You must assess data privacy and security implications if your user chat history contains private, sensitive, or confidential information. For users that want to have their chat data removed, they must request their platform administrator to perform this action. Red Hat does not collect or access this chat history data.
Prerequisites
- You created and referenced a custom config map in your deployment to ensure configuration changes persist during system upgrades or Operator reconciliation loops. For more information, see Provision your custom Red Hat Developer Hub configuration.
Procedure
In your custom configuration file, such as
lightspeed-stack.yaml, modify theconversation_cacheblock to specify your storage configuration:To enable persistent storage, add your PostgreSQL database credentials and endpoint properties:
conversation_cache: type: "postgres" postgres: host: _<your_database_host>_ port: _<your_database_port>_ db: _<your_database_name>_ user: _<your_user_name>"_ password: _<postgres_password>_To retain the default non-persistent SQLite setup, verify that the parameters match the following paths:
conversation_cache: type: "sqlite" sqlite: db_path: '/tmp/cache.db'
Restart the LCORE service to apply your new database configuration.
NoteSaved chat prompts are stored on the same backend as chat history. When you configure persistent storage, RHDH retains both chat history and saved prompts across system restarts.
8.4. Configure rate limits for the Intelligent Assistant
Configure per-user rate limits for the Intelligent Assistant to prevent abuse, control large language model (LLM) inference costs, and protect backend resources.
Rate limiting is active by default. Requests are tracked per authenticated user entity reference within a fixed 1-minute window. When a user exceeds the configured limit, the server returns an HTTP 429 Too Many Requests response with a Retry-After header and a JSON error body containing a RateLimitExceeded error type.
The Intelligent Assistant applies rate limits by tier:
- Expensive (default: 25 requests/min/user)
-
Applies to
POST /v1/query(LLM inference), notebook document uploads, and Retrieval Augmented Generation (RAG) queries. - General (default: 200 requests/min/user)
- Applies to all other authenticated endpoints, including conversation listing, Model Context Protocol (MCP) server management, feedback, and notebook session create, read, update, and delete operations.
- Excluded (no limit)
-
Applies to health check endpoints (
/health,/notebooks/health).
Prerequisites
- You have deployed and configured the Intelligent Assistant instance.
- You have administrative access to the RHDH host platform filesystem.
Procedure
In your
app-config.yamlfile, add or modify therateLimitblock under theintelligent-assistantsection:intelligent-assistant: rateLimit: expensive: max: 25 general: max: 200expensive.max-
Maximum requests per minute per user for expensive endpoints such as LLM inference. Set to
0to disable rate limiting for this tier. general.maxMaximum requests per minute per user for general endpoints. Set to
0to disable rate limiting for this tier.The following example shows a tightened configuration for a small deployment with limited LLM resources:
lightspeed: rateLimit: expensive: max: 10 general: max: 50
- Save the file.
- Restart the RHDH service to apply the updated configuration.
Verification
-
Log in to RHDH and submit requests to the Intelligent Assistant chat interface that exceed the configured
expensivelimit. -
Confirm that the server returns an HTTP
429 Too Many Requestsresponse with aRetry-Afterheader indicating when to retry.
Chapter 9. Provide organization context to the Intelligent Assistant with Agent Skills
To standardize how the Intelligent Assistant answers across your teams, use Agent Skills to give it your organization’s instructions and reference material, such as development standards, troubleshooting guidance, and approved workflows.
Use Agent Skills to achieve the following goals:
- Apply your development standards
- Guide the Intelligent Assistant to recommend your approved libraries, patterns, and coding conventions.
- Standardize troubleshooting
- Give developers consistent, organization-approved answers to common errors and operational issues.
- Share approved workflows
- Ground responses in your operational procedures so that developers follow the same steps across teams.
Developer Preview features are not supported by Red Hat in any way and are not functionally complete or production-ready. Do not use Developer Preview features for production or business-critical workloads. Developer Preview features provide early access to functionality in advance of possible inclusion in a Red Hat product offering. Customers can use these features to test functionality and provide feedback during the development process. Developer Preview features might not have any documentation, are subject to change or removal at any time, and have received limited testing. Red Hat might provide ways to submit feedback on Developer Preview features without an associated SLA.
For more information about the support scope of Red Hat Developer Preview features, see Developer Preview Support Scope.
9.1. Agent Skills for organization-specific guidance
Agent Skills enable you to provide the Intelligent Assistant with organization-specific instructions and reference material. For example, you can add skills that describe your development standards, troubleshooting procedures, or approved operational workflows.
The Intelligent Assistant loads skills from the container file system when the Lightspeed Core Service (LCORE) starts. To make skills available, you mount the skills into the lightspeed-core container and configure their location in the lightspeed-stack.yaml file.
Each skill is stored in its own directory. The directory must contain a SKILL.md file that provides the skill name, description, and instructions. A skill can also contain a references directory with supporting content. For example:
skills/
├── coding-standards/
│ ├── SKILL.md
│ └── references/
│ └── approved-libraries.md
└── openshift-troubleshooting/
├── SKILL.md
└── references/
└── common-errors.mdSkills provide instructions and reference content to the large language model (LLM). They do not modify the model.
9.2. Configure Agent Skills for Intelligent Assistant
Configure the Intelligent Assistant to load Agent Skills from the lightspeed-core container file system. Mount the skills into the container and declare their location in the lightspeed-stack.yaml file so that the skills are available when the Lightspeed Core Service (LCORE) starts.
Prerequisites
- You have administrative access to the RHDH deployment.
- You store your skills in a Git repository that the cluster can access, or you have the skill files available to store in a ConfigMap.
Procedure
In your custom
lightspeed-stack.yamlfile, add the mounted directory underskills.paths:skills: paths: - /app-root/skillsA path can identify either a single skill directory or a parent directory that contains multiple skill directories.
Make the skills directory available to the
lightspeed-corecontainer.NoteIf you already mount a volume that contains your skills into the
lightspeed-corecontainer, you can skip the init-container configuration. Mount the existing volume at/app-root/skills, or updateskills.pathsto match its mount path.Otherwise, configure the volume, init container, and mount before you deploy or upgrade RHDH. This configuration ensures that the skills are present when the
lightspeed-corecontainer starts.For an Operator installation, add a strategic merge patch to the Backstage custom resource (CR):
apiVersion: rhdh.redhat.com/v1alpha5 kind: Backstage metadata: name: <rhdh_instance_name> spec: deployment: patch: spec: template: spec: volumes: - name: lightspeed-skills emptyDir: {} initContainers: - name: fetch-lightspeed-skills image: <image_with_git_client> imagePullPolicy: IfNotPresent command: - /bin/sh - -ec args: - | git clone --depth 1 --branch <repository_ref> \ <skills_repository_url> /work/.source test -d /work/.source/skills cp -R /work/.source/skills/. /work/ rm -rf /work/.source volumeMounts: - name: lightspeed-skills mountPath: /work containers: - name: lightspeed-core volumeMounts: - name: lightspeed-skills mountPath: /app-root/skills
For a Helm installation, add the following configuration to the
values.yamlfile. The chart appends these entries to the generated pod specification:intelligentAssistant: enabled: true core: extraVolumeMounts: - name: lightspeed-skills mountPath: /app-root/skills extraVolumes: - name: lightspeed-skills emptyDir: {} extraInitContainers: - name: fetch-lightspeed-skills image: <image_with_git_client> imagePullPolicy: IfNotPresent command: - /bin/sh - -ec args: - | git clone --depth 1 --branch <repository_ref> \ <skills_repository_url> /work/.source test -d /work/.source/skills cp -R /work/.source/skills/. /work/ rm -rf /work/.source volumeMounts: - name: lightspeed-skills mountPath: /workReplace the following values:
<image_with_git_client>- An approved image that contains Bash and Git.
<skills_repository_url>- The URL of the repository that contains the skills.
<repository_ref>- The branch or tag to retrieve.
Optional: Grant a team permission to view skills information by adding the
intelligent-assistant.skillspermission to your RBAC policy:p, role:default/<team>, intelligent-assistant.skills, use, allowNoteThe
intelligent-assistant.skillspermission controls visibility only. It does not control whether LCORE loads skills or whether configured skills influence answers. Users who do not have this permission still benefit from the configured skills when they use the Intelligent Assistant. Do not use this permission as a security boundary for confidential skill names or descriptions.Apply the Backstage CR, or install or upgrade the Helm release.
ImportantDefine the configuration before the RHDH Deployment is created. When you update an existing installation, ensure that the change creates a new RHDH pod. The
lightspeed-corecontainer reads the mounted skills only during startup and does not reload changed skill files while the pod is running.
Verification
Verify that the RHDH pod is ready:
$ oc get pods -l app.kubernetes.io/instance=<rhdh_instance_name>Verify that the skill files are mounted in the
lightspeed-corecontainer:$ oc exec <rhdh_pod_name> -c lightspeed-core -- \ find /app-root/skills -name SKILL.md -printOpen the Intelligent Assistant and send the following query:
List available skills.
Verify that the LLM responds with the skills that are available in the current deployment.
- Ask a question that is covered by one of the configured skills, and verify that the response follows the skill instructions.
9.3. Mount Agent Skills by using a ConfigMap
If the RHDH cluster cannot access a skills repository, store each file that the skills use in a ConfigMap and mount the ConfigMap into the lightspeed-core container. Use this alternative instead of configuring an init container.
Prerequisites
- You have administrative access to the RHDH deployment.
- You have the skill files available on your local file system.
Procedure
Create a ConfigMap that contains each skill file. Give every file a unique ConfigMap key, including files in the
referencesdirectory or other supporting directories:$ oc create configmap <skills_config_map> \ --from-file=coding-standards-SKILL.md=skills/coding-standards/SKILL.md \ --from-file=coding-standards-approved-libraries.md=skills/coding-standards/references/approved-libraries.md \ --from-file=coding-standards-example-policy.yaml=skills/coding-standards/examples/example-policy.yamlNoteSpecify each file individually. When you pass a directory to
--from-file,ocreads only the files in the top level of that directory and does not process subdirectories recursively. As a result, files in thereferencesdirectory or other subdirectories are not included.Mount the ConfigMap into the
lightspeed-corecontainer.For an Operator installation, use the same
configMapvolume definition in a strategic merge patch to the Backstage custom resource (CR):apiVersion: rhdh.redhat.com/v1alpha5 kind: Backstage metadata: name: <rhdh_instance_name> spec: deployment: patch: spec: template: spec: volumes: - name: lightspeed-skills configMap: name: <skills_config_map> items: - key: coding-standards-SKILL.md path: coding-standards/SKILL.md - key: coding-standards-approved-libraries.md path: coding-standards/references/approved-libraries.md - key: coding-standards-example-policy.yaml path: coding-standards/examples/example-policy.yaml containers: - name: lightspeed-core volumeMounts: - name: lightspeed-skills mountPath: /app-root/skills
For a Helm installation, use the following
values.yamlconfiguration:intelligentAssistant: enabled: true core: extraVolumeMounts: - name: lightspeed-skills mountPath: /app-root/skills extraVolumes: - name: lightspeed-skills configMap: name: <skills_config_map> items: - key: coding-standards-SKILL.md path: coding-standards/SKILL.md - key: coding-standards-approved-libraries.md path: coding-standards/references/approved-libraries.md - key: coding-standards-example-policy.yaml path: coding-standards/examples/example-policy.yaml
-
Add the mount path under
skills.pathsin your customlightspeed-stack.yamlfile, and apply the Backstage CR or install or upgrade the Helm release. For more information, see Configure Agent Skills.
9.4. Update Agent Skills for Intelligent Assistant
To add or update Agent Skills, update the source repository or storage volume and create a new RHDH pod. The Lightspeed Core Service (LCORE) does not detect skill changes in a running pod.
Pin the skills source to a reviewed branch, tag, or commit that follows your organization’s change-management policy. In disconnected environments, mirror the required init-container image and make the skills content available from a source that the cluster can access.
Procedure
- Update the skills in the source repository, ConfigMap, or storage volume.
- Create a new RHDH pod so that LCORE loads the updated skills. For an init-container deployment, a pod restart retrieves the configured repository reference again. For a ConfigMap deployment, update the ConfigMap before you create the new pod.
9.5. Limitations for Agent Skills
Review the following limitations before you configure Agent Skills for the Intelligent Assistant.
-
The Intelligent Assistant user interface does not provide a view that lists the available skills. You can ask the LLM to
List available skills, and the LLM can respond with the skills available to the deployment. -
Skills are loaded when the
lightspeed-corecontainer starts. Adding or modifying skill files requires a new RHDH pod. -
Skills must be available on the local file system of the
lightspeed-corecontainer. The Intelligent Assistant does not retrieve skills directly from a remote URL. - Skills provide instructions and reference content only. Executable capabilities must be provided separately, for example, through Model Context Protocol (MCP) tools.
- Skill names must be unique across all configured paths.
Chapter 10. Solve project-specific challenges with Developer Hub Intelligent Assistant Notebooks
Use Developer Hub Intelligent Assistant Notebooks to research, troubleshoot, and analyze projects by using a large language model (LLM) grounded in your own documentation.
Notebooks use Retrieval-Augmented Generation (RAG) so that responses are based strictly on the files you upload. Notebooks are available in overlay, docked, and fullscreen display modes. In overlay and docked modes, you can toggle the resource panel to work with notebooks on smaller screens without switching to fullscreen.
Use Notebooks to achieve the following goals:
Query your documentation- Upload project files to ask questions, summarize content, or brainstorm ideas based on those specific documents.
Troubleshoot with project-specific context- Upload project logs, architecture diagrams, or onboarding files to receive technical answers tailored to your specific environment.
Securely analyze private data- Conduct research in isolated sessions. Your uploaded data and chat history remain private and are inaccessible to other users.
Run multiple Notebooks- Uploaded documents and chat history remain available and are re-opened through the Notebook dashboard.
Verify AI responses with citations- Use the Sources chips to view the exact document excerpts used to generate an answer.
Organize research- Use metadata and tagging to categorize different research topics.
The following constraints apply during the Developer Preview:
Data boundaries- The AI can only access data within the active Notebook session.
Private access- You cannot share notebooks or documents with other team members.
Manual uploads- You must upload files directly. The tool does not support URL ingestion or web scraping.
Ephemeral defaultsWithout a configured Persistent Volume (PV), all Notebook data and uploaded files are lost upon service restart.

Developer Preview features are not supported by Red Hat in any way and are not functionally complete or production-ready. Do not use Developer Preview features for production or business-critical workloads. Developer Preview features provide early access to functionality in advance of possible inclusion in a Red Hat product offering. Customers can use these features to test functionality and provide feedback during the development process. Developer Preview features might not have any documentation, are subject to change or removal at any time, and have received limited testing. Red Hat might provide ways to submit feedback on Developer Preview features without an associated SLA.
For more information about the support scope of Red Hat Developer Preview features, see Developer Preview Support Scope.
10.1. Solve project-specific challenges
Configure Red Hat Developer Hub and Red Hat Developer Hub Intelligent Assistant to provide users with private, document-based AI workspaces.
Prerequisites
- A deployed instance of RHDH.
-
By using the OpenShift CLI (
oc), you have access, with developer permissions, to the OpenShift Container Platform cluster aimed at containing your Developer Hub instance. - A Lightspeed Stack service is running and accessible to the backend.
- A supported large language model (LLM), such as Granite 7B or higher, is available.
Procedure
Enable the notebook feature and define your model by adding the following configuration to your
app-config.yamlfile:intelligent-assistant: notebooks: enabled: true queryDefaults: model: ${NOTEBOOKS_QUERY_MODEL} # Use the exact model name provider_id: ${NOTEBOOKS_QUERY_PROVIDER_ID}NoteIf the model name is wrong, an error message is displayed in the logs and the user interface.
Grant user access through role-based access control (RBAC) policies by defining permissions in your
rbac-policy-csvfile:Add the permission policies:
p, role:default/<your_team_name>, intelligent-assistant.notebooks, use, allowAssign the role to specific users:
g, user:default/<your_user_name>, role:default/<your_team_name>
- Apply the updated configuration and restart the service.
Verification
- Log in to RHDH using an account assigned to the RBAC role defined in the configuration.
- Confirm that the Notebooks tab is visible next to the Chat tab in the primary navigation bar.
- Click the Notebooks tab and ensure the My Notebooks dashboard loads without error messages.
10.2. Enable data persistence for Intelligent Assistant Notebooks
Notebook embeddings are stored in a FAISS vector store, which Intelligent Assistant persists to a SQLite file on disk. By default, that file lives on an ephemeral emptyDir volume, so the system clears it when the pod restarts or reschedules.
To retain Notebook documents and embeddings across restarts, move the FAISS store onto a Persistent Volume by pointing the notebooks vector store provider at a persistent mount and backing that mount with a Persistent Volume Claim (PVC). The store remains an on-disk FAISS file; only the volume behind it changes.
Depending on your installation method, note the following constraints:
-
Helm chart: The
notebooksvector store provider defaults to an ephemeral path. Moving the providerpathto a custom PVC mount (like/var/lib/lightspeed-data) works, but alternatively, you can use the chart’s nativeruntimeVolume.type: persistentVolumeClaimconfiguration. - Operator: The Operator currently mounts configuration via annotated config maps and does not expose a PVC option. Modifying the deployment manifest manually (as shown in this procedure) is unsupported for Operator installs, as changes will be reverted during operator reconciliation.
Prerequisites
-
By using the OpenShift CLI (
oc), you have access, with developer permissions, to the OpenShift Container Platform cluster that contains your Developer Hub instance. - You have authored and provisioned a custom config map for your deployment. For more information, see link:Provision your custom Red Hat Developer Hub configuration.
-
A Persistent Volume Claim (PVC) is provisioned in the namespace of your Intelligent Assistant deployment. You can use any name for the PVC. The examples in this procedure use
intelligent-assistant-notebooks-pvc.
Procedure
In your
lightspeed-stack.yamlconfig map, point thenotebooksvector store provider at a path on the persistent mount. The provider staysfaiss, so the FAISS index continues to persist as an on-disk file:vector_store: default_provider: notebooks providers: - id: notebooks type: faiss embedding_model: nomic-ai/nomic-embed-text-v1.5 embedding_dimension: 768 config: path: /var/lib/lightspeed-data/vector_db/notebooks/faiss_store.dbUpdate your deployment manifest to create the directory on the volume and mount the PVC into the Intelligent Assistant container. The config map mounts are already defined by the deployment and are unchanged:
spec: template: spec: securityContext: fsGroup: 1000 initContainers: - name: init-notebooks-storage image: registry.access.redhat.com/ubi9/ubi-minimal command: - sh - -c - mkdir -p /var/lib/lightspeed-data/vector_db/notebooks volumeMounts: - name: intelligent-assistant-notebooks mountPath: /var/lib/lightspeed-data containers: - name: lightspeed-core volumeMounts: - name: intelligent-assistant-notebooks mountPath: /var/lib/lightspeed-data volumes: - name: intelligent-assistant-notebooks persistentVolumeClaim: claimName: intelligent-assistant-notebooks-pvc- Apply the updated configuration and restart the service.
Verification
- In Red Hat Developer Hub, create a Notebook and upload a test document.
- Send a message to the virtual assistant and verify that the response is based on the document.
Restart the pod:
$ oc delete pod <pod_name>
- After the pod recovers, refresh the My Notebooks dashboard.
- Verify that the Notebook and the uploaded file are still accessible.
Chapter 11. Get AI-assisted help for your development tasks
Use Red Hat Developer Hub Intelligent Assistant, a generative AI assistant in Red Hat Developer Hub (RHDH), to ask platform questions, analyze logs, generate code, and create test plans from a chat interface.
11.1. Prerequisites
- Your platform engineer has configured the Developer Hub Intelligent Assistant service in your RHDH instance.
11.2. Enable query validation to block off-topic AI responses
Enable the question-validity shield to classify each prompt before Developer Hub Intelligent Assistant answers it, so that off-topic or harmful prompts never reach your answering model.
In RHDH 2.1, Developer Hub Intelligent Assistant validates prompts through a single question-validity shield that Lightspeed Core Service (LCORE) defines in the lightspeed-stack.yaml configuration file. This shield replaces the Llama Guard safety provider, registered shield resources, and run.yaml overrides used in earlier releases. Do not edit Open GenAI Stack (OGX) files or the generated run.yaml file to change validation behavior.
The shipped lightspeed-stack.yaml file includes the shield in a disabled state. You enable or disable the shield through environment variables in the Kubernetes Secret that LCORE reads. When you enable the shield, LCORE sends each prompt to the validation model, which classifies the prompt as allowed or rejected.
Prerequisites
-
You have an inference provider configured and enabled in the
inference.providerssection of yourlightspeed-stack.yamlfile. -
You can edit the Kubernetes Secret that supplies environment variables to the
lightspeed-corecontainer.
Procedure
To enable query validation, add the following keys to the Secret that LCORE reads:
stringData: ENABLE_VALIDATION: question_validity VALIDATION_PROVIDER: <provider_type> VALIDATION_MODEL_NAME: <model_name>
where:
ENABLE_VALIDATION-
Specifies whether the shield is enabled. You must set the value to
question_validity. A nonempty value such astruedoes not enable the shield in RHDH 2.1. VALIDATION_PROVIDER-
Specifies the type of the inference provider that runs the classification, for example,
openaiorvllm. A provider of this type must be enabled ininference.providers. VALIDATION_MODEL_NAMESpecifies the model that classifies each prompt. If the provider defines
allowed_models, include this model in that list.For example, to run classification on an
openaiprovider with thegpt-4o-minimodel, set the following values:stringData: ENABLE_VALIDATION: question_validity VALIDATION_PROVIDER: openai VALIDATION_MODEL_NAME: gpt-4o-mini
To keep query validation disabled, leave
ENABLE_VALIDATIONunset, or set it todisabled:stringData: ENABLE_VALIDATION: __disabled__
ImportantRunning without query validation increases the risk of off-topic or harmful model output. Disable validation only in secure development environments.
- Apply the updated Secret, and then restart the LCORE service so that the container reads the new environment variables.
Verification
-
Open the Intelligent Assistant and submit a development question, for example,
How do I create a software template in RHDH?. Confirm that the assistant answers the question. -
Submit a clearly unrelated question, for example,
What is a good recipe for pizza?. Confirm that the assistant rejects the question when validation is enabled.
11.3. Restrict the models available for selection
To control which models users can select in the chat dialog, define an allowlist for each inference provider in the lightspeed-stack.yaml file.
By default, the model selection dropdown menu lists every model that the configured inference provider exposes. To present users with only the functional, user-facing models that your organization approves, restrict this list with an allowlist.
In Red Hat Developer Hub 2.1 and later, the large language models (LLMs) that you configure through your inference providers perform safety validation, so no dedicated safety model appears in the model selection dropdown menu. Embedding models are also excluded. Use allowed_models when you want to narrow the list further to a specific set of approved models.
Prerequisites
-
You have access to the
lightspeed-stack.yamlconfiguration file for your deployment.
Procedure
In the
lightspeed-stack.yamlfile, add theallowed_modelsfield underextrafor each inference provider, and list the models that you want to expose to users:inference: providers: - type: openai id: openai api_key_env: OPENAI_API_KEY extra: allowed_models: - gpt-4o-miniwhere:
allowed_models- The list of models that appear in the model selection dropdown menu for that provider. Models that you omit from this list are hidden from users.
Apply the modified
lightspeed-stack.yamlfile by using a custom ConfigMap:For Operator-based deployments, see Configure the virtual assistant components.
For Helm-based deployments, see Configure Developer Hub Intelligent Assistant by using the Helm chart.
- Apply the updated configuration to your cluster, and restart the deployment if it does not trigger an automatic rollout.
Verification
- Log in to your RHDH instance.
- Open the chat dialog and select the model selection dropdown menu.
- Confirm that the dropdown menu lists only the allowed models.
11.4. Best results for assistant queries
To resolve technical blockers and accelerate development tasks, you must structure your queries to give specific context to the AI assistant. Using precise prompts makes sure that Developer Hub Intelligent Assistant generates relevant code snippets, architectural advice, or platform-specific instructions.
Use the following strategies to improve the accuracy of the assistant’s output during your development workflow:
- Specify technologies
- Instead of asking "How do I use templates?", ask "How do I create a Software Template that scaffolds a Node.js service with a CI/CD pipeline".
- Give context
- Include details about your environment, such as "I am deploying to OpenShift; how do I set up my catalog-info.yaml to show pod health?".
- Use conversation context
- Ask follow-up questions to refine an earlier answer. For example, if the assistant gives a code snippet, you can ask "Now rewrite that using TypeScript interfaces."
- Validate with citations
- Check the provided documentation links and citations in the response to verify that the generated advice aligns with your organization’s official standards.
- Improve assistant accuracy
- Rate the utility of responses by selecting the Thumbs up or Thumbs down icons. This feedback helps tune the model for your organization’s specific requirements.
To keep your data secure, do not include sensitive personal information, plain text credentials, or confidential business data in your queries.
11.5. AI response monitoring and context management
Developer Hub Intelligent Assistant provides features to track the AI reasoning process and keep the context of your development tasks.
- Thinking cards
- An expandable thinking card is displayed while the AI processes a query. A pulse animation indicates the reasoning phase. You can expand the card to view detailed reasoning or collapse it to minimize screen clutter.
- Tool call transparency
- An expandable card displays details for Model Context Protocol (MCP) tool calls, which you can use to monitor background processes.
- Context-aware citations
- Retrieval-Augmented Generation (RAG) citations appear only when the AI uses internal documentation. This makes sure that general knowledge responses remain concise.
- Context preservation during model changes
- When you select a different AI model, Developer Hub Intelligent Assistant starts a new conversation. This keeps your earlier chats available in your history.
- Structural readability
- The interface formats headings and bullet points automatically to make sure responses are scannable.
11.6. Manage chats
Manage your chat history and configuration in RHDH to organize your workspace, resume earlier tasks, or find past solutions.
Prerequisites
- You have configured the Developer Hub Intelligent Assistant plugin in Red Hat Developer Hub.
- You have logged in to the RHDH console.
Procedure
Click the Open intelligent assistant floating action button (FAB) at the lower right of the screen to open the chat overlay.

Optional: Configure the interface display and server settings:
Click the Chatbot options icon (⋮) in the header to open the options menu.

- In the Chatbot options menu, toggle Enable pinned chats or Disable pinned chats to show or hide the pinned chats. The system enables this option by default.
- Available only if Model Context Protocol (MCP) is configured: In the Chatbot options menu, click MCP and Prompt Settings to manage Model Context Protocol connections.
In the Chatbot options menu, under Display mode, select any of the following views:
Overlay: A floating window is displayed over the current page content.

Dock to window: A panel attaches to the right side of the screen. Activating this mode automatically closes the Quick start panel if it is already open.

Fullscreen: A dedicated page opens for intensive chat sessions. This mode displays a revised header containing the Developer Hub Intelligent Assistant icon and a horizontal tab bar, which replaces the previous main menu. Bookmark the URL in your browser to save a direct link to the chat interface.

Start a chat or load an earlier session:
- Enter a prompt: Type a query in the Enter a prompt for the intelligent assistant chat field and press Enter.
- Use a sample: Click a prompt tile.
Change the AI model: Select a model from the model selector dropdown menu inside the prompt bar.

Attach a file: Click the (
+) icon on the left of the prompt bar to upload a.yaml,.json, or.txtfile. Descriptive text clarifies the function of the icon.
- Use voice: Click the Use microphone icon. The microphone and send buttons are located on the right side of the prompt bar.
Control AI generation: Use the control buttons on the right side of the prompt bar. Click the Send (
>) button to submit queries, or click the Stop button to halt AI generation.

- Resume a chat: Select a title from the Chats list.
Organize your chat history:
Start a new topic: Click New chat to reset the assistant’s context. When the history panel is collapsed, click the New chat icon to create a new chat.


- Search history: Enter a keyword in the Search field.
Rename a session: Click Options next to a chat title, select Rename, enter a new name in the Rename chat? dialog, and click Rename.

- Pin a chat: Click Options next to a chat title and select Pin. The chat moves to the Pinned group.
Sort chats: Click the Sort control and choose a sorting criterion, such as Date (Newest first).

Delete a chat: Click Options next to a chat title and select Delete.

- Collapse or expand a category: Click a category header, such as Pinned, Saved prompts, or Recent, to collapse or expand that section of the chat history sidebar.
Expand or collapse the panel: Click the Expand/collapse icon to toggle the history panel.

NoteThe expanded panel is resizable up to a defined maximum width.
- Optional: To hide the interface, if you are in the Overlay or Dock to window mode, click the Close intelligent assistant FAB to hide the window. If you are in Fullscreen mode, revert to the other modes and click the Close intelligent assistant FAB. The system preserves your active query and history.
Verification
- The main window displays the active chat or selected history.
- The chat history list reflects renamed, pinned, or deleted entries.
11.7. Save and reuse chat prompts to avoid retyping
To reuse instructions that you enter frequently, save them as prompts in Developer Hub Intelligent Assistant and apply them in any chat session without retyping or pasting them. Saved prompts are private to your account and available across the overlay, docked, and fullscreen chat modes.
Prerequisites
- You have configured the Developer Hub Intelligent Assistant plugin in Red Hat Developer Hub.
- You have logged in to the RHDH console.
Procedure
- Click the Open intelligent assistant floating action button (FAB) at the lower right of the screen to open the chat overlay.
Create a saved prompt:
Click the Chatbot options icon (⋮) in the header and select MCP and Prompt Settings.

Click the Saved prompts tab.

- Click + New prompt.
Enter a Title of 128 characters or fewer and a Prompt of 5,000 characters or fewer.

Click Save.
NoteBy default, you can save up to 100 prompts. When you reach the limit, delete an existing prompt before you create a new one.
Reuse a saved prompt from the Saved prompts section of the chat history sidebar or from the Saved prompts tab:

To insert the prompt into the message field so that you can review or edit it before sending, click the prompt, or select Apply in input box from the prompt’s options menu.

To insert and submit the prompt immediately, select Send directly from the prompt’s options menu.

NoteWhen the sidebar lists more than five saved prompts, click Show all to display the remaining prompts, or click Show less to collapse the list.
Optional: To remove a saved prompt, select Delete from the prompt’s options menu, and then confirm the deletion. Deleting a saved prompt is permanent.

Optional: To open the Saved prompts settings directly, click the settings (gear) icon next to the Saved prompts section in the chat history sidebar.

- Optional: To show or hide the Saved prompts feature, click the Chatbot options icon (⋮) in the header and toggle Enable saved prompts or Disable saved prompts. Saved prompts are enabled by default. When you disable the feature, RHDH hides the Saved prompts section and excludes your saved prompts from the default prompts offered in a new chat.
Verification
- The Saved prompts tab displays the prompt count and your new prompt.
- Clicking or sending a saved prompt applies its content in the message field.
- Deleted prompts are removed from both the sidebar and the Saved prompts tab.
11.8. Build a private knowledge base with Developer Hub Intelligent Assistant Notebooks
Use Developer Hub Intelligent Assistant notebooks to create isolated research environments. These workspaces allow you to analyze project data securely by using a large language model (LLM) grounded in your specific documentation.
Developer Preview features are not supported by Red Hat in any way and are not functionally complete or production-ready. Do not use Developer Preview features for production or business-critical workloads. Developer Preview features provide early access to functionality in advance of possible inclusion in a Red Hat product offering. Customers can use these features to test functionality and provide feedback during the development process. Developer Preview features might not have any documentation, are subject to change or removal at any time, and have received limited testing. Red Hat might provide ways to submit feedback on Developer Preview features without an associated SLA.
For more information about the support scope of Red Hat Developer Preview features, see Developer Preview Support Scope.
11.8.1. Create isolated research workspaces
Organize your work into individual notebook sessions to keep research topics separate and private.

Procedure
- In the RHDH interface, click the Open intelligent assistant floating action button (FAB) at the lower right of the screen to open the chat overlay.
- In your Developer Hub Intelligent Assistant page, select the Notebooks tab.
Click Create a new notebook to start a new workspace.
The notebook opens with an empty resource panel. Use the display mode controls in the menu bar to switch between fullscreen, docked, and overlay modes. In overlay or docked mode, click the toggle icon to show or hide the resource panel, or click the collapse icon to minimize the current view.
NoteWhen you close a notebook, the system saves it if you edited the name or added resources. Otherwise, the system discards the unedited, empty notebook.
Optional: To manage your workspaces, complete any of the following actions:
- Rename: Click the notebook name to edit it inline. Click outside the field or press Enter to save, or press Escape to cancel. Alternatively, hover over the notebook card, click the More options icon, and select Rename.
Delete: Hover over the notebook card, click the More options icon, and select Delete.

Verification
Confirm the new notebook card appears on the My Notebooks dashboard. Each card displays the notebook name, the resource count (for example, "0 Resources", "1 Resource", or "5 Resources"), and the last updated date.

11.8.2. Provide project context to the AI
To receive answers tailored to your project, upload and manage relevant source material in your active session.
Prerequisites
The files that you add adhere to the following constraints:
File limit- You can add up to 10 files at a time. When this limit is reached, the drag-and-drop area is disabled and a tooltip indicates the limit.
File size- Individual files must be 25 MB or smaller.
Notebook Capacity- The total token count per session must not exceed 100k.
Unsupported content- Avoid scanned PDF images without text, audio, video, and general image files.
Persistence requirement- The internal SQL and KV stores must be mapped to a persistent backend to maintain the 100k token context across sessions.
Procedure
- Open a notebook card from the dashboard.
Add resources by using one of the following methods:
-
In the sidebar, click Add (
+). - In the main user interface, click Add a resource.
-
In the sidebar, click Add (
In the Add resources modal, drag and drop files or click to browse. Supported formats are displayed as chips in the modal and include
.txt,.log,.md,.pdf,.json,.yaml, and.yml.
If you add a file that exists in the notebook, the system highlights the duplicate and prompts you to select either Replace existing files or Ignore duplicated files.
NoteA successful upload completes without a confirmation message. If an upload fails, an error notification describes the problem.
- Wait for the system to process and vectorize the files. This might take several seconds for larger PDFs.
Optional: To manage resources in the sidebar, hover over a resource to display the More options icon. You can Rename or Delete a resource. To rename a resource, click its name to edit it inline, or select Rename from the menu.

Verification
- Ensure the uploaded files appear in the Resources list in the sidebar.
11.8.3. Extract and verify document-based insights
After providing context, use the AI to perform reasoning across your files and verify the accuracy of the responses.

Prerequisites
You have uploaded documents to the active chat session to establish context.
NoteIf a notebook contains no resources, the message bar is inactive and displays the placeholder text
Ask about your resources…. Hovering over the inactive message bar displays the tooltipSelect at least one loaded resource to start chatting. You cannot enter a query until you add at least one resource.Procedure
Enter a question in the message bar at the bottom of the screen. The message bar includes a microphone icon for voice input. The Send button appears only after you enter text. To cancel an ongoing response, click the Stop button.

- Analyze the response. The AI identifies relationships across all uploaded documents in the session.
To verify accuracy, click the Sources chip to open a popover listing the specific documents used to generate the answer. Each source displays its filename and file type icon.

- Manage your workflow by using the history panel in the sidebar to expand or collapse previous interactions.
Verification
- Confirm that the Sources popover displays the correct filenames corresponding to the AI’s response.
Chapter 12. AI model evaluation data to select the right AI model
Use the Red Hat Developer Hub Intelligent Assistant evaluation framework to validate the performance, accuracy, and reliability of Developer Hub Intelligent Assistant.
With this automated toolset, you can measure how effectively various large language models (LLMs) answer questions based on Red Hat Developer Hub documentation.
Table 12.1. Components of the evaluation framework
| Component | Description |
|---|---|
|
Evaluation framework |
Contains the core logic and scripts used to run evaluations. |
|
Datasets |
Includes the input files used to test the model. |
|
Evaluation metrics integration |
Provides scoring through various metrics, including Ragas, DeepEval, and custom metrics. Ragas is the primary metric used to validate Developer Hub Intelligent Assistant performance. |
12.1. Configure the evaluation environment to validate model accuracy
Set up the evaluation environment to validate the performance and accuracy of Developer Hub Intelligent Assistant. Configure this evaluation to ensure the model correctly interprets documentation and provides dependable answers.
Developer Preview features are not supported by Red Hat in any way and are not functionally complete or production-ready. Do not use Developer Preview features for production or business-critical workloads. Developer Preview features provide early access to functionality in advance of possible inclusion in a Red Hat product offering. Customers can use these features to test functionality and provide feedback during the development process. Developer Preview features might not have any documentation, are subject to change or removal at any time, and have received limited testing. Red Hat might provide ways to submit feedback on Developer Preview features without an associated SLA.
For more information about the support scope of Red Hat Developer Preview features, see Developer Preview Support Scope.
By performing these evaluations, you minimize the risk of the model delivering incorrect or hallucinated information to users in production.
Prerequisites
- Install uv for Python package management (Python 3.11 or later).
Procedure
Clone the evaluation repository and navigate to the directory:
git clone https://github.com/lightspeed-core/lightspeed-evaluation cd lightspeed-evaluation
Synchronize the environment and install dependencies:
uv sync
Configure the environment variables for the judge LLM. You can create a
.envfile in the root directory or export the keys directly to your terminal.If you use Gemini, you must set the Gemini API key:
export GEMINI_API_KEY="your-google-api-key"
If you use OpenAI, you must set the OpenAI API key:
export OPENAI_API_KEY="your-key"
Optional: If you test with a live service, set your Developer Hub Intelligent Assistant service API key:
export API_KEY="your-lightspeed-service-key"
Verification
Verify that the environment is synchronized and the virtual environment is active:
uv run python --version
The output must return Python 3.11 or later.
12.2. Prepare evaluation datasets to verify AI-generated responses
Prepare evaluation data sets to test the performance of Developer Hub Intelligent Assistant. You can use pre-generated AI data sets for specific Red Hat Developer Hub releases or generate custom AI data sets from your own documentation.
Prerequisites
- You must clone the evaluation repository to your local machine.
Procedure
Download pre-generated data sets: Use this method to test the performance of specific RHDH releases. These data sets are generated using Ragas testset generation for RAG.
- In your terminal, navigate to the /dataset folder in the evaluation repository.
-
Locate the
.evaluation_dataset_yamlfiles. These files are pre-configured for the evaluation tool. To test a historical release, switch to the corresponding branch.
For example, to access the Red Hat Developer Hub 1.8 data set, switch to the
1.8branch.ImportantThe
mainbranch contains work-in-progress (WIP) data sets. Avoid using this branch for stable evaluations.
Generate custom data sets: Use this method to create a new test set from your own technical documentation.
- Generate a diverse set of question-and-answer (Q&A) pairs by following the Ragas test data generation documentation.
- Ensure your Q&A pairs match the required format by reviewing the evaluation data structure configuration.
Verification
- Verify that your custom data set matches the required schema before you start the evaluation run.
12.3. Run performance tests to ensure AI response reliability
Use the evaluation framework to run performance tests in either static mode to evaluate pre-recorded responses or dynamic mode to call a live service.
These evaluations identify performance gaps, allow you to compare different large language models (LLMs), and ensure that Developer Hub Intelligent Assistant provides reliable information to users.
Prerequisites
- You must install and configure the evaluation environment.
- You must prepare an evaluation data set.
Procedure
-
Download the
system.yamlconfiguration template from the repository. Configure the parameters in the
system.yamlfile based on your evaluation mode:Field Description llmDefines the judge LLM that scores the responses, such as
gemini-2.5-pro.api.enabledSet to
falsefor static mode to use pre-filled data. Set totruefor dynamic mode to call a live service.api.api_base(Required for dynamic mode only) Provide the URL of your Developer Hub Intelligent Assistant service.
api.endpoint_typeSpecify the service configuration type:
streamingorquery.Execute the evaluation by using the
lightspeed-evalcommand:lightspeed-eval \ --system-config config/system.yaml \ --eval-data config/evaluation_data.yaml \ --output-dir ./my_evaluation_results
Verification
- Navigate to the specified output directory and verify that the generated reports contain the model performance scores.
12.4. Analyze evaluation results to identify performance gaps
Determine the performance of Developer Hub Intelligent Assistant and identify documentation areas that require model improvement by analyzing evaluation results in the repository. You can use these reports to compare performance across different large language models (LLMs) and topics.
Prerequisites
-
You must have access to the
rhdh-intelligent-assistant-evaluationrepository.
Procedure
-
In the root of the repository, navigate to the version-specific folder within the
/evaluation-resultdirectory. Open the following files to evaluate performance:
- Model Pass Rate: Compare the overall performance between different LLMs.
- Topic Pass Rate: Identify performance trends and gaps within specific documentation areas.
Verification
- Verify that the reports display data visualizations or metrics consistent with your recent evaluation run.
12.5. Evaluation metrics and historical data reference
Use the available metrics to evaluate the performance of Developer Hub Intelligent Assistant at the conversation turn level.
These metrics provide a standardized way to measure the accuracy and reliability of the generated responses and the retrieved content.
| Metric | Description |
|---|---|
|
|
Measures how well the answer is derived solely from the retrieved context. |
|
|
Measures whether the retrieved context contains all information required to answer the question. |
|
|
Verifies if the retrieved documentation chunks are relevant to the user query. |
|
|
Measures the ratio of useful information within the retrieved documentation chunks. |
|
|
Compares the generated response against the expected ground-truth response. This custom metric is implemented in the evaluation tool. |
12.6. Release report and historical data
Use the latest Q&A data set and evaluation results to monitor the current performance of Developer Hub Intelligent Assistant.
Access version-specific branches that contain the data sets and evaluation results required to track improvements or regressions across product releases.
The main branch contains work-in-progress data for versions currently under development. For stable evaluations or historical tracking, you must switch to the branch associated with a specific release.
| Release version | Branch name | Data included |
|---|---|---|
|
Latest stable |
Most recent version branch |
The current question and answer (Q&A) data set and evaluation results. |
|
Historical |
Previous version branches |
Data sets and evaluation results for previous releases to track regressions. |
Chapter 13. Appendix: LLM requirements
Review large language model (LLM) provider compatibility and system requirements for OpenAI, Red Hat OpenShift AI, vLLM, and Google Vertex AI to plan your Developer Hub Intelligent Assistant infrastructure deployment.
13.1. Large language model (LLM) requirements
To plan your Developer Hub Intelligent Assistant deployment, you must determine which compatible large language model (LLM) inference provider fits your infrastructure.
Developer Hub Intelligent Assistant operates on a Bring Your Own Model (BYOM) architecture. Because the service does not include a native model, you must connect a compatible inference provider during installation.
The underlying LCORE service integrates with platforms that support either the OpenAI API specification or the vLLM inference engine. Developer Hub Intelligent Assistant supports the following inference provider configurations:
- OpenAI: Cloud-based inference services.
- vLLM: Enterprise inference servers, which include models hosted on Red Hat OpenShift AI and Red Hat Enterprise Linux AI.
- Google Vertex AI: Cloud-based inference services, which include Gemini models.
Developer Hub Intelligent Assistant supports only the inference providers that the underlying LCORE service supports.
The following table lists the inference providers Developer Hub Intelligent Assistant supports.
| Provider | Type | Supported |
|---|---|---|
|
OpenAI |
Remote |
Yes |
|
Azure |
Remote |
Yes |
|
Amazon Bedrock |
Remote |
Yes |
|
Google Vertex AI |
Remote |
Yes |
|
IBM watsonx |
Remote |
Yes |
|
Red Hat OpenShift AI (vLLM) |
Remote |
Yes |
|
Red Hat Enterprise Linux AI (RHAIIS/vLLM) |
Remote |
Yes |
When configuring your deployment, you must account for the following provider behaviors:
- Red Hat OpenShift AI routing: Because the configuration lacks an explicit Red Hat OpenShift AI provider option, you must route these deployments through the vLLM provider settings.
-
vLLM URL syntax: The
vllmprovider type communicates with endpoints that conform to the OpenAI API schema. You must manually append/v1to the configured provider URL because the system does not add it automatically. This configuration also applies to other hosted, OpenAI-compliant inference providers.
Additional resources
13.2. OpenAI model integration for your deployment
Use OpenAI models to provide generative artificial intelligence (AI) inference services, such as GPT 5, for your Developer Hub Intelligent Assistant deployment.
The system connects directly to the OpenAI API platform to route user prompts and return model insights. To configure this large language model (LLM) provider, you must have an active API key generated from your OpenAI developer account.
Additional resources
13.3. vLLM model integration for high-throughput inference
Use the open-source vLLM high-throughput serving framework to optimize memory utilization and manage high volumes of concurrent requests for your Developer Hub Intelligent Assistant deployment.
The vLLM framework operates as an enterprise inference server that optimizes memory allocation to maximize the processing efficiency of large language models (LLMs). Integrating vLLM ensures that your environment maintains high performance and responsiveness under heavy concurrent user traffic.
Additional resources
13.4. Vertex AI integration for Gemini models
To use Gemini models with Developer Hub Intelligent Assistant, you can configure Google Cloud Vertex AI to act as your managed large language model (LLM) inference provider.
The underlying LCORE service connects to Vertex AI to access hosted Gemini models. This integration provides Developer Hub Intelligent Assistant with enterprise-grade language processing and chat assistance capabilities without requiring you to maintain a local inference server.
Additional resources
Chapter 14. Appendix: Manage user data security
Review data handling practices, feedback storage protocols, and model configuration architectures, such as the Bring Your Own Model approach, to evaluate and enforce information security standards for your organization.
14.1. Manage user data security
Review data routing and privacy practices to evaluate how Developer Hub Intelligent Assistant handles chat messages and operational information transmitted to large language model (LLM) providers.
Developer Hub Intelligent Assistant sends your chat messages directly to your configured large language model (LLM) provider. Because these messages can contain sensitive operational data regarding your cluster, users, or business environment, ensure that your provider compliance policies align with your organizational security standards.
Developer Hub Intelligent Assistant has limited capabilities to filter or redact the information you submit during user interactions. To mitigate data exposure risks, do not enter proprietary or confidential information into Developer Hub Intelligent Assistant. To encourage user compliance, Developer Hub Intelligent Assistant displays a mandatory warning at the start of each sessions, reminding users to omit personal or sensitive details.
14.2. User feedback collection
Review how Developer Hub Intelligent Assistant collects and isolates user feedback data within your cluster to manage local storage requirements and data privacy standards.
Developer Hub Intelligent Assistant saves user feedback submissions, including numerical ratings and text commentary, locally within the pod filesystem. Because Red Hat does not collect, access, or transmit this data, local platform administrators must manage and monitor these storage directories.
14.3. Bring Your Own Model integration
Review Bring Your Own Model (BYOM) requirements to select and integrate an OpenAI API-compatible inference service with Lightspeed Core Service.
Developer Hub Intelligent Assistant relies on a BYOM architecture that let you connect the Lightspeed Core Service (LCORE) layer to any OpenAI API-compatible inference platforms. To establish connection compatibility, your chosen inference service must satisfy the following technical criteria:
- The service must conform to the OpenAI API specification for chat completions.
- The host environment must match the specified infrastructure configuration and installation instructions.
Various commercial and open-source inference services support the OpenAI API specification. Because operational costs, performance metrics, and data security controls vary by provider, you must evaluate and test prospective platforms locally to select the service that best meets your organizational requirements.
Additional resources
14.4. Your compliance and data-sharing responsibility
Review compliance requirements and data-sharing responsibilities to ensure that user interactions with Developer Hub Intelligent Assistant align with your organization’s data privacy policies.
All data that users submit through prompts and responses within Developer Hub Intelligent Assistant is transmitted directly to your configured large language model (LLM) inference service. Platform administrators must ensure that these external data transfers comply with corporate security standards, governance frameworks, and local data protection policies.