Gemini CLI und Google GenAI
Gemini CLI und die Programme, die auf Googles GenAI-SDKs aufbauen, nutzen den Gateway-Modus: Der lokale Daemon maskiert die Anfragen und stellt die Antworten wieder her. Er deckt die Gemini API mit einem API-Schlüssel ab, und Gemini auf Vertex AI, mit einem Google-Cloud-Projekt oder im Express-Modus mit einem API-Schlüssel.
Basis-URLs
Abschnitt betitelt „Basis-URLs“| Dienst | Statt | Verwenden Sie | Variable |
|---|---|---|---|
| Gemini API | https://generativelanguage.googleapis.com |
http://127.0.0.1:5283/gemini |
GOOGLE_GEMINI_BASE_URL |
| Vertex AI | https://<location>-aiplatform.googleapis.com |
http://127.0.0.1:5283/vertex |
GOOGLE_VERTEX_BASE_URL |
Ihr API-Schlüssel oder Ihre Google-Cloud-Anmeldung bleiben, wo sie sind. Das Gateway leitet sie
unverändert weiter (einen Schlüssel im Header x-goog-api-key oder im Parameter key der Adresse,
ein Vertex-Token in Authorization) und schreibt ihren Wert nie in Logs, ins Dashboard oder in einen
Mitschnitt. Auf Vertex geht jede Anfrage an die Adresse der Location, die sie nennt.
Gemini CLI
Abschnitt betitelt „Gemini CLI“Leiten Sie Gemini CLI mit dem Wrapper über Latet. Er startet bei Bedarf den Daemon, setzt beide
Basis-URLs nur für diesen Lauf und gibt jedes Argument an gemini weiter:
latet geminilatet gemini -p "write the release notes for the payments module"latet gemini gibt Gemini CLI außerdem einen Startschlüssel in GEMINI_CLI_CUSTOM_HEADERS,
zusätzlich zu den Headern, die Sie dort setzen, damit Latet dem Projekt der Sitzung vertraut; wo es
nicht prüfen kann, ob Gemini CLI ihn senden wird, gibt es keinen mit, sagt das, und das Projekt, das
Gemini CLI nennt, ist nur behauptet (Projekte). Eigene Header in
GEMINI_CLI_CUSTOM_HEADERS werden abgelehnt, jeder beim Namen genannt, bis eine
genaue Ausnahme ihn durchlässt.
Gemini CLI liest GEMINI_CLI_CUSTOM_HEADERS ab Version 0.19.0, und Latet hat geprüft, wie es sie von
0.19.0 bis 0.66.0 sendet. Ein älteres Gemini CLI ignoriert die Variable: Seine Sitzung ist nur
behauptet, und latet doctor nennt seine Version. Im ACP-Modus (--acp oder --experimental-acp, wie
ein Editor Gemini CLI startet) kann der Editor Gemini CLI eine eigene Adresse und eigene Header geben,
darum gibt latet gemini dort keinen Startschlüssel mit und sagt das beim Start.
latet run gemini tut dasselbe. Gemini CLI übernimmt seine Adresse nur aus der Umgebung, darum ist
es im globalen Modus nicht verfügbar: latet global-install richtet es nicht ein, und es gibt kein
latet agents apply gemini. Eine dauerhafte Änderung würde ein Projekt mit einer eigenen
.env-Datei nicht erreichen, und dort spräche Gemini CLI direkt mit Google, ohne es zu sagen.
Einen API-Schlüssel oder Vertex AI wählen
Abschnitt betitelt „Einen API-Schlüssel oder Vertex AI wählen“In Gemini CLI wählt /auth, wie es sein Modell erreicht, und die Wahl bleibt in
~/.gemini/settings.json:
{ "security": { "auth": { "selectedType": "gemini-api-key" } } }- Ein API-Schlüssel (
gemini-api-key):GEMINI_API_KEYenthält ihn. - Vertex AI (
vertex-ai):GOOGLE_GENAI_USE_VERTEXAI=true, mitGOOGLE_CLOUD_PROJECTundGOOGLE_CLOUD_LOCATIONund Ihrer Google-Cloud-Anmeldung, oder nurGOOGLE_API_KEYim Express-Modus.
Ist noch nichts gewählt, bietet latet gemini im Dialog von Gemini CLI den API-Schlüssel an, oder
Vertex AI, wenn GOOGLE_GENAI_USE_VERTEXAI=true gesetzt ist. Ein Lauf mit -p braucht die Wahl
vorher: Setzen Sie selectedType wie oben.
Mit der Google-Anmeldung, ob Ihre Einstellungen sie wählen, die des Projekts
(.gemini/settings.json im Ordner, in dem Sie es starten) oder die des Rechners, schickt Gemini CLI
seine Anfragen an einen Endpunkt, den Latet nicht liest, es würde also nichts maskiert. Dann startet
latet gemini es nicht und sagt, wo die Wahl getroffen ist und was stattdessen zu wählen ist.
Nutzungsstatistiken
Abschnitt betitelt „Nutzungsstatistiken“Gemini CLI schickt seine Nutzungsstatistiken direkt an Google, nicht über Latet. Um sie abzuschalten:
{ "privacy": { "usageStatisticsEnabled": false } }Skripte und die Google-GenAI-SDKs
Abschnitt betitelt „Skripte und die Google-GenAI-SDKs“latet run setzt GOOGLE_GEMINI_BASE_URL und GOOGLE_VERTEX_BASE_URL neben den Variablen für
OpenAI und Anthropic, und latet env gibt sie für eine ganze Shell aus. Googles SDKs für Python
(google-genai) und JavaScript (@google/genai) lesen sie:
from google import genai
client = genai.Client() # reads GEMINI_API_KEY and GOOGLE_GEMINI_BASE_URLreply = client.models.generate_content( model="gemini-3-pro", contents="Write a short welcome email to emily.carter@northwind-legal.com",)print(reply.text)Starten Sie es mit latet run python welcome.py: Google liest eine falsche Adresse derselben Form, und
das Skript gibt die E-Mail mit der echten aus. Gestreamte Antworten funktionieren genauso, Stück für
Stück.
Auch Googles OpenAI-kompatibler Endpunkt läuft über Latet: Geben Sie einem OpenAI-Client die Basis-URL
http://127.0.0.1:5283/gemini/v1beta/openai.
Was das Gateway liest
Abschnitt betitelt „Was das Gateway liest“- Generieren, gestreamt oder nicht (
generateContent,streamGenerateContent), Token zählen (countTokens), Embeddings (embedContent,batchEmbedContents) und einen Cache anlegen (cachedContents): Die Systemanweisung, jede Nachricht, Funktionsaufrufe und ihre Ergebnisse, die Deklarationen der Funktionen und das Schema der Antwort werden maskiert, und die Antworten wiederhergestellt. - Bilder in der Anfrage werden mit der optionalen Texterkennung gelesen und maskiert; ohne sie wird eine Anfrage mit einem Bild nicht gesendet. Andere Dateien, und Dateien, die über ihre Adresse angegeben sind, werden abgelehnt.
- Das Nachdenken des Modells bleibt, wie das Modell es geschrieben hat. Der Code, den Google für es ausführt, und was dieser Code ausgegeben hat, sowie die Eingaben und Ausgaben von Googles eigenen Tools (Google Search, URL-Kontext, Maps, File Search) werden maskiert, wie der Aufruf einer Funktion und ihr Ergebnis.
- Jede andere Anfrage mit einem Body auf diesen Routen wird abgelehnt, mit einem Fehler, der es
sagt, und ein WebSocket der Live API wird geschlossen, bevor etwas durchgeht: Die Interactions
API, die Live API, die Batch API, das Hochladen von Dateien und
:predictvon Vertex (seine eigenen Embeddings und Bildmodelle) tragen eine Unterhaltung in Formen, die Latet nicht liest (sie stehen auf der Roadmap). Die Liste der Modelle und das Lesen eines Modells gehen durch; jeder andere Aufruf ohne Body wird ebenfalls abgelehnt. - Der Header der Google-Clientbibliothek
x-goog-api-clientwird entfernt; Ihr API-Schlüssel, im Parameterkeyoder inx-goog-api-key, wird gesendet, wie er kam, und nie protokolliert.
Grenzen
Abschnitt betitelt „Grenzen“- Gemini CLI mit der Google-Anmeldung ist nicht abgedeckt (siehe oben).
- Antigravity CLI nimmt mit einem API-Schlüssel eine Basis-URL an (
GOOGLE_GEMINI_BASE_URL), aber seine Dokumentation sagt nicht, welches Protokoll von Google es dann spricht, und es ist mit Latet nicht geprüft. Nutzt es die Interactions API, lehnt Latet seine Anfragen ab, statt sie unmaskiert zu senden. - Eine Antwort, die einen expliziten Cache nutzt, bekommt die Originale der Werte zurück, die ihre eigene Unterhaltung trägt.
© 2026 Emanuele Casabona · USt-IdNr. IT02293040990 · Datenschutzerklärung · Impressum · latet.ai