Setup Qodo Aware
Follow this guide to setup, install, and begin using Qodo Aware in On Prem environments.
Qodo Aware documentation
See the full Qodo Aware documentation for more details on Qodo Aware.
Prerequisites
Infrastructure Requirements
The machine running Qodo Aware components should have at least:
vCPU: 8
16 GB RAM
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 installedNote: This is pre-installed in managed cloud deployments.
TCP port
5432
must be accessible from the Kubernetes cluster where Qodo Aware will be deployedTwo separate databases:
rag-indexer
metadata
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 Qodo Aware and must be available for Qodo Aware to be used:
gpt-5
claude-4.1-opius
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. Qodo Aware Installation
Qodo Aware 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.
1. metadata-service
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.5.0
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
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.5.0
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"
Install with Helm:
helm upgrade --install indexer oci://artifacts-self-hosted.qodo.ai/codium-stack/stable/module -f ./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.5.0
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"
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"
2. Finish Setup on your version control
Finish setting up Qodo Aware on your version control:
Enabling Qodo Aware functionality in Qodo Merge
Qodo Merge
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.
Last updated
Was this helpful?