diff --git a/Migrate.hs b/Migrate.hs
new file mode 100644
--- /dev/null
+++ b/Migrate.hs
@@ -0,0 +1,32 @@
+module Main where
+
+import IHP.Prelude
+import IHP.SchemaMigration
+import IHP.ModelSupport
+import IHP.FrameworkConfig
+import IHP.Log.Types
+import Main.Utf8 (withUtf8)
+import qualified IHP.EnvVar as EnvVar
+
+main :: IO ()
+main = withUtf8 do
+    frameworkConfig <- buildFrameworkConfig (pure ())
+
+    -- We need a debug logger to print out all sql queries during the migration.
+    -- The production env logger could be set to a different log level, therefore
+    -- we don't use the logger in 'frameworkConfig'
+    --
+    logger <- defaultLogger
+
+    modelContext <- createModelContext
+        frameworkConfig.dbPoolIdleTime
+        frameworkConfig.dbPoolMaxConnections
+        frameworkConfig.databaseUrl
+        logger
+
+    let ?modelContext = modelContext
+
+    minimumRevision <- EnvVar.envOrNothing "MINIMUM_REVISION"
+    migrate MigrateOptions { minimumRevision }
+
+    logger |> cleanup
diff --git a/ihp-migrate.cabal b/ihp-migrate.cabal
new file mode 100644
--- /dev/null
+++ b/ihp-migrate.cabal
@@ -0,0 +1,36 @@
+cabal-version:       2.2
+name:                ihp-migrate
+version:             1.4.0
+synopsis:            Provides the IHP migrate binary
+description:         Postgres DB migrations for IHP applications
+license:             MIT
+author:              digitally induced GmbH
+maintainer:          support@digitallyinduced.com
+bug-reports:         https://github.com/digitallyinduced/ihp/issues
+category:            Database
+build-type:          Simple
+
+executable migrate
+    default-language: GHC2021
+    default-extensions:
+        OverloadedStrings
+        , NoImplicitPrelude
+        , ImplicitParams
+        , DisambiguateRecordFields
+        , DuplicateRecordFields
+        , OverloadedLabels
+        , DataKinds
+        , QuasiQuotes
+        , TypeFamilies
+        , PackageImports
+        , RecordWildCards
+        , DefaultSignatures
+        , FunctionalDependencies
+        , PartialTypeSignatures
+        , BlockArguments
+        , LambdaCase
+        , TemplateHaskell
+        , OverloadedRecordDot
+    build-depends: ihp, with-utf8
+    hs-source-dirs: .
+    main-is: Migrate.hs
