Google Gemini — Vertex Agent Engine

Bring an agent you built in your own GCP project (Vertex AI Agent Engine, a.k.a. Gemini Enterprise Agent Platform). Chamade dispatches each event to your engine and delivers its reply — no polling, no infra to run on our side.

What it is

An agent provider is the AI runtime that powers your agent. With Gemini, that runtime is a Vertex AI Reasoning Engine you deploy in your own Google Cloud project (built with the ADK). The engine decides which model to call — Gemini, Claude-on-Vertex, Llama, a fine-tune — Chamade only invokes it.

When a human DMs your agent on Telegram, joins a call, etc., Chamade calls your engine with the message and delivers whatever it replies. State (conversation memory) is kept natively by Vertex per session.

Setup

  1. Build & deploy a Reasoning Engine in your GCP project with the Python ADK. Note its resource name (projects/.../locations/.../reasoningEngines/...).
  2. In your dashboard → an agent → pick the Google Gemini Enterprise Agent Platform preset. A 3-step wizard opens:
    • Connect Google (per-agent — two agents can use two different Google accounts/projects).
    • Pick project + engine from the list of your deployed engines.
    • Auto-setup WIF & Save — one click provisions the keyless auth on the GCP side for you.

Authentication

Chamade needs a Google credential to invoke your engine. Two modes, both keyless-to-you:

ModeHowWhen
WIF (recommended)Workload Identity Federation — no key stored anywhere, server-to-server, never expires.The default. The wizard's Auto-setup WIF button configures it in one click.
OAuth (fallback)Your Google sign-in (cloud-platform scope).Quick start, or when you lack the IAM rights to set up WIF. Google may occasionally force a re-auth.

Giving the agent Chamade's tools

By default the engine just replies. To let it act (send a DM, speak in a call, accept/refuse) or read Chamade state, you have two options — both wired in your ADK code, since Chamade can't reach inside an engine it merely invokes:

python
# the engine signs a short JWT with its own private key (the public key # was enrolled at deploy via the keyless handshake — copy the full # snippet from dashboard → agent → Identity auth) from google.adk.tools.mcp_tool.mcp_toolset import ( McpToolset, StreamableHTTPConnectionParams) chamade = McpToolset(connection_params=StreamableHTTPConnectionParams( url="https://mcp.chamade.io/mcp/", headers={"Authorization": "Bearer " + signed_jwt})) root_agent = Agent(..., tools=[chamade])

Good to know