diff --git a/lib/version.go b/lib/version.go
new file mode 100644
index 0000000000000000000000000000000000000000..14f3b29273022be279e83ceef909b87e03ee045f_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=..14f3b29273022be279e83ceef909b87e03ee045f_cnVubmVyL2NtZF9jb25maWcuZ28= 100644
--- a/runner/cmd_config.go
+++ b/runner/cmd_config.go
@@ -9,6 +9,8 @@
 	"strings"
 
 	"github.com/rs/zerolog"
+
+	beaver "orus.io/orus-io/beaver/lib"
 )
 
 const (
@@ -16,7 +18,7 @@
 	YttType  = "ytt"
 )
 
-// type alias describing ytt arguments
+// Ytt is a type alias describing ytt arguments
 type Ytt []string
 
 type CmdSpec struct {
@@ -189,6 +191,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==..14f3b29273022be279e83ceef909b87e03ee045f_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
-}
diff --git a/runner/config_test.go b/runner/config_test.go
index 06c3d38a1f2e0437459ad9a72231669182d9fe4c_cnVubmVyL2NvbmZpZ190ZXN0Lmdv..14f3b29273022be279e83ceef909b87e03ee045f_cnVubmVyL2NvbmZpZ190ZXN0Lmdv 100644
--- a/runner/config_test.go
+++ b/runner/config_test.go
@@ -12,6 +12,7 @@
 	"github.com/stretchr/testify/require"
 	"gopkg.in/yaml.v3"
 
+	beaver "orus.io/orus-io/beaver/lib"
 	"orus.io/orus-io/beaver/runner"
 	"orus.io/orus-io/beaver/testutils"
 )
@@ -38,10 +39,10 @@
 func TestConfigVersionValid(t *testing.T) {
 	config, err := runner.NewConfig(filepath.Join(versionTest, "validbase"))
 	require.NoError(t, err)
-	err = runner.ControlVersions(config.BeaverVersion, "3.2.3")
+	err = beaver.ControlVersions(config.BeaverVersion, "3.2.3")
 	require.NoError(t, err)
 }
 
 func TestConfigVersionInValid(t *testing.T) {
 	config, err := runner.NewConfig(filepath.Join(versionTest, "invalidbase"))
 	require.NoError(t, err)
@@ -42,10 +43,10 @@
 	require.NoError(t, err)
 }
 
 func TestConfigVersionInValid(t *testing.T) {
 	config, err := runner.NewConfig(filepath.Join(versionTest, "invalidbase"))
 	require.NoError(t, err)
-	err = runner.ControlVersions(config.BeaverVersion, "3.2.3")
+	err = beaver.ControlVersions(config.BeaverVersion, "3.2.3")
 	require.Error(t, err)
 }