Prerequisites
Infrastructure requirements
The machine running the Context Engine components should have at least:
PostgreSQL Instance (Recommended Size):
vCPU : 4
Memory : 32 GB
Disk : 100 GB
You may opt for smaller instances if working with a relatively small codebase.
PostgreSQL Version : 17
Required Configuration:
pg_vector extension installed
Note: This is pre-installed in managed cloud deployments.
TCP port 5432 must be accessible from the Kubernetes cluster where the Context Engine will be deployed
Two separate databases:
Two PostgreSQL users with full access to their respective databases
Supported Git Providers:
GitHub (Cloud or Enterprise)
GitLab
Bitbucket Data Center
Models supported
These models are used by the Context Engine and must be available for the Context Engine to be used:
Contact Qodo support if none of these AI models are supported by your system .
Contact Qodo support If you’re using a custom LLM gateway .
1. Context Engine Installation
The Context Engine consists of a few components. Install them in the following order :
metadata-service
rag-indexer
context-retriever
context-retriever-mcp (only if you’d like to connect your codebase understanding capabilities to tools that are not Qodo Gen or Qodo Merge).
We recommend deploying all components in the same Kubernetes namespace .
Each component requires its own values.yaml file with configuration like the following.
Example metadata-values.yaml:
image :
repository : artif-reg-self-hosted.codium.ai/proxy/codium-stack/us-central1-docker.pkg.dev/codium-production/codium-repo-self-hosted/qodo-engine-metadata
tag : 1.33.1
deployments :
enabled : true
resources :
requests :
cpu : "500m"
memory : "2Gi"
ports :
- containerPort : 8000
name : http
probes :
liveness :
httpGet :
path : /api/v1/health
port : http
initialDelaySeconds : 15
failureThreshold : 5
periodSeconds : 30
successThreshold : 1
service :
enabled : true
type : NodePort
port : 8000
ports :
http :
targetPort : http
# add externalSecrets block here if needed
volumes :
qodo-aware-secrets :
secret :
secretName : qodo-aware-secrets
volumeMounts :
qodo-aware-secrets :
mountPath : /workspace/app/config_prod
See all 41 lines
Install with Helm:
helm upgrade --install metadata-service oci://artifacts-self-hosted.qodo.ai/codium-stack/stable/module -f ./metadata-values.yaml
2. rag-indexer
image:
repository: artif-reg-self-hosted.codium.ai/proxy/codium-stack/us-central1-docker.pkg.dev/codium-production/codium-repo-self-hosted/qodo-engine-indexer
tag: 1.33.1
deployments:
enabled: true
resources:
requests:
cpu: "500m"
memory: "2Gi"
ports:
- containerPort: 3000
name: http
probes:
liveness:
httpGet:
path: /api/v1/indexer/health
port: http
initialDelaySeconds: 15
failureThreshold: 5
periodSeconds: 30
successThreshold: 1
service:
enabled: true
type : NodePort
port: 3000
ports:
http:
targetPort: http
# add externalSecrets block here if needed
volumes:
qodo-aware-secrets:
secret:
secretName: qodo-aware-secrets
volumeMounts:
qodo-aware-secrets:
mountPath: /workspace/qodo_engine/shared_settings/secrets
cronJobs:
reindex:
schedule: "0 3 * * *"
concurrencyPolicy: "Allow"
suspend : false
image:
repository: curlimages/curl
tag: 8.11.1
pullPolicy: IfNotPresent
command :
- "/bin/sh"
- "-c"
- "curl -X POST -H 'Content-Type: application/json' -d '{}' http://indexer:3000/api/v1/indexer/reindex"
configMaps:
main:
REINDEX_CRONJOB_SCHEDULE: "0 3 * * *"
ENVIRONMENT_TYPE: "ON_PREM"
See all 60 lines
Install with Helm:
helm upgrade --install rag-indexer oci://artifacts-self-hosted.qodo.ai/codium-stack/stable/module -f ./rag-indexer-values.yaml
3. context-retriever
image :
repository : artif-reg-self-hosted.codium.ai/proxy/codium-stack/us-central1-docker.pkg.dev/codium-production/codium-repo-self-hosted/qodo-engine-context-retriever
tag : 1.33.1
deployments :
enabled : true
resources :
requests :
cpu : "500m"
memory : "2Gi"
ports :
- containerPort : 8001
name : http
probes :
liveness :
httpGet :
path : /v1/context/health
port : http
initialDelaySeconds : 15
failureThreshold : 5
periodSeconds : 30
successThreshold : 1
service :
enabled : true
type : NodePort
port : 8001
ports :
http :
targetPort : http
volumes :
qodo-aware-secrets :
secret :
secretName : qodo-aware-secrets
# add externalSecrets block here if needed
volumeMounts :
qodo-aware-secrets :
mountPath : /app/qodo_engine/shared_settings/secrets
envFrom :
configMapRefs :
- name : main
configMaps :
main :
SERVICE_CONFIG__AUTH_BACKEND_PROVIDER : "noauth"
ENVIRONMENT_TYPE : "ON_PREM"
test : "TEsts"
See all 51 lines
Install with Helm:
helm upgrade --install context-retriever oci://artifacts-self-hosted.qodo.ai/codium-stack/stable/module -f ./context-retriever-values.yaml
Trigger initial indexing (if you prefer to not wait until the cronjob is triggered): kubectl create job indexer-reindex-manual --from=cronjob/indexer-reindex
Verify indexer pod (that is part of the deployment, not the job) logs, to confirm indexing has completed (can take anywhere from minutes to up to a day, depends on how many repositories are configured and how big they are).
4. context-retriever-mcp
Note : Set context-retriever-mcp only if you’d like to connect your codebase understanding capabilities to tools that are not Qodo Gen or Qodo Merge.
image :
repository : artif-reg-self-hosted.codium.ai/proxy/codium-stack/us-central1-docker.pkg.dev/codium-production/codium-repo-self-hosted/qodo-engine-context-retriever
tag : 1.5.0
deployments :
enabled : true
resources :
requests :
cpu : "500m"
memory : "2Gi"
ports :
- containerPort : 8001
name : http
probes :
liveness :
httpGet :
path : /health
port : http
initialDelaySeconds : 15
failureThreshold : 5
periodSeconds : 30
successThreshold : 1
ingress :
enabled : true
host : "" # add client host here
annotations :
# add relevant annotations here
hosts :
- paths :
- path : /mcp
pathType : Prefix
replicaCount : 1
service :
enabled : true
type : NodePort
port : 8001
ports :
http :
targetPort : http
volumes :
qodo-aware-secrets :
secret :
secretName : qodo-aware-secrets
# add externalSecrets block here if needed
volumeMounts :
qodo-aware-secrets :
mountPath : /app/qodo_engine/shared_settings/secrets
envFrom :
configMapRefs :
- name : main
configMaps :
main :
SERVICE_CONFIG__EXPOSE_MCP_SERVER : "true"
ENVIRONMENT_TYPE : "ON_PREM"
SERVICE_CONFIG__AUTH_BACKEND_PROVIDER : "local"
See all 63 lines
2. Finish Setup on your version control
Finish setting up Qodo Aware on your version control:
Bitbucket Data Center
2.1 Custom CA
If you are using an on-prem git provider with HTTPS connection from qodo-engine you will need to configure the custom CA like this:
configMaps :
main :
CONFIG__CERTIFICATE_BUNDLE : "/etc/ssl/custom/ca.pem"
volumeMounts :
custom-ca :
mountPath : /etc/ssl/custom/ca.pem
subPath : ca.pem
volumes :
custom-ca :
secret :
secretName : customer-ca-secret
Enabling Context Engine functionality in the Git Integration
Git Integration
Update qodo-merge secret, append the following
[rag_arguments]
enable_rag = true
[context_retrieval_service]
url = "<service name>.<namespace>" # set this to context-retriever service address
Restart pods to pick up the new secret.