cmd/sketch, dockerimg: more gemini key plumbing

Next up: SKETCH_* env vars

For #60
diff --git a/cmd/sketch/main.go b/cmd/sketch/main.go
index f709a3b..f3f3139 100644
--- a/cmd/sketch/main.go
+++ b/cmd/sketch/main.go
@@ -233,7 +233,7 @@
 	if err != nil {
 		return err
 	}
-	pubKey, antURL, apiKey, err := skabandclient.Login(os.Stdout, privKey, flags.skabandAddr, flags.sessionID, flags.modelName)
+	pubKey, modelURL, apiKey, err := skabandclient.Login(os.Stdout, privKey, flags.skabandAddr, flags.sessionID, flags.modelName)
 	if err != nil {
 		return err
 	}
@@ -249,8 +249,9 @@
 		SessionID:         flags.sessionID,
 		LocalAddr:         flags.addr,
 		SkabandAddr:       flags.skabandAddr,
-		AntURL:            antURL,
-		AntAPIKey:         apiKey,
+		Model:             flags.modelName,
+		ModelURL:          modelURL,
+		ModelAPIKey:       apiKey,
 		Path:              cwd,
 		GitUsername:       flags.gitUsername,
 		GitEmail:          flags.gitEmail,
diff --git a/dockerimg/dockerimg.go b/dockerimg/dockerimg.go
index 5e49392..611901a 100644
--- a/dockerimg/dockerimg.go
+++ b/dockerimg/dockerimg.go
@@ -39,11 +39,14 @@
 	// SkabandAddr is the address of the skaband service if available
 	SkabandAddr string
 
-	// AntURL is the URL of the LLM service.
-	AntURL string
+	// Model is the name of the LLM model to use.
+	Model string
 
-	// AntAPIKey is the API key for LLM service.
-	AntAPIKey string
+	// ModelURL is the URL of the LLM service.
+	ModelURL string
+
+	// ModelAPIKey is the API key for LLM service.
+	ModelAPIKey string
 
 	// Path is the local filesystem path to use
 	Path string
@@ -124,7 +127,7 @@
 		return err
 	}
 
-	imgName, err := findOrBuildDockerImage(ctx, config.Path, gitRoot, config.AntURL, config.AntAPIKey, config.ForceRebuild, config.Verbose)
+	imgName, err := findOrBuildDockerImage(ctx, config.Path, gitRoot, config.Model, config.ModelURL, config.ModelAPIKey, config.ForceRebuild, config.Verbose)
 	if err != nil {
 		return err
 	}
@@ -427,7 +430,7 @@
 		"-i",
 		"--name", cntrName,
 		"-p", hostPort + ":80", // forward container port 80 to a host port
-		"-e", "SKETCH_ANTHROPIC_API_KEY=" + config.AntAPIKey,
+		"-e", "SKETCH_ANTHROPIC_API_KEY=" + config.ModelAPIKey,
 	}
 	if !config.OneShot {
 		cmdArgs = append(cmdArgs, "-t")
@@ -436,8 +439,8 @@
 	for _, envVar := range getEnvForwardingFromGitConfig(ctx) {
 		cmdArgs = append(cmdArgs, "-e", envVar)
 	}
-	if config.AntURL != "" {
-		cmdArgs = append(cmdArgs, "-e", "SKETCH_ANT_URL="+config.AntURL)
+	if config.ModelURL != "" {
+		cmdArgs = append(cmdArgs, "-e", "SKETCH_ANT_URL="+config.ModelURL)
 	}
 	if config.SketchPubKey != "" {
 		cmdArgs = append(cmdArgs, "-e", "SKETCH_PUB_KEY="+config.SketchPubKey)
@@ -466,6 +469,9 @@
 		"-outside-working-dir="+config.OutsideWorkingDir,
 		"-open=false",
 	)
+	if config.Model != "" {
+		cmdArgs = append(cmdArgs, "-model="+config.Model)
+	}
 	if config.SkabandAddr != "" {
 		cmdArgs = append(cmdArgs, "-skaband-addr="+config.SkabandAddr)
 	}
@@ -613,7 +619,7 @@
 	return nil
 }
 
-func findOrBuildDockerImage(ctx context.Context, cwd, gitRoot, antURL, antAPIKey string, forceRebuild, verbose bool) (imgName string, err error) {
+func findOrBuildDockerImage(ctx context.Context, cwd, gitRoot, model, modelURL, modelAPIKey string, forceRebuild, verbose bool) (imgName string, err error) {
 	h := sha256.Sum256([]byte(gitRoot))
 	imgName = "sketch-" + hex.EncodeToString(h[:6])
 
@@ -666,10 +672,19 @@
 			return imgName, nil
 		}
 
+		if model == "gemini" {
+			if strings.HasSuffix(modelURL, "/gemmsgs") {
+				// Horrible hack! Switch back to anthropic for container building.
+				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")
+			}
+		}
+
 		start := time.Now()
 		srv := &ant.Service{
-			URL:    antURL,
-			APIKey: antAPIKey,
+			URL:    modelURL,
+			APIKey: modelAPIKey,
 			HTTPC:  http.DefaultClient,
 		}
 		dockerfile, err := createDockerfile(ctx, srv, initFiles, subPathWorkingDir)