@@ -276,6 +276,7 @@ func setProviderDefaults() {
276276 // 5. OpenRouter
277277 // 6. AWS Bedrock
278278 // 7. Azure
279+ // 8. Google Cloud VertexAI
279280
280281 // Anthropic configuration
281282 if key := viper .GetString ("providers.anthropic.apiKey" ); strings .TrimSpace (key ) != "" {
@@ -348,6 +349,15 @@ func setProviderDefaults() {
348349 viper .SetDefault ("agents.title.model" , models .AzureGPT41Mini )
349350 return
350351 }
352+
353+ // Google Cloud VertexAI configuration
354+ if hasVertexAICredentials () {
355+ viper .SetDefault ("agents.coder.model" , models .VertexAIGemini25 )
356+ viper .SetDefault ("agents.summarizer.model" , models .VertexAIGemini25 )
357+ viper .SetDefault ("agents.task.model" , models .VertexAIGemini25Flash )
358+ viper .SetDefault ("agents.title.model" , models .VertexAIGemini25Flash )
359+ return
360+ }
351361}
352362
353363// hasAWSCredentials checks if AWS credentials are available in the environment.
@@ -376,6 +386,19 @@ func hasAWSCredentials() bool {
376386 return false
377387}
378388
389+ // hasVertexAICredentials checks if VertexAI credentials are available in the environment.
390+ func hasVertexAICredentials () bool {
391+ // Check for explicit VertexAI parameters
392+ if os .Getenv ("VERTEXAI_PROJECT" ) != "" && os .Getenv ("VERTEXAI_LOCATION" ) != "" {
393+ return true
394+ }
395+ // Check for Google Cloud project and location
396+ if os .Getenv ("GOOGLE_CLOUD_PROJECT" ) != "" && (os .Getenv ("GOOGLE_CLOUD_REGION" ) != "" || os .Getenv ("GOOGLE_CLOUD_LOCATION" ) != "" ) {
397+ return true
398+ }
399+ return false
400+ }
401+
379402// readConfig handles the result of reading a configuration file.
380403func readConfig (err error ) error {
381404 if err == nil {
@@ -598,6 +621,10 @@ func getProviderAPIKey(provider models.ModelProvider) string {
598621 if hasAWSCredentials () {
599622 return "aws-credentials-available"
600623 }
624+ case models .ProviderVertexAI :
625+ if hasVertexAICredentials () {
626+ return "vertex-ai-credentials-available"
627+ }
601628 }
602629 return ""
603630}
@@ -718,6 +745,24 @@ func setDefaultModelForAgent(agent AgentName) bool {
718745 return true
719746 }
720747
748+ if hasVertexAICredentials () {
749+ var model models.ModelID
750+ maxTokens := int64 (5000 )
751+
752+ if agent == AgentTitle {
753+ model = models .VertexAIGemini25Flash
754+ maxTokens = 80
755+ } else {
756+ model = models .VertexAIGemini25
757+ }
758+
759+ cfg .Agents [agent ] = Agent {
760+ Model : model ,
761+ MaxTokens : maxTokens ,
762+ }
763+ return true
764+ }
765+
721766 return false
722767}
723768
0 commit comments