skabandclient: send model name on start of session

For #60
diff --git a/cmd/sketch/main.go b/cmd/sketch/main.go
index 23d6297..f709a3b 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)
+	pubKey, antURL, apiKey, err := skabandclient.Login(os.Stdout, privKey, flags.skabandAddr, flags.sessionID, flags.modelName)
 	if err != nil {
 		return err
 	}
@@ -303,10 +303,13 @@
 	var apiKey, antURL, pubKey string
 
 	if flags.skabandAddr == "" {
-		// Direct mode with Anthropic API key
-		apiKey = os.Getenv("ANTHROPIC_API_KEY")
+		envName := "ANTHROPIC_API_KEY"
+		if flags.modelName == "gemini" {
+			envName = gem.GeminiAPIKeyEnv
+		}
+		apiKey = os.Getenv(envName)
 		if apiKey == "" {
-			return fmt.Errorf("ANTHROPIC_API_KEY environment variable is not set")
+			return fmt.Errorf("%s environment variable is not set", envName)
 		}
 	} else {
 		// Connect to skaband
@@ -314,7 +317,7 @@
 		if err != nil {
 			return err
 		}
-		pubKey, antURL, apiKey, err = skabandclient.Login(os.Stdout, privKey, flags.skabandAddr, flags.sessionID)
+		pubKey, antURL, apiKey, err = skabandclient.Login(os.Stdout, privKey, flags.skabandAddr, flags.sessionID, flags.modelName)
 		if err != nil {
 			return err
 		}
@@ -587,9 +590,8 @@
 	}
 
 	if modelName == "gemini" {
-		apiKey = os.Getenv(gem.GeminiAPIKeyEnv)
 		if apiKey == "" {
-			return nil, fmt.Errorf("missing API key for Gemini model, set %s environment variable", gem.GeminiAPIKeyEnv)
+			return nil, fmt.Errorf("missing %s", gem.GeminiAPIKeyEnv)
 		}
 		return &gem.Service{
 			HTTPC:  client,
diff --git a/skabandclient/skabandclient.go b/skabandclient/skabandclient.go
index 39f6a45..cea4fbe 100644
--- a/skabandclient/skabandclient.go
+++ b/skabandclient/skabandclient.go
@@ -186,6 +186,9 @@
 			return nil, err
 		}
 		b, err := encodePrivateKey(privKey)
+		if err != nil {
+			return nil, err
+		}
 		if err := os.WriteFile(path, b, 0o600); err != nil {
 			return nil, err
 		}
@@ -200,7 +203,7 @@
 	return key, nil
 }
 
-func Login(stdout io.Writer, privKey ed25519.PrivateKey, skabandAddr, sessionID string) (pubKey, apiURL, apiKey string, err error) {
+func Login(stdout io.Writer, privKey ed25519.PrivateKey, skabandAddr, sessionID, model string) (pubKey, apiURL, apiKey string, err error) {
 	sig := ed25519.Sign(privKey, []byte(sessionID))
 
 	req, err := http.NewRequest("POST", skabandAddr+"/authclient", nil)
@@ -211,6 +214,7 @@
 	req.Header.Set("Public-Key", pubKey)
 	req.Header.Set("Session-ID", sessionID)
 	req.Header.Set("Session-ID-Sig", hex.EncodeToString(sig))
+	req.Header.Set("X-Model", model)
 	resp, err := http.DefaultClient.Do(req)
 	if err != nil {
 		return "", "", "", fmt.Errorf("skaband login: %w", err)