Qodo Documentation
HomepageBlogCommunityGet Started
  • Overview
  • Qodo Gen
  • Qodo Portal
  • On Prem
  • On Prem
  • Qodo Aware
    • Setup Qodo Aware
  • Qodo Gen
    • Install Qodo Gen Agentic Mode
    • How to Add Agentic Tools (MCPs) to an Organization
    • How to Add Repositories to Company Codebase (RAG) Index
    • How to Connect Company Codebase to Bitbucket Data Center
  • Qodo Merge
    • Setup Qodo Merge
Powered by GitBook
LogoLogo

Terms and Privacy

  • Terms of Use
  • Privacy Policy
  • Data Processing

© 2025 Qodo. All Rights Reserved.

On this page
  • Prerequisites
  • GitHub App Installation
  • Qodo Aware Installation Overview
  • Configuration
  • Shared Configuration
  • Github Configuration
  • Bitbucket DC Configuration
  • Enabling qodo-engine functionality in Qodo Merge
  • STS Customer instructions

Was this helpful?

  1. Qodo Aware

Setup Qodo Aware

Follow this guide to setup, install, and begin using Qodo Aware in On Prem environments.

Prerequisites

Infrastructure Requirements

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 Qodo Aware will be deployed

  • Two separate databases:

    • rag-indexer

    • metadata

  • Two PostgreSQL users with full access to their respective databases

Supported Git Providers:

  • GitHub (Cloud or Enterprise)

  • Bitbucket Data Center


GitHub App Installation

Important Note:

These steps must be completed by a GitHub organization administrator.

  1. Navigate to Your Organizations via the top-right menu on GitHub.

    Select your organization and go to Settings > Developer settings > GitHub Apps.

  2. Click New GitHub App and fill in:

    1. App name: Qodo RAG Indexer

    2. Homepage URL: https://qodo.ai

    3. Webhook: Disabled Webhooks will be supported in future releases for continuous updates.

  3. Under Repository permissions, grant:

    • Contents: Read-only

  4. Choose “Any account” for installation scope.

  5. Click Create GitHub App.

  6. Save the generated App ID.

  7. Generate a private key and store it securely.

  8. Click Install App, choose your organization, and select specific repositories (do not choose “All repositories”).

  9. Save the Installation ID from the resulting URL (e.g., https://github.com/organizations/YOUR_ORG/settings/installations/2).

Qodo Aware Installation Overview

Qodo Aware consists of three components. Install them in the following order:

  1. metadata-service

  2. rag-indexer

  3. context-retriever

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: "insert version here"

externalSecrets:
  enabled: true
  clusterSecretStore: true
  secretStoreName: "cluster-secret-store" # Must exist prior to deployment
  secrets:
    - targetSecretName: secrets-file
      remoteSecretName: qodo-engine-secrets # Must exist prior to deployment
      data:
        - secretKey: .secrets.toml
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
volumes:
  secrets-file:
    secret:
      secretName: secrets-file
      useShortName: true
volumeMounts:
  secrets-file:
    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: "insert version here"

externalSecrets:
  enabled: true
  clusterSecretStore: true
  secretStoreName: "cluster-secret-store" # Must exist prior to deployment
  secrets:
    - targetSecretName: secrets-file
      remoteSecretName: qodo-engine-secrets # Must exist prior to deployment
      data:
        - secretKey: .secrets.toml

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

volumes:
  secrets-file:
    secret:
      secretName: secrets-file
      useShortName: true
volumeMounts:
  secrets-file:
    mountPath: /workspace/qodo_engine/shared_settings/secrets

cronJobs:
  reindex:
    schedule: "0 3 * * *" # Adjust schedule as needed - once a day is recommended
    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://$>(CONFIG.APP_NAME):3000/api/v1/indexer/reindex"

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: "insert version here"

externalSecrets:
  enabled: true
  clusterSecretStore: true
  secretStoreName: "cluster-secret-store" # Must exist prior to deployment
  secrets:
    - targetSecretName: secrets-file
      remoteSecretName: qodo-engine-secrets # Must exist prior to deployment
      data:
        - secretKey: .secrets.toml

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:
  secrets-file:
    secret:
      secretName: secrets-file
      useShortName: true
volumeMounts:
  secrets-file:
    mountPath: /app/qodo_engine/shared_settings/secrets

Install with Helm:

helm upgrade --install context-retriever oci://artifacts-self-hosted.qodo.ai/codium-stack/stable/module -f ./context-retriever-values.yaml

  1. Trigger initial indexing (if you prefer to not wait until the cronjob is triggered): kubectl create job indexer-reindex-manual --from=cronjob/indexer-reindex

  2. 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)


Configuration

Shared Configuration

[qodo_logger]
logging_format = "JSON"
log_level = "INFO"

[openai_api]
key = ""
org = ""

# RAG-indexer database
[postgresql]
host = ""
port = ""
username = ""
password = ""

[vectordb]
db_name = ''

#metadata-service database
[kubernetes]
DATABASE_USER = ""
DATABASE_PASSWORD = ""
DATABASE_NAME = ""
DATABASE_HOST = ""
DATABASE_PORT = ""

Github Configuration

Github On prem: If you are using github on prem you should specificy the api_base_url in the configuration for [github_app] section as mentioned below.

Make sure that github is able to accept requests from the Kubernetes cluster. Firewall adjustments may be needed.

[github_app]
private_key="""\\
... private key goes here...
PRIVATE_KEY
"""
app_id = "1019460"
installation_id = "55739937"
api_base_url = "<https://api.github.com>"

Bitbucket DC Configuration

Enabling qodo-engine functionality in Qodo Merge

Qodo Merge

Important: Qodo Merge doesn’t support context-retriever yet, therefore it requires a direct connection to rag-indexer database.

  1. Update qodo-merge secret, append the following

[rag_arguments]
enable_rag=true

[postgresql]
host = ""
port = "5432"
username = ""
password = ""

[vectordb]
db_name = ""
table_name = "repos_embeddings"
  1. Restart pods to pick up the new secret.

STS Customer instructions

Please make sure to provide the customer the IP to whitelist.

PreviousOn PremNextInstall Qodo Gen Agentic Mode

Last updated 1 day ago

Was this helpful?

Refer to our .

Bitbucket DC documentation