support building docker image with gemini
diff --git a/dockerimg/dockerimg.go b/dockerimg/dockerimg.go
index 5791083..f5ddd05 100644
--- a/dockerimg/dockerimg.go
+++ b/dockerimg/dockerimg.go
@@ -23,7 +23,9 @@
 
 	"golang.org/x/crypto/ssh"
 	"sketch.dev/browser"
+	"sketch.dev/llm"
 	"sketch.dev/llm/ant"
+	"sketch.dev/llm/gem"
 	"sketch.dev/loop/server"
 	"sketch.dev/skribe"
 	"sketch.dev/webui"
@@ -837,23 +839,24 @@
 			return imgName, nil
 		}
 
+		start := time.Now()
+
+		var service llm.Service
 		if model == "gemini" {
-			if strings.HasSuffix(modelURL, "/gemmsgs") {
-				// Horrible hack! Switch back to anthropic for container building.
-				// We can do this because we are talking to skaband and know the address.
-				modelURL = strings.Replace(modelURL, "/gemmsgs", "/antmsgs", 1)
-			} else {
-				return "", fmt.Errorf("building docker image with gemini model is not supported yet; start with -model=anthropic first then use gemini")
+			service = &gem.Service{
+				URL:    modelURL,
+				APIKey: modelAPIKey,
+				HTTPC:  http.DefaultClient,
+			}
+		} else {
+			service = &ant.Service{
+				URL:    modelURL,
+				APIKey: modelAPIKey,
+				HTTPC:  http.DefaultClient,
 			}
 		}
 
-		start := time.Now()
-		srv := &ant.Service{
-			URL:    modelURL,
-			APIKey: modelAPIKey,
-			HTTPC:  http.DefaultClient,
-		}
-		generatedDockerfile, err = createDockerfile(ctx, srv, initFiles, subPathWorkingDir, verbose)
+		generatedDockerfile, err = createDockerfile(ctx, service, initFiles, subPathWorkingDir, verbose)
 		if err != nil {
 			return "", fmt.Errorf("create dockerfile: %w", err)
 		}