Neste documento, mostramos aos administradores e arquitetos de segurança como implantar e configurar um gateway empresarial para o Google Antigravity.
As organizações empresariais em setores regulamentados geralmente mantêm controles de rede rígidos que impedem que as estações de trabalho dos desenvolvedores façam conexões diretas de Internet com serviços externos ou concluam o login interativo do Google com base no navegador.
O Antigravity Enterprise Gateway permite rotear o tráfego do Antigravity por um gateway empresarial que sua organização opera antes de encaminhar solicitações de inferência ao Google. Essa arquitetura encaminha as solicitações de inferência de modelo pelo gateway e remove o login interativo, preservando a atribuição de faturamento do contrato do Gemini Enterprise.
Visão geral
Quando você configura o Antigravity Enterprise Gateway, as estações de trabalho do desenvolvedor se comunicam com o gateway empresarial em vez de se conectarem diretamente ao Google. Os desenvolvedores se autenticam no gateway com uma chave de API emitida pelo gateway, para que a Antigravity não solicite que eles façam login individualmente na Conta do Google. O gateway usa uma conta de serviço centralizada doGoogle Cloud para autenticar e encaminhar solicitações do Antigravity ao Google.
O Antigravity anexa automaticamente cabeçalhos de atribuição de cliente para identificar comandos de chat de desenvolvedores e Agentic Workflows. Para garantir que o uso desse modelo seja reconhecido e faturado de acordo com o contrato do Gemini Enterprise da sua organização, em vez de ser faturado como consumo de API bruta não comprometido, seu gateway precisa preservar e encaminhar estes cabeçalhos do Antigravity para o Google:
User-Agent: o Antigravity emite automaticamente um cabeçalho de identificação:User-Agent: antigravity/VERSION (aidev_client; auth_method=gateway)X-Goog-Api-Client: identifica o ambiente de execução do cliente do Antigravity e a telemetria do SDK para que o Google credite a atividade à sua implantação empresarial licenciada.
Ferramentas e versões compatíveis
O Antigravity Enterprise Gateway é compatível com as seguintes ferramentas para desenvolvedores de IA:
| Ferramenta | Versão mínima | Plataformas compatíveis |
|---|---|---|
| App Antigravity |
|
macOS, Windows e Linux |
CLI do Antigravity (agy) |
|
macOS e Linux |
| Antigravity para IDEs |
|
Visual Studio Code, Visual Studio, ambientes de desenvolvimento integrado JetBrains e Zed. Para mais informações, consulte Extensões de IDE Antigravity. |
Antes de começar
Antes de implantar o gateway, verifique se você tem:
- Projeto do Google Cloud: um projeto do Google Cloud com acesso à
Gemini Enterprise Agent Platform (antiga Vertex AI)
e à API Gemini Enterprise Agent Platform
(
aiplatform.googleapis.com) ativada. A implantação do gateway empresarial não requer uma conta do Cloud Billing com fatura. Qualquer pessoa com acesso à Gemini Enterprise Agent Platform pode usar o gateway. - Conta de serviço: uma conta de serviço do Google Cloud no seu projeto que recebe o papel do IAM
roles/aiplatform.user. O gateway usa essa conta de serviço para autenticar solicitações do Antigravity para o Google Cloud. - Registros de auditoria de acesso a dados: para verificar a atribuição de faturamento no Cloud Logging, ative os registros de auditoria de acesso a dados para a API Gemini Enterprise Agent Platform. Para mais informações, consulte Ativar registros de auditoria de acesso a dados.
- Versões de cliente compatíveis: os desenvolvedores precisam usar uma versão compatível de cada ferramenta do Antigravity. Para mais informações, consulte Ferramentas compatíveis com o Antigravity.
Implantar o gateway empresarial
É possível hospedar seu gateway empresarial usando qualquer plataforma conteinerizada ou gerenciada, como Cloud Run, Envoy, LiteLLM ou Apigee.
Seu gateway precisa atender a três requisitos de infraestrutura:
Preservar cabeçalhos de atribuição do cliente: encaminhe os cabeçalhos de cliente recebidos sem alterações para o Google, incluindo
User-Agent,X-Goog-Api-Cliente todos os cabeçalhos personalizados configurados emgateway.customHeaders(comoX-Cost-Center).Os clientes do Antigravity não enviam informações do projeto Google Cloud no modo de gateway. Se o gateway encaminhar solicitações para um projeto diferente daquele que contém a conta de serviço do gateway, configure o gateway para injetar o cabeçalho
X-Goog-User-Projectcom o ID do projeto de destino para atribuição de faturamento e cota.Suporte a streaming sem buffer: limpe os blocos de eventos enviados pelo servidor (SSE) imediatamente ao processar solicitações de streaming (
:streamGenerateContent?alt=sse). Não armazene blocos em buffer na camada do gateway.Confirmar endpoints de telemetria: responda com HTTP
200 OK({}) a chamadas de métricas em segundo plano (POST /v1beta:*) ou encaminhe-as para seu sistema de gerenciamento de eventos e informações de segurança (SIEM).
Caminhos de solicitação obrigatórios
O gateway precisa rotear os seguintes caminhos de inferência. Os caminhos são relativos ao URL do gateway. Por exemplo, uma solicitação de streaming para
https://gateway.cymbal.com usa
https://gateway.cymbal.com/v1beta/models/MODEL_ID:streamGenerateContent?alt=sse.
- Inferência de streaming:
POST /v1beta/models/MODEL_ID:streamGenerateContent?alt=sse - Inferência unária:
POST /v1beta/models/MODEL_ID:generateContent
O gateway também precisa aceitar os caminhos completos equivalentes da Gemini Enterprise Agent Platform:
- Inferência de streaming:
POST /v1beta1/projects/PROJECT_ID/locations/REGION/publishers/google/models/MODEL_ID:streamGenerateContent?alt=sse - Inferência unária:
POST /v1beta1/projects/PROJECT_ID/locations/REGION/publishers/google/models/MODEL_ID:generateContent
Os corpos de solicitação usam o esquema JSON padrão generateContent (contents,
generationConfig, safetySettings e systemInstruction).
Protocolos de transmissão compatíveis
O Antigravity Enterprise Gateway é compatível com dois protocolos de conexão para solicitações de inferência:
- Protocolo Gemini (
genai): o protocolo de transmissão padrão. A Antigravity envia solicitações de inferência formatadas no esquemagenerateContentdo Google para os endpointsPOST /v1beta/models/...descritos anteriormente. - Protocolo de transmissão da OpenAI (
openai): quando você definegateway.wireProtocolcomoopenai(ou defineAGY_LLM_GATEWAY_WIRE_PROTOCOL=openai), o Antigravity formata as solicitações de inferência no protocolo de preenchimento de chat da OpenAI e as envia paraPOST /v1/chat/completions.
Autenticar solicitações para o gateway
A Antigravity se autentica no gateway com uma chave de API emitida pelo gateway. O Antigravity envia a chave de
gateway.apiKey (ou a variável de ambiente AGY_LLM_GATEWAY_API_KEY) como um
token do portador no cabeçalho Authorization:
Authorization: Bearer GATEWAY_API_KEY
O Antigravity não recebe credenciais do Google Cloud , tokens do OAuth ou certificados do cliente em nome dos desenvolvedores. O gateway precisa autenticar todas as solicitações e rejeitar aquelas que não apresentarem uma chave válida.
Como a chave de API é armazenada nas estações de trabalho do desenvolvedor, combine-a com controles no nível da rede:
- Manter o gateway particular: exponha o gateway apenas na rede corporativa, por exemplo, por meio de um balanceador de carga de aplicativo interno que as estações de trabalho acessam pelo Cloud VPN ou pelo Cloud Interconnect. Não forneça um endpoint público ao gateway.
- Restringir quais dispositivos podem se conectar: permita conexões apenas de estações de trabalho gerenciadas, por exemplo, usando regras de firewall, um proxy de acesso à rede de confiança zero ou verificações de postura do dispositivo.
- Proteger e alternar chaves: armazene chaves no Secret Manager, valide-as em cada solicitação e alterne-as regularmente. Para atribuir o uso a desenvolvedores individuais, emita uma chave separada para cada desenvolvedor.
Para mais informações, consulte Considerações de segurança.
Conectar o gateway à Gemini Enterprise Agent Platform
Seu gateway chama a API Gemini Enterprise Agent Platform usando uma conta de serviço do Google Cloud . É possível criar o gateway em um gateway de API gerenciado, como a Apigee, ou implantar um gateway como o Envoy ou o LiteLLM na sua própria infraestrutura.
Ative as APIs necessárias:
gcloud services enable \ aiplatform.googleapis.com \ secretmanager.googleapis.com \ --project=PROJECT_IDSubstitua
PROJECT_IDpelo Google Cloud ID do projeto.Crie uma conta de serviço para o gateway e conceda a ela o papel
roles/aiplatform.user:gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --project=PROJECT_ID \ --display-name="Antigravity Enterprise Gateway" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/aiplatform.user"Substitua
SERVICE_ACCOUNT_NAMEpor um nome para a conta de serviço, comoagy-gateway-sa.Gere uma chave de API de gateway, armazene-a no Secret Manager e permita que a conta de serviço a leia:
openssl rand -base64 32 | tr -d '\n' | gcloud secrets create SECRET_NAME \ --project=PROJECT_ID \ --data-file=- gcloud secrets add-iam-policy-binding SECRET_NAME \ --project=PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor"Substitua
SECRET_NAMEpor um nome para o secret, comoagy-gateway-api-key. Distribua essa chave para as estações de trabalho comogateway.apiKeyemadmin_settings.json.Configure o gateway para fazer o seguinte:
- Autentique-se na Gemini Enterprise Agent Platform como a conta de serviço.
- Ler a chave de API do Secret Manager e rejeitar solicitações que não a apresentem.
- Permita que as solicitações sejam executadas por pelo menos 60 minutos para que as respostas de streaming longas não sejam interrompidas.
Para confirmar se o gateway funciona antes de configurar as estações de trabalho, consulte Testar o gateway diretamente.
Implantar configurações usando o MDM
Para configurar as estações de trabalho de desenvolvedor de forma centralizada, implante o
arquivo de configuração admin_settings.json usando seu sistema de gerenciamento de dispositivos móveis
(MDM), como Jamf, Microsoft Intune, Ansible ou MDM do Google Workspace.
O Antigravity lê admin_settings.json nos seguintes
caminhos do sistema operacional:
- macOS:
/Library/Application Support/Antigravity/admin_settings.json - Linux:
/etc/antigravity/admin_settings.json - Windows:
%ProgramData%\Antigravity\admin_settings.json
Para implantar o arquivo de configurações, faça o seguinte:
- Crie um arquivo
admin_settings.jsoncom o URL do gateway, a chave de API e os modelos aprovados. Para ver um exemplo, consulte Exemplo de configuração. No sistema de MDM, crie um pacote, uma política ou um script que copie o arquivo para o caminho de cada sistema operacional de destino. Execute-o com privilégios de administrador para que o arquivo seja de propriedade de uma conta de administrador e os desenvolvedores possam ler, mas não modificar. Por exemplo, o script de MDM pode executar os seguintes comandos:
macOS
Em um shell, execute os seguintes comandos como administrador:
sudo mkdir -p "/Library/Application Support/Antigravity" sudo install -m 644 -o root -g wheel admin_settings.json \ "/Library/Application Support/Antigravity/admin_settings.json"
Linux
Em um shell, execute os seguintes comandos como administrador:
sudo install -D -m 644 -o root -g root admin_settings.json \ /etc/antigravity/admin_settings.json
Windows
No PowerShell, execute os comandos a seguir como administrador:
$dir = Join-Path $env:ProgramData "Antigravity" # Remove any folder that a non-admin created first, so they can't keep ownership. if (Test-Path $dir) { Remove-Item -Recurse -Force $dir } New-Item -ItemType Directory -Path $dir | Out-Null # Administrators own the folder; only admins and SYSTEM can write; users can read. icacls $dir /setowner "*S-1-5-32-544" icacls $dir /inheritance:r /grant:r "*S-1-5-32-544:(OI)(CI)F" "*S-1-5-18:(OI)(CI)F" "*S-1-5-32-545:(OI)(CI)RX" Copy-Item admin_settings.json (Join-Path $dir "admin_settings.json")
Esses comandos tornam a pasta e o arquivo legíveis para todos os usuários e graváveis apenas para administradores.
Atribua o pacote ou a política aos dispositivos ou grupos de dispositivos que usam o Antigravity.
Reinicie o Antigravity nas estações de trabalho para que ele carregue as novas configurações.
Para confirmar se as estações de trabalho se conectam ao gateway, consulte Verificar conexões do cliente.
Precedência de configurações
O Antigravity lê as configurações de gateway de três fontes. Quando a mesma configuração é definida em mais de uma origem, a origem com maior precedência vence:
- Arquivo de configurações do administrador (mais alto):
admin_settings.jsonimplantado pelo sistema de MDM. - Variáveis de ambiente: variáveis
AGY_LLM_GATEWAY_*definidas na estação de trabalho. Para mais informações, consulte Conectar o Antigravity a um gateway corporativo. - Arquivo de configurações do usuário (mais baixo):
~/.antigravity/settings.jsonna pasta inicial do desenvolvedor.
As configurações são mescladas campo por campo. Por exemplo, se admin_settings.json definir o
URL do gateway, mas não a chave de API, o Antigravity vai usar a chave de API
de uma variável de ambiente. Como o arquivo de configurações do administrador tem a
maior precedência, os desenvolvedores não podem substituir os valores definidos nele.
Exemplo de configuração
O exemplo de arquivo admin_settings.json a seguir configura
o Antigravity para rotear o tráfego de IA por um gateway empresarial
em https://gateway.cymbal.com, anexa cabeçalhos de centro de custo corporativo e
restringe a seleção de modelos aos aprovados:
{
"gateway": {
"enabled": true,
"url": "https://gateway.cymbal.com",
"apiKey": "GATEWAY_API_KEY",
"wireProtocol": "genai",
"customHeaders": {
"X-Cost-Center": "Platform-Engineering",
"X-Corporate-BU": "DevTools"
}
},
"caCertPath": "/etc/ssl/certs/cymbal-root-ca.pem",
"models": {
"defaultModelId": "gemini-3.8-flash",
"list": [
{ "modelId": "gemini-3.8-flash" },
{ "modelId": "gemini-3.7-flash" },
{ "modelId": "gemini-3.1-pro-preview" }
]
}
}
Este exemplo de configuração define as seguintes configurações:
gateway.enabled: ativa o modo de roteamento do gateway. Quando definido comotrue, o Antigravity envia todas as solicitações de inferência para o gateway, em vez de enviá-las diretamente ao Google, e não solicita que os desenvolvedores façam login com uma Conta do Google.gateway.url: o endpoint HTTPS do gateway empresarial (https://gateway.cymbal.com).gateway.apiKey: a chave de API (GATEWAY_API_KEY) que o gateway exige para autorizar solicitações. Seu gateway emite essa chave, não o Google. O Antigravity o envia como um token do portador no cabeçalhoAuthorization.gateway.wireProtocol: o protocolo de transmissão da API. Os valores aceitos são:genai(padrão): usa o protocolo da API Gemini (POST /v1beta/models/...).openai: usa o protocolo de conexão de preenchimento de chat da OpenAI (POST /v1/chat/completions).
gateway.customHeaders: cabeçalhos HTTP personalizados (X-Cost-CentereX-Corporate-BU) que o Antigravity adiciona a cada solicitação. Use esses cabeçalhos para atribuir o uso a equipes ou centros de custo nos registros do gateway ou no SIEM.caCertPath: o caminho absoluto para o pacote de autoridade certificadora (CA) raiz corporativa. Essa configuração garante que as estações de trabalho confiem no certificado TLS interno do gateway.models.defaultModelId: o modelo que o Antigravity seleciona por padrão (comogemini-3.8-flash).models.list: os modelos aprovados que os desenvolvedores podem selecionar no Antigravity. Cada entrada requer ummodelIdcorrespondente a um modelo disponibilizado pelo gateway. Para uma lista de modelos do Google compatíveis, consulte Modelos compatíveis.
Considerações sobre segurança
Ao planejar a autenticação e a atribuição do gateway, considere o seguinte:
- Os cabeçalhos fornecidos pelo cliente não são confiáveis: os desenvolvedores controlam as próprias
estações de trabalho, então podem mudar os cabeçalhos definidos por variáveis de
ambiente (
AGY_LLM_GATEWAY_HEADERS) ou no arquivo de configurações do usuário. Não confie nesses cabeçalhos para geração de registros de auditoria ou atribuição de faturamento essenciais para a segurança. - Fixar cabeçalhos usando o MDM: para impedir que os desenvolvedores substituam
cabeçalhos de atribuição ou de política, defina-os em
gateway.customHeadersemadmin_settings.json. Os valores emadmin_settings.jsontêm precedência sobre as variáveis de ambiente e as configurações do usuário. - Autenticar na camada de rede ou de transporte: para verificar a identidade do desenvolvedor ou aplicar uma atribuição rigorosa de centro de custo, autentique o tráfego na camada de rede ou de transporte, como com o TLS mútuo (mTLS), o Logon único (SSO) no nível do proxy ou a microssegmentação de rede. Não dependa apenas da chave de API ou dos cabeçalhos HTTP.
Verificar a implantação
Antes de implantar arquivos de configuração nas estações de trabalho do desenvolvedor, verifique se o gateway corporativo encaminha o tráfego corretamente e se as informações de atribuição chegam ao Cloud Logging.
Testar o gateway diretamente
Teste o endpoint do gateway empresarial diretamente usando curl antes de testar em
estações de trabalho para desenvolvedores. Testar o gateway diretamente confirma que o roteamento de rede, a validação de certificado TLS, a autenticação e o streaming de eventos enviados pelo servidor (SSE, na sigla em inglês) sem buffer funcionam de maneira independente do Antigravity.
O exemplo de comando curl a seguir envia uma solicitação de streaming diretamente para o
endpoint do gateway:
curl -N -X POST "https://gateway.cymbal.com/v1beta/models/MODEL_ID:streamGenerateContent?alt=sse" \
-H "Authorization: Bearer GATEWAY_API_KEY" \
-H "Content-Type: application/json" \
-H "User-Agent: antigravity/1.2.15 (aidev_client; auth_method=gateway)" \
-d '{"contents": [{"role": "user", "parts": [{"text": "Reply with PONG"}]}]}'
Nesse comando:
-N: desativa o armazenamento em buffer de respostas emcurlpara que os eventos enviados pelo servidor (SSE) sejam transmitidos imediatamente.MODEL_ID: um modelo aprovado do seumodels.list(comogemini-3.8-flashougemini-3.7-flash). Recomendamos testar com um modelo Flash para a verificação inicial. Para uma lista de modelos disponíveis, consulte Modelos compatíveis.Authorization: envia a chave de API do gateway (GATEWAY_API_KEY) para autenticar a solicitação com o gateway.User-Agent: envia a string de atribuição do cliente que o Google usa para atribuir o uso ao seu contrato do Gemini Enterprise.streamGenerateContent?alt=sse: chama o endpoint de API de streaming para o modelo especificado.
Verifique se o gateway transmite os blocos de resposta imediatamente. Se você encontrar erros de conexão, avisos de certificado ou atrasos no armazenamento em buffer de resposta, consulte Solução de problemas.
Verificar conexões de cliente
Verifique o status do cliente em uma estação de trabalho configurada:
- App Antigravity: na barra de status na parte de baixo, verifique se o indicador mostra Connected: Enterprise Gateway. Em Configurações da conta, verifique se a opção Modo de gateway empresarial ativo está aparecendo.
CLI do Antigravity: execute um comando de teste:
agy -p "Explain binary search in Go"Esse comando envia um comando de teste para o gateway. Verifique se a resposta é transmitida no terminal sem exibir uma solicitação interativa de login do Google. Se o cliente não se conectar ou solicitar a autenticação do Google, consulte Solução de problemas.
Verificar a atribuição no Cloud Logging
No console do Google Cloud , verifique se os cabeçalhos de atribuição foram recebidos:
No console do Google Cloud , acesse a página Análise de registros:
Execute a seguinte consulta:
resource.type="aiplatform.googleapis.com/Endpoint" OR protoPayload.serviceName="aiplatform.googleapis.com"Inspecione os metadados da entrada de registro. Verifique se
protoPayload.requestMetadata.callerSuppliedUserAgentcontémantigravity/VERSION (aidev_client; auth_method=gateway).
Se nenhuma entrada de registro aparecer, verifique se os registros de auditoria de acesso a dados estão ativados para a API Gemini Enterprise Agent Platform.
Integrar desenvolvedores
Depois de verificar o gateway, prepare os desenvolvedores para usar o Antigravity:
- Estações de trabalho gerenciadas: se você implantar o
admin_settings.jsonusando seu sistema de MDM, os desenvolvedores não precisarão realizar nenhuma configuração. O Antigravity se conecta ao gateway automaticamente quando é iniciado. - Sandboxes e pipelines de CI/CD: para desenvolvedores que trabalham em executores conteinerizados, hosts SSH remotos ou ambientes de desenvolvimento não gerenciados, forneça o URL do gateway, a chave de API e o caminho da CA raiz. Oriente os desenvolvedores a conectar o Antigravity a um gateway empresarial.
Solução de problemas
A tabela a seguir lista problemas comuns de implantação e como resolvê-los:
| Sintoma | Causa | Resolução |
|---|---|---|
x509: certificate signed by unknown authority |
A estação de trabalho não confia no certificado TLS do gateway. | Especifique o caminho para o pacote de CA raiz corporativo usando caCertPath em admin_settings.json. |
401 Unauthorized ou 403 Forbidden |
A chave de API é inválida ou a conta de serviço do gateway não tem acesso. | Verifique o valor de gateway.apiKey e se a conta de serviço do gateway tem o papel do IAM roles/aiplatform.user no projeto de destino. |
404 Not Found |
O modelo solicitado não está disponível no gateway corporativo ou o ID do modelo foi digitado incorretamente. | Verifique se cada ID de modelo configurado em models.list em admin_settings.json corresponde a um nome de modelo que seu gateway corporativo disponibiliza. |
gateway.wireProtocol 'openai' is not supported by the ACP server |
admin_settings.json ou uma variável de ambiente especifica o protocolo de transmissão openai, que não é compatível com o servidor ACP. |
Defina wireProtocol como genai (ou omita para usar o padrão) para as estações de trabalho do ambiente de desenvolvimento integrado do JetBrains e do Zed. |
| Tempo limite das respostas de streaming | O gateway está armazenando em buffer as respostas HTTP. | Configure o gateway para desativar o armazenamento em buffer de respostas para eventos enviados pelo servidor (text/event-stream). |
| O Antigravity solicita o login do Google | O modo de gateway não está ativado ou o Antigravity não consegue encontrar o arquivo de configurações. | Verifique se admin_settings.json está implantado no caminho correto do sistema operacional e contém "enabled": true e um url na seção gateway. |
A seguir
- Saiba como os desenvolvedores se conectam de sandboxes remotas: Conectar o Antigravity a um Enterprise Gateway.
- Saiba mais sobre os recursos e fluxos de trabalho do Antigravity: documentação do Antigravity.
- Analise as métricas e o uso das ferramentas para desenvolvedores: Confira as métricas das ferramentas para desenvolvedores de IA.
- Configurar políticas de segurança do projeto: Definir as configurações das ferramentas de IA para desenvolvedores.