diff --git a/go.mod b/go.mod
index b6fc7716..df242736 100644
--- a/go.mod
+++ b/go.mod
@@ -2,7 +2,7 @@ module github.com/zeropsio/zcli
 
 go 1.21
 
-require github.com/zeropsio/zerops-go v1.0.7
+require github.com/zeropsio/zerops-go v1.0.8
 
 require (
 	github.com/charmbracelet/bubbles v0.18.0
diff --git a/go.sum b/go.sum
index 7c90a806..afcc5c3c 100644
--- a/go.sum
+++ b/go.sum
@@ -104,6 +104,8 @@ github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSW
 github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
 github.com/zeropsio/zerops-go v1.0.7 h1:vtiaSSu3TrC18BlOxH5/PydUk1+BNDjQhhw6S80SCPE=
 github.com/zeropsio/zerops-go v1.0.7/go.mod h1:Nuqf1xWt53IRLyVoXgR4hF4ICc9jlfOfQgnN3ZhJR3E=
+github.com/zeropsio/zerops-go v1.0.8 h1:YhSS7+cW1fIRUE1tD5hpGlD3+opxzvI5lfsONgwdn28=
+github.com/zeropsio/zerops-go v1.0.8/go.mod h1:Nuqf1xWt53IRLyVoXgR4hF4ICc9jlfOfQgnN3ZhJR3E=
 go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
diff --git a/src/cmd/serviceDeploy.go b/src/cmd/serviceDeploy.go
index f6e8a514..6c4a8240 100644
--- a/src/cmd/serviceDeploy.go
+++ b/src/cmd/serviceDeploy.go
@@ -30,6 +30,7 @@ func serviceDeployCmd() *cmdBuilder.Cmd {
 		StringFlag("archiveFilePath", "", i18n.T(i18n.BuildArchiveFilePath)).
 		StringFlag("versionName", "", i18n.T(i18n.BuildVersionName)).
 		StringFlag("zeropsYamlPath", "", i18n.T(i18n.ZeropsYamlLocation)).
+		StringFlag("setup", "", i18n.T(i18n.ZeropsYamlSetup)).
 		BoolFlag("deployGitFolder", false, i18n.T(i18n.ZeropsYamlLocation)).
 		HelpFlag(i18n.T(i18n.CmdHelpServiceDeploy)).
 		LoggedUserRunFunc(func(ctx context.Context, cmdData *cmdBuilder.LoggedUserCmdData) error {
@@ -48,7 +49,11 @@ func serviceDeployCmd() *cmdBuilder.Cmd {
 				return err
 			}
 
-			err = validateZeropsYamlContent(ctx, cmdData.RestApiClient, cmdData.Service, configContent)
+			setup := cmdData.Service.Name
+			if setupParam := cmdData.Params.GetString("setup"); setupParam != "" {
+				setup = types.NewString(setupParam)
+			}
+			err = validateZeropsYamlContent(ctx, cmdData.RestApiClient, cmdData.Service, setup, configContent)
 			if err != nil {
 				return err
 			}
@@ -155,7 +160,8 @@ func serviceDeployCmd() *cmdBuilder.Cmd {
 					Id: appVersion.Id,
 				},
 				body.PutAppVersionDeploy{
-					ZeropsYaml: types.NewMediumTextNull(string(configContent)),
+					ZeropsYaml:      types.NewMediumTextNull(string(configContent)),
+					ZeropsYamlSetup: setup.StringNull(),
 				},
 			)
 			if err != nil {
diff --git a/src/cmd/servicePush.go b/src/cmd/servicePush.go
index 8e92568e..804fef35 100644
--- a/src/cmd/servicePush.go
+++ b/src/cmd/servicePush.go
@@ -29,6 +29,7 @@ func servicePushCmd() *cmdBuilder.Cmd {
 		StringFlag("archiveFilePath", "", i18n.T(i18n.BuildArchiveFilePath)).
 		StringFlag("versionName", "", i18n.T(i18n.BuildVersionName)).
 		StringFlag("zeropsYamlPath", "", i18n.T(i18n.ZeropsYamlLocation)).
+		StringFlag("setup", "", i18n.T(i18n.ZeropsYamlSetup)).
 		BoolFlag("deployGitFolder", false, i18n.T(i18n.UploadGitFolder)).
 		HelpFlag(i18n.T(i18n.CmdHelpPush)).
 		LoggedUserRunFunc(func(ctx context.Context, cmdData *cmdBuilder.LoggedUserCmdData) error {
@@ -49,7 +50,11 @@ func servicePushCmd() *cmdBuilder.Cmd {
 				return err
 			}
 
-			err = validateZeropsYamlContent(ctx, cmdData.RestApiClient, cmdData.Service, configContent)
+			setup := cmdData.Service.Name
+			if setupParam := cmdData.Params.GetString("setup"); setupParam != "" {
+				setup = types.NewString(setupParam)
+			}
+			err = validateZeropsYamlContent(ctx, cmdData.RestApiClient, cmdData.Service, setup, configContent)
 			if err != nil {
 				return err
 			}
@@ -148,7 +153,8 @@ func servicePushCmd() *cmdBuilder.Cmd {
 					Id: appVersion.Id,
 				},
 				body.PutAppVersionBuildAndDeploy{
-					ZeropsYaml: types.MediumText(configContent),
+					ZeropsYaml:      types.MediumText(configContent),
+					ZeropsYamlSetup: setup.StringNull(),
 				},
 			)
 			if err != nil {
diff --git a/src/cmd/servicePushDeployShared.go b/src/cmd/servicePushDeployShared.go
index 9efc1bd3..fbd585ce 100644
--- a/src/cmd/servicePushDeployShared.go
+++ b/src/cmd/servicePushDeployShared.go
@@ -145,6 +145,7 @@ func validateZeropsYamlContent(
 	ctx context.Context,
 	restApiClient *zeropsRestApiClient.Handler,
 	service *entity.Service,
+	setup types.String,
 	yamlContent []byte,
 ) error {
 	resp, err := restApiClient.PostServiceStackZeropsYamlValidation(ctx, body.ZeropsYamlValidation{
@@ -152,6 +153,7 @@ func validateZeropsYamlContent(
 		ServiceStackName:            service.Name,
 		ServiceStackTypeId:          service.ServiceTypeId,
 		ZeropsYaml:                  types.NewMediumText(string(yamlContent)),
+		ZeropsYamlSetup:             setup.StringNull(),
 	})
 	if err != nil {
 		return err
diff --git a/src/i18n/en.go b/src/i18n/en.go
index a3c3879a..f8791231 100644
--- a/src/i18n/en.go
+++ b/src/i18n/en.go
@@ -204,6 +204,7 @@ var en = map[string]string{
 	ServiceIdFlag:         "If you have access to more than one service, you must specify the service ID for which the\ncommand is to be executed.",
 	ProjectIdFlag:         "If you have access to more than one project, you must specify the project ID for which the\ncommand is to be executed.",
 	VpnAutoDisconnectFlag: "If set, zCLI will automatically disconnect from the VPN if it is already connected.",
+	ZeropsYamlSetup:       "Choose setup to be used from zerops.yml.",
 
 	// archiveClient
 	ArchClientWorkingDirectory:  "working directory: %s",
@@ -232,9 +233,9 @@ var en = map[string]string{
 	VpnCheckingConnectionIsActive:    "VPN connection is active",
 	VpnCheckingConnectionIsNotActive: "VPN connection is not active",
 
-	////////////
+	// //////////
 	// global //
-	////////////
+	// //////////
 	ProcessInvalidState: "last command has finished with error, identifier for communication with our support: %s",
 
 	CliTerminalModeEnvVar: "If enabled provides a rich UI to communicate with a user. Possible values: auto, enabled, disabled. Default value is auto.",
diff --git a/src/i18n/i18n.go b/src/i18n/i18n.go
index c15a43a9..f982f2ac 100644
--- a/src/i18n/i18n.go
+++ b/src/i18n/i18n.go
@@ -198,6 +198,7 @@ const (
 	ServiceIdFlag         = "ServiceIdFlag"
 	ProjectIdFlag         = "ProjectIdFlag"
 	VpnAutoDisconnectFlag = "VpnAutoDisconnectFlag"
+	ZeropsYamlSetup       = "ZeropsYamlSetup"
 
 	// archiveClient
 	ArchClientWorkingDirectory  = "ArchClientWorkingDirectory"
@@ -226,9 +227,9 @@ const (
 	VpnCheckingConnectionIsActive    = "VpnCheckingConnectionIsActive"
 	VpnCheckingConnectionIsNotActive = "VpnCheckingConnectionIsNotActive"
 
-	////////////
+	// //////////
 	// global //
-	////////////
+	// //////////
 	ProcessInvalidState = "ProcessInvalidState"
 
 	CliTerminalModeEnvVar = "TerminalModeEnv"