diff --git a/lib/config/presets/internal/replacements.ts b/lib/config/presets/internal/replacements.ts
index 0b14ccf2c46a3fe1b9b84e418295872945923112..2dbd6edb78a25f97396b12be17c1fb56020ae6fc 100644
--- a/lib/config/presets/internal/replacements.ts
+++ b/lib/config/presets/internal/replacements.ts
@@ -29,6 +29,7 @@ export const presets: Record<string, Preset> = {
       'replacements:middie-to-scoped',
       'replacements:now-to-vercel',
       'replacements:npm-run-all-to-maintenance-fork',
+      'replacements:opencost-registry-move',
       'replacements:parcel-css-to-lightningcss',
       'replacements:passport-saml',
       'replacements:react-query-devtools-to-scoped',
@@ -743,6 +744,29 @@ export const presets: Record<string, Preset> = {
       },
     ],
   },
+  'opencost-registry-move': {
+    description: 'Replace OpenCost registry from quay.io to ghcr.io.',
+    packageRules: [
+      {
+        description:
+          'Replace `quay.io/kubecost1/kubecost-cost-model` with `ghcr.io/opencost/opencost`.',
+        matchCurrentVersion: '1.108.0',
+        matchDatasources: ['docker'],
+        matchPackageNames: ['quay.io/kubecost1/kubecost-cost-model'],
+        replacementName: 'ghcr.io/opencost/opencost',
+        replacementVersion: '1.109.0',
+      },
+      {
+        description:
+          'Replace `quay.io/kubecost1/opencost-ui` with `ghcr.io/opencost/opencost-ui`.',
+        matchCurrentVersion: '1.108.0',
+        matchDatasources: ['docker'],
+        matchPackageNames: ['quay.io/kubecost1/opencost-ui'],
+        replacementName: 'ghcr.io/opencost/opencost-ui',
+        replacementVersion: '1.109.0',
+      },
+    ],
+  },
   'parcel-css-to-lightningcss': {
     description: '`@parcel/css` was renamed to `lightningcss`.',
     packageRules: [