diff --git a/lib/version.go b/lib/version.go
new file mode 100644
index 0000000000000000000000000000000000000000..d709d1be1f14803f523a3f7420c22a387a5efdbe_bGliL3ZlcnNpb24uZ28=
--- /dev/null
+++ b/lib/version.go
@@ -0,0 +1,25 @@
+package beaver
+
+import (
+	"fmt"
+
+	hv "github.com/hashicorp/go-version"
+)
+
+func ControlVersions(desired, actual string) error {
+	desiredVersion, err := hv.NewVersion(desired)
+	if err != nil {
+		return fmt.Errorf("failed to parse desired beaver version: %w", err)
+	}
+
+	actualVersion, err := hv.NewVersion(actual)
+	if err != nil {
+		return fmt.Errorf("failed to parse actual beaver version: %w", err)
+	}
+
+	if !desiredVersion.Equal(actualVersion) {
+		return fmt.Errorf("desired beaver version is not equal to actual beaver version, %s != %s", desiredVersion.String(), actualVersion.String())
+	}
+
+	return nil
+}
diff --git a/runner/cmd_config.go b/runner/cmd_config.go
index 06c3d38a1f2e0437459ad9a72231669182d9fe4c_cnVubmVyL2NtZF9jb25maWcuZ28=..d709d1be1f14803f523a3f7420c22a387a5efdbe_cnVubmVyL2NtZF9jb25maWcuZ28= 100644
--- a/runner/cmd_config.go
+++ b/runner/cmd_config.go
@@ -9,6 +9,7 @@
 	"strings"
 
 	"github.com/rs/zerolog"
+	beaver "orus.io/orus-io/beaver/lib"
 )
 
 const (
@@ -16,7 +17,7 @@
 	YttType  = "ytt"
 )
 
-// type alias describing ytt arguments
+// Ytt is a type alias describing ytt arguments
 type Ytt []string
 
 type CmdSpec struct {
@@ -189,6 +190,11 @@
 	}
 
 	c.Layers = append(c.Layers, absDir)
+	if config.BeaverVersion != "" && beaver.Version() != "" {
+		if err := beaver.ControlVersions(config.BeaverVersion, beaver.Version()); err != nil {
+			return nil, nil, err
+		}
+	}
 	configLayers = append(configLayers, config)
 
 	if config == nil || (len(config.Inherits) == 0 && config.Inherit == "") {
diff --git a/runner/config.go b/runner/config.go
index 06c3d38a1f2e0437459ad9a72231669182d9fe4c_cnVubmVyL2NvbmZpZy5nbw==..d709d1be1f14803f523a3f7420c22a387a5efdbe_cnVubmVyL2NvbmZpZy5nbw== 100644
--- a/runner/config.go
+++ b/runner/config.go
@@ -5,5 +5,4 @@
 	"os"
 	"path/filepath"
 
-	"github.com/hashicorp/go-version"
 	"gopkg.in/yaml.v3"
@@ -9,6 +8,4 @@
 	"gopkg.in/yaml.v3"
-
-	beaver "orus.io/orus-io/beaver/lib"
 )
 
 // Sha define sha feature parameter
@@ -117,11 +114,5 @@
 		return &config, nil
 	}
 
-	if config.BeaverVersion != "" && beaver.Version() != "" {
-		if err := ControlVersions(config.BeaverVersion, beaver.Version()); err != nil {
-			return nil, err
-		}
-	}
-
 	return nil, fmt.Errorf("no beaver file found in %s", configDir)
 }
@@ -126,20 +117,2 @@
 	return nil, fmt.Errorf("no beaver file found in %s", configDir)
 }
-
-func ControlVersions(desired, actual string) error {
-	desiredVersion, err := version.NewVersion(desired)
-	if err != nil {
-		return fmt.Errorf("failed to parse desired beaver version: %w", err)
-	}
-
-	actualVersion, err := version.NewVersion(actual)
-	if err != nil {
-		return fmt.Errorf("failed to parse actual beaver version: %w", err)
-	}
-
-	if !desiredVersion.Equal(actualVersion) {
-		return fmt.Errorf("desired beaver version is not equal to actual beaver version, %s != %s", desiredVersion.String(), actualVersion.String())
-	}
-
-	return nil
-}