diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,10 @@
 `stan` uses [PVP Versioning][1].
 The change log is available [on GitHub][2].
 
+## 0.1.2.0
+
+* Added `runStan`, `getAnalysis`, `getStanConfig`
+
 ## 0.1.1.0
 
 * Fix [bug #541](https://github.com/kowainik/stan/issues/541)
diff --git a/src/Stan.hs b/src/Stan.hs
--- a/src/Stan.hs
+++ b/src/Stan.hs
@@ -8,6 +8,9 @@
 
 module Stan
     ( run
+    , runStan
+    , getAnalysis
+    , getStanConfig
 
       -- ** Internal
     , createCabalExtensionsMap
@@ -26,7 +29,7 @@
 import Stan.Cabal (createCabalExtensionsMap, usedCabalFiles)
 import Stan.Cli (CliToTomlArgs (..), InspectionArgs (..), ReportArgs (..), StanArgs (..),
                  StanCommand (..), TomlToCliArgs (..), runStanCli)
-import Stan.Config (ConfigP (..), applyConfig, configToCliCommand, defaultConfig, finaliseConfig)
+import Stan.Config (ConfigP (..), applyConfig, configToCliCommand, defaultConfig, finaliseConfig, Config)
 import Stan.Config.Pretty (prettyConfigCli)
 import Stan.Core.Id (Id (..))
 import Stan.EnvVars (EnvVars (..), envVarsToText, getEnvVars)
@@ -52,9 +55,8 @@
     StanCliToToml cliToTomlArgs -> runCliToToml cliToTomlArgs
     StanInspectionsToMd -> putTextLn $ inspectionsMd inspections
 
-runStan :: StanArgs -> IO ()
-runStan StanArgs{..} = do
-    let notJson = not stanArgsJsonOut
+getStanConfig :: StanArgs -> Bool -> IO (Trial Text Config, Bool, EnvVars)
+getStanConfig StanArgs{..} notJson = do
     -- ENV vars
     env@EnvVars{..} <- getEnvVars
     let defConfTrial = envVarsUseDefaultConfigFile <> stanArgsUseDefaultConfigFile
@@ -68,14 +70,26 @@
     when notJson $ do
         infoMessage "The following Configurations are used:\n"
         putTextLn $ indent $ prettyTrialWith (toString . prettyConfigCli) configTrial
+    pure (configTrial, useDefConfig, env)
+
+getAnalysis :: StanArgs -> Bool -> Config -> [HieFile] -> IO Analysis
+getAnalysis StanArgs{..} notJson config hieFiles = do
+    -- create cabal default extensions map
+    cabalExtensionsMap <- createCabalExtensionsMap notJson stanArgsCabalFilePath hieFiles
+    -- get checks for each file
+    let checksMap = applyConfig (map hie_hs_file hieFiles) config
+
+    let analysis = runAnalysis cabalExtensionsMap checksMap (configIgnored config) hieFiles
+    -- show what observations are ignored
+    pure analysis
+
+runStan :: StanArgs -> IO ()
+runStan stanArgs@StanArgs{..} = do
+    let notJson = not stanArgsJsonOut
+    (configTrial, useDefConfig, env) <- getStanConfig stanArgs notJson
     whenResult_ configTrial $ \warnings config -> do
         hieFiles <- readHieFiles stanArgsHiedir
-        -- create cabal default extensions map
-        cabalExtensionsMap <- createCabalExtensionsMap notJson stanArgsCabalFilePath hieFiles
-        -- get checks for each file
-        let checksMap = applyConfig (map hie_hs_file hieFiles) config
-
-        let analysis = runAnalysis cabalExtensionsMap checksMap (configIgnored config) hieFiles
+        analysis <- getAnalysis stanArgs notJson config hieFiles
         -- show what observations are ignored
         when notJson $ putText $ indent $ prettyShowIgnoredObservations
             (configIgnored config)
@@ -119,8 +133,8 @@
     getObservationSeverity :: Observation -> Severity
     getObservationSeverity = inspectionSeverity . getInspectionById . observationInspectionId
 
-    indent :: Text -> Text
-    indent = unlines . map ("    " <>) . lines
+indent :: Text -> Text
+indent = unlines . map ("    " <>) . lines
 
 runInspection :: InspectionArgs -> IO ()
 runInspection InspectionArgs{..} = case inspectionArgsId of
diff --git a/stack-ghc-9.4.8.yaml b/stack-ghc-9.4.8.yaml
new file mode 100644
--- /dev/null
+++ b/stack-ghc-9.4.8.yaml
@@ -0,0 +1,11 @@
+resolver: lts-21.25 # GHC 9.4.8
+
+extra-deps:
+- clay-0.14.0@sha256:a50ba73137a39c55e89f24a7792107ec40ba07320b2c5ff7932049845c50ffc9,2204
+- dir-traverse-0.2.3.0@sha256:adcc128f201ff95131b15ffe41365dc99c50dc3fa3a910f021521dc734013bfa,2137
+- extensions-0.1.0.0@sha256:b8105dc43a57b0b3b54879e8dbb905676dfee3e8b59301fefbf2409a0fe95710,4447
+- tomland-1.3.3.2@sha256:887dc39a8c9819deb8fcb6fde72e87dad4c94108b1736a5bf7215ccf3117bd0f,9474
+- trial-0.0.0.0@sha256:ebd93f3485dd7f0ce8426fa46b500f26edbea285c2890150123e1b0f6a92c7db,4410
+- trial-optparse-applicative-0.0.0.0@sha256:ee878dbf412849d4fb52d7bca93bec45a6392a93e03a46bd320109b9a0ff2a38,2540
+- trial-tomland-0.0.0.0@sha256:c10c5c3f94e3dcfcad4a66cf70682ace77d5381596aff91fa2030636d07de977,2541
+- validation-selective-0.2.0.0@sha256:e1ab5482dede8bf676d729a09109c7c5f798363b9d458e4197a27afb8b48fdd3,3907
diff --git a/stack.yaml b/stack.yaml
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,11 +1,12 @@
-resolver: lts-21.22 # GHC 9.4.8
+resolver: lts-22.0 # GHC 9.6.3
 
 extra-deps:
-- clay-0.14.0@sha256:a50ba73137a39c55e89f24a7792107ec40ba07320b2c5ff7932049845c50ffc9,2204
+- ansi-wl-pprint-0.6.9@sha256:fb737bc96e2aef34ad595d54ced7a73f648c521ebcb00fe0679aff45ccd49212,2448
 - dir-traverse-0.2.3.0@sha256:adcc128f201ff95131b15ffe41365dc99c50dc3fa3a910f021521dc734013bfa,2137
-- extensions-0.1.0.0@sha256:b8105dc43a57b0b3b54879e8dbb905676dfee3e8b59301fefbf2409a0fe95710,4447
-- tomland-1.3.3.2@sha256:d18682d9ad9014cc42a12bd122ae7834a950a052a122388995f33d6f349ff60d,9235
-- trial-0.0.0.0@sha256:7946afde7134db6c5c35b7ab611018e2925e9c9fbb8c0fcf9831f3c7020928f1,4416
-- trial-optparse-applicative-0.0.0.0@sha256:92548124f12c746bd30bb19c2e57b8a1bcad5824980f04a387efb0b1487c053c,2478
-- trial-tomland-0.0.0.0@sha256:77f63a62660f94774375b2c1a1b28d25e4791d9bcad05e33dd7597cff0e75beb,2547
+- extensions-0.1.0.1@sha256:f365d1da5ea1c60edd11334113ecd0d78eb12b4186b31151322ff7175a9adef7,5108
+- optparse-applicative-0.17.1.0@sha256:cb5f5f0dc9749846fc0e3df0041a8efee6368cc1cff07336acd4c3b02a951ed6,5147
+- tomland-1.3.3.2@sha256:887dc39a8c9819deb8fcb6fde72e87dad4c94108b1736a5bf7215ccf3117bd0f,9474
+- trial-0.0.0.0@sha256:ebd93f3485dd7f0ce8426fa46b500f26edbea285c2890150123e1b0f6a92c7db,4410
+- trial-optparse-applicative-0.0.0.0@sha256:ee878dbf412849d4fb52d7bca93bec45a6392a93e03a46bd320109b9a0ff2a38,2540
+- trial-tomland-0.0.0.0@sha256:c10c5c3f94e3dcfcad4a66cf70682ace77d5381596aff91fa2030636d07de977,2541
 - validation-selective-0.2.0.0@sha256:e1ab5482dede8bf676d729a09109c7c5f798363b9d458e4197a27afb8b48fdd3,3907
diff --git a/stan.cabal b/stan.cabal
--- a/stan.cabal
+++ b/stan.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.4
 name:                stan
-version:             0.1.1.0
+version:             0.1.2.0
 synopsis:            Haskell STatic ANalyser
 description:
     Stan is a Haskell __ST__atic __AN__alysis CLI tool.
@@ -17,8 +17,9 @@
 stability:           experimental
 extra-doc-files:     README.md
                      CHANGELOG.md
-                     stack.yaml
 extra-source-files:  test/.stan-example.toml
+                     stack-ghc-9.4.8.yaml
+                     stack.yaml
 tested-with:         GHC == 8.8.4
                      GHC == 8.10.7
 
