diff --git a/lib/modules/manager/api.ts b/lib/modules/manager/api.ts
index 7ef615a81553d6f4472555aaec7e9e885acaa15b..4a3fe2bf5cc2cb368f1d4df8f58eb5a87600e166 100644
--- a/lib/modules/manager/api.ts
+++ b/lib/modules/manager/api.ts
@@ -47,6 +47,7 @@ import * as kustomize from './kustomize';
 import * as leiningen from './leiningen';
 import * as maven from './maven';
 import * as meteor from './meteor';
+import * as mint from './mint';
 import * as mix from './mix';
 import * as nodenv from './nodenv';
 import * as npm from './npm';
@@ -126,6 +127,7 @@ api.set('kustomize', kustomize);
 api.set('leiningen', leiningen);
 api.set('maven', maven);
 api.set('meteor', meteor);
+api.set('mint', mint);
 api.set('mix', mix);
 api.set('nodenv', nodenv);
 api.set('npm', npm);
diff --git a/lib/modules/manager/mint/extract.spec.ts b/lib/modules/manager/mint/extract.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..707907bfc837682dd2cde1a0e6e0fa9062037254
--- /dev/null
+++ b/lib/modules/manager/mint/extract.spec.ts
@@ -0,0 +1,119 @@
+import { extractPackageFile } from '.';
+
+const simpleMintfile = `
+SwiftGen/SwiftGen@6.6.1
+yonaskolb/xcodegen@2.30.0
+realm/SwiftLint @ 0.48.0
+#realm/SwiftLint @ 0.48.0
+`;
+
+const noVersionMintfileContent = `
+yonaskolb/xcodegen
+realm/SwiftLint
+`;
+
+const complexMintFileContent = `
+SwiftGen/SwiftGen@6.6.1
+yonaskolb/xcodegen
+realm/SwiftLint @ 0.48.0`;
+
+const includesCommentedOutMintFileContent = `
+SwiftGen/SwiftGen@6.6.1
+yonaskolb/xcodegen
+#yonaskolb/xcodegen
+realm/SwiftLint@0.48.0 #commented out
+`;
+
+describe('modules/manager/mint/extract', () => {
+  describe('extractPackageFile()', () => {
+    it('Mintfile With Version Description', () => {
+      const res = extractPackageFile(simpleMintfile);
+      expect(res).toEqual({
+        deps: [
+          {
+            depName: 'SwiftGen/SwiftGen',
+            currentValue: '6.6.1',
+            datasource: 'git-tags',
+            packageName: 'https://github.com/SwiftGen/SwiftGen.git',
+          },
+          {
+            depName: 'yonaskolb/xcodegen',
+            currentValue: '2.30.0',
+            datasource: 'git-tags',
+            packageName: 'https://github.com/yonaskolb/xcodegen.git',
+          },
+          {
+            depName: 'realm/SwiftLint',
+            currentValue: '0.48.0',
+            datasource: 'git-tags',
+            packageName: 'https://github.com/realm/SwiftLint.git',
+          },
+        ],
+      });
+    });
+
+    it('Mintfile Without Version Description', () => {
+      const res = extractPackageFile(noVersionMintfileContent);
+      expect(res).toEqual({
+        deps: [
+          {
+            depName: 'yonaskolb/xcodegen',
+            skipReason: 'no-version',
+          },
+          {
+            depName: 'realm/SwiftLint',
+            skipReason: 'no-version',
+          },
+        ],
+      });
+    });
+
+    it('Complex Mintfile', () => {
+      const res = extractPackageFile(complexMintFileContent);
+      expect(res).toEqual({
+        deps: [
+          {
+            depName: 'SwiftGen/SwiftGen',
+            currentValue: '6.6.1',
+            datasource: 'git-tags',
+            packageName: 'https://github.com/SwiftGen/SwiftGen.git',
+          },
+          {
+            depName: 'yonaskolb/xcodegen',
+            skipReason: 'no-version',
+          },
+          {
+            depName: 'realm/SwiftLint',
+            currentValue: '0.48.0',
+            datasource: 'git-tags',
+            packageName: 'https://github.com/realm/SwiftLint.git',
+          },
+        ],
+      });
+    });
+
+    it('Mintfile Includes Commented Out', () => {
+      const res = extractPackageFile(includesCommentedOutMintFileContent);
+      expect(res).toEqual({
+        deps: [
+          {
+            depName: 'SwiftGen/SwiftGen',
+            currentValue: '6.6.1',
+            datasource: 'git-tags',
+            packageName: 'https://github.com/SwiftGen/SwiftGen.git',
+          },
+          {
+            depName: 'yonaskolb/xcodegen',
+            skipReason: 'no-version',
+          },
+          {
+            depName: 'realm/SwiftLint',
+            currentValue: '0.48.0',
+            datasource: 'git-tags',
+            packageName: 'https://github.com/realm/SwiftLint.git',
+          },
+        ],
+      });
+    });
+  });
+});
diff --git a/lib/modules/manager/mint/extract.ts b/lib/modules/manager/mint/extract.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a648efeb5bf8c6de3382499f4005c05d6ab31892
--- /dev/null
+++ b/lib/modules/manager/mint/extract.ts
@@ -0,0 +1,44 @@
+import { newlineRegex } from '../../../util/regex';
+import { GitTagsDatasource } from '../../datasource/git-tags';
+import type { PackageDependency, PackageFile } from '../types';
+
+export function extractPackageFile(content: string): PackageFile | null {
+  const deps: PackageDependency[] = [];
+
+  for (const line of content.split(newlineRegex).map((s) => s.trim())) {
+    if (line === '') {
+      continue;
+    }
+
+    // commented out line
+    if (line.startsWith('#')) {
+      continue;
+    }
+
+    // commented out line after package name
+    if (line.includes('#')) {
+      const [uncommentLine] = line.split('#');
+      deps.push(handleDepInMintfile(uncommentLine));
+      continue;
+    }
+
+    deps.push(handleDepInMintfile(line));
+  }
+  return deps.length ? { deps } : null;
+}
+
+function handleDepInMintfile(line: string): PackageDependency {
+  if (!line.includes('@')) {
+    return {
+      depName: line,
+      skipReason: 'no-version',
+    };
+  }
+  const [depName, currentVersion] = line.split('@').map((s) => s.trim());
+  return {
+    depName: depName,
+    currentValue: currentVersion,
+    datasource: GitTagsDatasource.id,
+    packageName: `https://github.com/${depName}.git`,
+  };
+}
diff --git a/lib/modules/manager/mint/index.ts b/lib/modules/manager/mint/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..34ac5845807e3091f7ad883392b3159d84466ea5
--- /dev/null
+++ b/lib/modules/manager/mint/index.ts
@@ -0,0 +1,12 @@
+import { GitTagsDatasource } from '../../datasource/git-tags';
+
+export const displayName = 'Mint';
+export const url = 'https://github.com/yonaskolb/Mint';
+
+export { extractPackageFile } from './extract';
+
+export const supportedDatasources = [GitTagsDatasource.id];
+
+export const defaultConfig = {
+  fileMatch: ['(^|\\/)Mintfile$'],
+};
diff --git a/lib/modules/manager/mint/readme.md b/lib/modules/manager/mint/readme.md
new file mode 100644
index 0000000000000000000000000000000000000000..0685b4477a751eac9cd250584c1b8bd14a950994
--- /dev/null
+++ b/lib/modules/manager/mint/readme.md
@@ -0,0 +1,14 @@
+Renovate supports updating Mintfiles.
+
+Go to the [`yonaskolb/Mint` repository on GitHub](https://github.com/yonaskolb/Mint) to learn more about the Mint package manager.
+
+You must put the library version in the Mintfile:
+
+```
+// Good:
+SwiftGen/SwiftGen@6.6.1
+realm/SwiftLint @ 0.48.0
+
+// Bad:
+yonaskolb/xcodegen
+```