Generated banner for Agent Platform Architecture
Generated logo for Agent Platform Architecture

Agent Platform Architecture

GoogleOfficialPublished by Google

  • Skill
  • Tool integration
  • Cloud and DevOps
  • Apache-2.0
  • Low risk

From the author

Designs, engineers, and validates enterprise Gemini platform architectures. Use when designing multi-project hierarchies (Host, Central Governance Hub, Runtime Spoke, Tool/MCP Spoke), configuring Agent Gateway, authoring Agent Connectivity Templates (ALL_TRAFFIC vs PRIVATE_RANGES_ONLY), deploying Secure Web Proxy (SWP) with Policy-Based Routing (PBR) or Cross-Cloud mTLS Egress Hubs, configuring Private CA TrustConfig with Internal ALB + Serverless NEG, implementing Unified Access Policies (UAP Policy V2 CEL) and Semantic Governance (SGP), configuring 3P IdP Token Exchange (EntraID/Ping/Okta via ext_proc + STS) or Agent Identity Auth Manager (SPIFFE), enforcing Model Armor Floor Settings and Fail-Closed guardrails, deploying Cross-Project Registry sync, binding ADK agents on Agent Runtime, or executing Day-2 lifecycle operations. Don't use for read-only live log triage or incident diagnosis, or generic Google Cloud Identity and Access Management (IAM) debugging.
— the description by Google

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a structured framework for architecting and managing enterprise Gemini platform environments. It covers multi-project hierarchies, secure network connectivity via Agent Connectivity Templates (ACT), and advanced governance using Unified Access Policies (UAP) and Model Armor. It is designed for engineers building scalable, zero-trust agent platforms that require specific egress patterns, identity management, and cross-cloud integration.

What it does

  • Designs multi-project hierarchies including Host, Governance Hub, and Runtime Spokes.
  • Configures Agent Connectivity Templates for ALL_TRAFFIC or PRIVATE_RANGES_ONLY egress.
  • Implements security guardrails using Model Armor and Unified Access Policies (UAP V2).
  • Sets up identity and token exchange using SPIFFE and 3P IdP integration.
  • Manages Day-2 lifecycle operations for agent runtimes and connectivity templates.
  • Validates architecture through a structured 3-phase deployment and audit process.

When to use it

  • When designing the network and security topology for a new enterprise Gemini platform.
  • When configuring secure egress and ingress patterns for agent-to-service communication.
  • When implementing cross-project governance and identity boundaries.
  • When troubleshooting connectivity or policy enforcement issues in a Gemini platform stack.

Advantages

  • Provides a standardized, repeatable approach to complex platform architecture.
  • Ensures adherence to zero-trust principles and least-privilege IAM.
  • Reduces configuration drift through clear, domain-specific reference manuals.
  • Supports complex requirements like hybrid mTLS and cross-cloud egress hubs.

Usage examples

“Design a multi-project hierarchy for a Gemini platform with a central governance hub and separate runtime spokes.”
The agent will outline the project structure, VPC layout, and IAM bootstrap requirements for the requested hierarchy.
“How do I configure an Agent Connectivity Template for ALL_TRAFFIC egress?”
The agent will provide the specific YAML manifest and CLI commands to configure the ACT with the required egress mode.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/google/agent-platform-architecture/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip agent-platform-architecture.zip -d .agents/skills

Documentation by Google

Gemini platform Architecture and Engineering Guide

This skill is the reference system for designing, engineering, and validating enterprise-grade Gemini platform architectures across multi-project hierarchies, hybrid/cross-cloud networks, zero-trust identity boundaries, and inline safety/policy enforcement planes.

Usage Attribution

MUST READ: Before executing any gcloud, REST API, or MCP command, you MUST read and follow the instructions in Usage Attribution.

[!IMPORTANT] Architectural Scope and Reference Discipline: Use SKILL.md to select the target topology, egress mode, ingress pattern, and governance plane, then consult the authoritative references/*.md manual for exact CLI commands, REST/YAML schemas, Common Expression Language (CEL) expressions, and Python Agent Development Kit (ADK) runtime code (references/*.md is the single source of truth for all implementation syntax). When remote Model Context Protocol (MCP) tools (such as the Google Developer Knowledge MCP server or Google-managed MCP endpoints) are available, prefer remote MCP tool invocation over raw CLI/REST commands. Do not execute unrequested live mutations against customer projects when asked for architectural designs.

[!CAUTION] Human Approval Gate for Sensitive Operations: Always prompt the user for explicit confirmation before executing commands or applying configurations that grant permissive Identity and Access Management (IAM) bindings (roles/iap.egressor, roles/compute.networkUser, roles/networkservices.admin), modify Organization Policies (constraints/iam.managed.disableAccessPolicyBinding), update Unified Access Policy (UAP) or VPC Service Controls (VPC-SC) policies, or delete resources (REST DELETE ...?force=true or CLI --quiet).


Prerequisites, Authentication, Region, and Billing Setup

  1. Google Cloud SDK, Authentication, and Project Setup:

    • Install the Google Cloud SDK (gcloud) and authenticate CLI and Application Default Credentials (gcloud auth login && gcloud auth application-default login, or set GOOGLE_APPLICATION_CREDENTIALS).

    • Select or create the target project (gcloud projects create {project_id} / gcloud config set project {project_id}), set the default region (gcloud config set compute/region {region}, defaulting to us-central1; see Google Cloud Locations), and enable required APIs:

      gcloud services enable aiplatform.googleapis.com agentregistry.googleapis.com \
        agentidentity.googleapis.com agentidentitycredentials.googleapis.com \
        networkservices.googleapis.com networksecurity.googleapis.com iap.googleapis.com \
        modelarmor.googleapis.com compute.googleapis.com dns.googleapis.com \
        certificatemanager.googleapis.com servicenetworking.googleapis.com
  2. Billing, Least-Privilege IAM, and Product Terminology:

    • Verify an active billing account is attached (gcloud billing projects describe {project_id} --format="value(billingEnabled)") across {host_project_id}, {gov_project_id}, {runtime_project_id}, and {mcp_project_id} (required even when evaluating free-tier allowances; review Google Cloud Pricing).

    • Grant explicit least-privilege IAM roles (roles/aiplatform.user, roles/networkservices.admin, roles/compute.networkAdmin, roles/compute.networkUser, roles/iap.egressor, or a custom role with networkservices.agentGateways.get,networkservices.agentGateways.use,networkservices.operations.get) rather than primitive roles/owner or roles/editor.

    • Use approved product names: Gemini platform, Agent Runtime (reasoningEngines), Agent Gateway (240.0.0.2:443), Agent Connectivity Template (ACT), Agent Registry, and Unified Access Policy (UAP Policy V2) / Semantic Governance Policy (SGP).


3-Phase Architect Workflow and Decision Tree

graph TD
    Start["Enterprise Gemini platform Architecture"] --> Q1{"1. Egress Destinations?"}
    Q1 -->|"RFC 1918 + Google APIs Only"| Priv["ACT: vpcEgress = PRIVATE_RANGES_ONLY<br/>• Direct Private Google Access (PGA)"]
    Q1 -->|"Public Internet, VPC-SC, or Non-RFC 1918 PUPI"| All["ACT: vpcEgress = ALL_TRAFFIC<br/>• 100% Egress via AGW VIP 240.0.0.2:443<br/>• Consolidate Core Google APIs FQDNs"]
    All --> Q2{"2. Layer 7 URL List or Cross-Cloud mTLS?"}
    Q2 -->|"No (Standard NAT)"| Nat["Direct Cloud NAT on PSC-I Subnet<br/>• ENDPOINT_TYPE_VM,ENDPOINT_TYPE_SWG"]
    Q2 -->|"Yes (Next-Hop SWP)"| Swp["Next-Hop SWP (NEXT_HOP_ROUTING_MODE) + PBR<br/>• Internal and Google API DEFAULT_ROUTING bypasses<br/>• Default route via SWP ILB IP<br/>• Exclude PSC-I from manual Cloud NAT"]
  1. Phase 1 — Scope Verification and Architecture Discovery:

    • Scope Boundaries and Single-Region Discovery: Decline generic Google Cloud IAM/Compute/Storage debugging unrelated to the Gemini platform stack or requests to run broad multi-region live project scanning loops, pointing instead to gcloud ai reasoning-engines list --region={region}.

    • Architecture Design and Engineering: Identify the project hierarchy (Host, Governance Hub, Runtime Spoke, Tool/MCP Spoke), egress mode (ALL_TRAFFIC vs PRIVATE_RANGES_ONLY), policy plane (UAP V2, SGP, Model Armor), and target output format (topology specification, gcloud CLI commands, or REST/YAML manifests).

  2. Phase 2 — Draft Architecture Plan and Resource Mapping:

    • Synthesize the topology diagram, project/VPC layout, IAM bootstrap matrix, and security controls using the Domain Router and Symptom Matrix, and map each manual's canonical REST/YAML schema and CLI commands into the target deployment artifacts.

  3. Phase 3 — Post-Deployment and Audit Log Verification:

    • Pair every architecture design with the Post-Deployment and Cloud Audit Log Verification checklist (references/topologies_and_project_layouts.md) and runtime query validation (references/agent_runtime_and_identity.md).


Domain Router and Symptom Matrix

Each reference manual in references/ is the single source of truth for its domain's CLI commands, REST/YAML schemas, quotas, and CEL expressions. Always read the corresponding reference manual before generating configurations or answering domain-specific questions:

Architecture DomainTopics and Architectural Decisions CoveredSymptoms and Failure Modes Routed HereCanonical Reference Manual
1. Project Hierarchy, Shared VPC, VPC-SC, and Custom RoutingMulti-project separation (Host, Governance Hub, Runtime Spoke, Tool/MCP Spoke), PSC-I subnet sizing, cross-project Service Agent IAM bootstrap, VPC-SC perimeters, non-RFC 1918 PUPI/peered custom route exchange, and post-deployment Cloud Audit Log verification.PSC-I IP exhaustion, cross-project attachment or addressGroup permission denials, VPC-SC perimeter blocks, dropped non-RFC 1918 internal routes, or post-deployment verification.references/topologies_and_project_layouts.md
2. Agent Connectivity Template (ACT) and Agent GatewayChoosing ALL_TRAFFIC vs PRIVATE_RANGES_ONLY, ACT and Agent Gateway REST/YAML schemas, control-plane URI formatting, registry attachment limits, and container custom Root CA bundle trust.Control-plane URI validation errors, registry attachment limit errors, or container TLS verification failures ([SSL: UNEXPECTED_EOF_WHILE_READING]).references/agent_gateway_and_act.md
3. Outbound Routing, Next-Hop SWP, PBR, and Hybrid mTLSSource-range Policy-Based Routes (PBR) for PSC-I subnets, Next-Hop Secure Web Proxy (NEXT_HOP_ROUTING_MODE), swg-autogen-nat vs manual Cloud NAT coexistence, gRPC/A2A/WebSocket routing, Spanner SA impersonation, and Cross-Cloud mTLS Egress Hubs (Hybrid NEG).Asymmetric return-routing drops between manual Cloud NAT and swg-autogen-nat, outbound URL filtering on PSC-I interfaces, or cross-cloud mTLS origination over Cloud Interconnect/VPN.references/egress_routing_and_swp.md
4. Ingress ALB, URL Rewrites, Private CA, and 3P IdP STSTwo-Tier and Single-Tier ALB ingress with URL Map hostRewrite/pathPrefixRewrite, Private CA TrustConfig with Regional Internal ALB + Serverless NEG for Cloud Run MCP servers, and 3P IdP (EntraID/Ping/Okta) token exchange via LbTrafficExtension (ext_proc + STS).WebPKI root stripping (NO_ADDITIONAL_ROOTS), empty :authority drops on Serverless NEGs, *.run.app Google-managed certificate mismatches, or OAuth/IAP header collisions.references/ingress_patterns_and_rewrites.md
5. UAP Policy V2, IAP V1, SGP, and Model Armor GovernanceOrganization/Folder/Project UAP Policy V2 and IAP V1 CEL authorization rules, Semantic Governance Policy (SGP CONTENT_AUTHZ), custom AuthzExtension / AuthzPolicy targets, and fail-closed Model Armor Floor Settings, templates, and ADK callbacks.Egress request is not authorized (HTTP 403 / status.code=7) on MCP initialize or tools/list, failed to parse the service URL on AuthzExtension, binary gRPC parser crashes, or fail-open safety bypasses.references/governance_security_policies.md
6. Agent Registry, Consolidated googleapis, and FederationConsolidating core Google APIs FQDNs into a single googleapis service (ALL_TRAFFIC), registering MCP/A2A/REST services, extracting server-generated registryResource UUIDs for roles/iap.egressor, and Event-Driven Spoke-to-Hub Registry Federation.ALL_TRAFFIC agent startup or telemetry blackholing, IAM binding target mismatches on Registry resources, OpenAPI/MCP spec size rejections, or multi-project catalog drift.references/registry_and_federation.md
7. ADK Runtime Packaging, Agent Identity, and Day-2 OperationsPackaging ADK agents with AGENT_IDENTITY (SPIFFE) and Auth Manager, regional residency, BigQuery pre-execution cost guards, in-place ACT updates, reverse-dependency teardown, and external Cloud NAT IP verification.Raw credential exposure, HTTP 409 ABORTED control-plane mutex locks, HTTP 400 FAILED_PRECONDITION (FROM_AGENT_GATEWAY* or contains child resources: sessions), or X-Forwarded-For: 0.0.0.0 when probing *.run.app.references/agent_runtime_and_identity.md

Files

references/registry_and_federation.md

Agent Registry Architecture, MCP Services, and Multi-Project Federation

This reference details the design, TLS SNI inspection mechanics, consolidated googleapis service patterns, manual cross-project MCP and Agent2Agent (A2A) registration workflows, service catalog schemas, and automated federation engines for Agent Registry.


Table of Contents

  • 1. Registry Architecture, TLS SNI Inspection, and Centralized Catalog Model: Lines 21-71

  • 2. Manual Cross-Project Registration Runbook: Lines 72-167

  • 3. Scoping, Identity Decision Matrix, and Critical CEL Guards: Lines 168-198

  • 4. The Consolidated googleapis Service Invariant: Lines 199-293

  • 5. Automated Multi-Project Registry Federation: Lines 294-329

  • 6. Agent Registry Taxonomy Metadata, Resource Labels and CI/CD Catalog Automation: Lines 330-342


1. Registry Architecture, TLS SNI Inspection, and Centralized Catalog Model

The Agent Registry acts as the Service Directory and L7 routing table for the Agent Gateway. When an Agent Connectivity Template operates in ALL_TRAFFIC mode, outbound TCP connections from the Agent Runtime resolve to synthetic Private Service Connect VIP 240.0.0.2:443. The Gateway inspects the TLS Server Name Indication (SNI) header:

  • Under IAM Policy V1 (when iapPolicyVersion = "V2" is not set), if the SNI does not match an authorized entry in Agent Registry, the connection is dropped immediately with default_denied ([SSL: UNEXPECTED_EOF_WHILE_READING]).

  • When UAP Policy V2 (iapPolicyVersion = "V2") is enabled on the AuthzExtension, unregistered SNIs evaluate against UAP rules matching destination.is_registered == false (destination.unregistered.host) before being allowed or dropped.

+-----------------------------------------------------------------------------------------+
| Agent Runtime -> Connects to synthetic VIP: 240.0.0.2:443                               |
+--------------------------------------------+--------------------------------------------+
                                             | (TLS SNI Inspection)
                                             v
+-----------------------------------------------------------------------------------------+
| Agent Gateway (Managed Envoy)                                                           |
|   • SNI Match: Evaluate UAP / IAP Egressor Policy (destination.is_registered == true)   |
|   • No Match (Policy V1): Reject with default_denied (UNEXPECTED_EOF_WHILE_READING)     |
|   • No Match (UAP V2): Evaluate destination.is_registered == false rules                |
+--------------------------------------------+--------------------------------------------+
                                             |
                        +--------------------+--------------------+
                        v                                         v
+-----------------------------------------------+ +---------------------------------------+
| Consolidated googleapis Service (Core FQDNs)  | | External REST & MCP Services (/mcp)   |
+-----------------------------------------------+ +---------------------------------------+

In enterprise governance architectures, the Agent Registry resides in the Centralized Governance Project (AGW_PROJECT_ID) alongside the Agent Gateway:

  • Catalog Registration (Governance Plane): Service definitions, interface URLs, and OpenAPI/MCP tool specs are published into the central Agent Registry (agentregistry.googleapis.com).

  • Access Authorization (Data Plane): Egress authorization is governed in the central project via UAP Policy V2 or roles/iap.egressor, while runtime invocation permissions (roles/run.invoker) are granted on backend compute resources (Cloud Run, GKE) in the producer project.


2. Manual Cross-Project Registration Runbook

In Agent Registry, mcp-servers, endpoints, and agents are read-only projections. All write operations target GA gcloud agent-registry services (use GA gcloud agent-registry commands across all runbooks). In GA gcloud iap web add-iam-policy-binding, resource type flags use singular names (--mcp-server, --agent, --endpoint), never plural flag names (--mcp-servers, --agents, --endpoints).

2.1 Cross-Project MCP Server Registration

[!IMPORTANT] MCP Protocol Binding and URL Invariants: 1. Protocol binding in gcloud CLI MUST be JSONRPC (HTTP_JSON is rejected for MCP servers). 2. The interface URL path MUST end with /mcp (such as https://${MCP_HOST}/mcp). 3. MCP tool specifications (--mcp-server-spec-content) must stay under the 10 KB payload limit.

# Option A: Register MCP Server with Tool Spec (< 10 KB)
gcloud agent-registry services create "${MCP_SERVICE_NAME}" \
  --project="${AGW_PROJECT_ID}" --location="${REGION}" \
  --display-name="${MCP_SERVICE_DISPLAY_NAME}" \
  --mcp-server-spec-type=tool-spec --mcp-server-spec-content="$(cat toolspec.json)" \
  --interfaces="protocolBinding=JSONRPC,url=https://${MCP_HOST}/mcp" --quiet

# Option B: Register MCP Server without Tool Spec (Dynamic Discovery)
gcloud agent-registry services create "${MCP_SERVICE_NAME}" \
  --project="${AGW_PROJECT_ID}" --location="${REGION}" \
  --display-name="${MCP_SERVICE_DISPLAY_NAME}" \
  --mcp-server-spec-type=no-spec \
  --interfaces="protocolBinding=JSONRPC,url=https://${MCP_HOST}/mcp" --quiet
2.2 Cross-Project Agent2Agent Protocol (A2A Protocol) Registration
  • Option A (--agent-spec-type=a2a-agent-card): Target URL (https://${REGION}-aiplatform.googleapis.com/v1/projects/${TARGET_PROJECT_NUMBER}/locations/${REGION}/reasoningEngines/${TARGET_ENGINE_ID}:query or custom A2A ingress URL) is declared inside agentspec.json (--interfaces must be omitted when --agent-spec-type=a2a-agent-card is set).

  • Option B (--agent-spec-type=no-spec): Pass the custom A2A proxy endpoint URL via --interfaces="protocolBinding=JSONRPC,url=https://a2a-agent.internal.example.com/a2a".

gcloud agent-registry services create "${TARGET_AGENT_NAME}" \
  --project="${AGW_PROJECT_ID}" --location="${REGION}" \
  --display-name="${TARGET_AGENT_DISPLAY_NAME}" \
  --agent-spec-type=a2a-agent-card --agent-spec-content="$(cat agentspec.json)"
2.3 External REST and SaaS API Registration

External public REST APIs accessed by agent tools under Policy V1 (or registered endpoints under Policy V2) are registered with protocolBinding=HTTP_JSON and --endpoint-spec-type=no-spec:

gcloud agent-registry services create "ip-lookup-service" \
  --project="${AGW_PROJECT_ID}" --location="${REGION}" \
  --display-name="IP Lookup Service" --endpoint-spec-type=no-spec \
  --interfaces="protocolBinding=HTTP_JSON,url=https://api.ipify.org" --quiet
2.4 Server-Generated Resource ID Extraction and IAP Authorization

Agent Registry generates unique internal resource UUIDs (the last segment of registryResource, such as agentregistry-00000000-...). IAP policy bindings require this server-generated UUID and roles/iap.egressor (never the friendly service name or roles/iap.tunnelResourceAccessor):

# 1. Extract Server-Generated Resource ID (via gcloud agent-registry mcp-servers describe or gcloud agent-registry services describe)
REGISTRY_RESOURCE=$(gcloud agent-registry mcp-servers describe "${MCP_SERVICE_NAME}" \
  --project="${AGW_PROJECT_ID}" --location="${REGION}" --format='value(registryResource)')
RESOURCE_ID=$(basename "${REGISTRY_RESOURCE}")

# 2. Grant roles/iap.egressor separating discovery (empty toolName) from specific tools/call invocation
gcloud iap web add-iam-policy-binding \
  --project="${AGW_PROJECT_ID}" --region="${REGION}" \
  --resource-type=agent-registry --mcp-server="${RESOURCE_ID}" \
  --member="principal://agents.global.org-${ORG_ID}.system.id.goog/resources/aiplatform/projects/${AE_PROJECT_NUMBER}/locations/${REGION}/reasoningEngines/${ENGINE_ID}" \
  --role="roles/iap.egressor" \
  --condition="^:^expression=(api.getAttribute('iap.googleapis.com/mcp.method', '') in ['initialize', 'tools/list'] && api.getAttribute('iap.googleapis.com/mcp.toolName', '') == '') || (api.getAttribute('iap.googleapis.com/mcp.method', '') == 'tools/call' && api.getAttribute('iap.googleapis.com/mcp.toolName', '') == 'get_weather'):title=AllowDiscoveryAndTool" \
  --quiet

# 3. Grant roles/iap.egressor to Agent Runtime Service Account
gcloud iap web add-iam-policy-binding \
  --project="${AGW_PROJECT_ID}" --region="${REGION}" \
  --resource-type=agent-registry --mcp-server="${RESOURCE_ID}" \
  --member="serviceAccount:service-${AE_PROJECT_NUMBER}@gcp-sa-aiplatform-re.iam.gserviceaccount.com" \
  --role="roles/iap.egressor" --quiet

3. Scoping, Identity Decision Matrix, and Critical CEL Guards

  • Google APIs Endpoint (Project or Org scope, principalSet://, roles/iap.egressor): Unconditional allow for registered googleapis.

  • Internal MCP Server — Read-Only (Per-Agent scope, principal://.../reasoningEngines/ID, roles/iap.egressor):

    • IAP V1: api.getAttribute('iap.googleapis.com/mcp.tool.isReadOnly', false) == true || api.getAttribute('iap.googleapis.com/mcp.toolName', '') == ''

    • UAP V2: (destination.agent_registry.mcp_server.method == 'tools') && (destination.agent_registry.mcp_server.tool.name == '' || destination.agent_registry.mcp_server.tool.annotations.read_only_hint == true)

  • Internal MCP Server — Read/Write (Per-Agent scope, principal://.../reasoningEngines/ID, roles/iap.egressor): Specific tool allowlist plus empty toolName (tool.name == '').

  • Agent2Agent protocol (A2A) (Per-Agent scope, principal:// Calling Agent ID, roles/iap.egressor): Optional method filter.

3.1 Empty toolName and Null-Dereference Guards

During MCP initialize and tools/list handshakes, no specific tool name is present (""), and during non-tool calls (prompts/list, resources/read), destination.agent_registry.mcp_server.tool is null. Always check method == 'tools' first and permit empty tool names (tool.name == '' in UAP Policy V2 or api.getAttribute('iap.googleapis.com/mcp.toolName', '') == '' in IAP V1). See references/governance_security_policies.md Sections 2–4 for full UAP Policy V2 templates.


4. The Consolidated googleapis Service Invariant

[!IMPORTANT] Consolidated Registry Rule: Never create fragmented, per-API service entries in Agent Registry. Consolidate all Google Cloud APIs under a single service entry named googleapis. Separate standalone Google API service entries fail Envoy route matching and evaluate as unregisteredEndpoint (destination.is_registered == false).

4.1 The 8 Required Base FQDN Interfaces (Plus Telemetry)

Every consolidated googleapis registry service must define the 8 mandatory base Google API FQDNs plus the 9th telemetry mTLS endpoint:

  1. https://agentregistry.googleapis.com

  2. https://aiplatform.googleapis.com

  3. https://aiplatform.mtls.googleapis.com

  4. https://cloudresourcemanager.mtls.googleapis.com

  5. https://iamcredentials.mtls.googleapis.com

  6. https://${REGION}-aiplatform.mtls.googleapis.com

  7. https://${REGION}-aiplatform.googleapis.com

  8. https://aiplatform.${REGION}.rep.googleapis.com

  9. https://telemetry.mtls.googleapis.com

4.2 Additional Telemetry, Global/Multi-Region Model and Hostname Permutations
  • Telemetry and Tracing Endpoints: Include https://monitoring.googleapis.com, https://trace.mtls.googleapis.com, https://cloudtrace.googleapis.com, https://logging.googleapis.com, and https://telemetry.googleapis.com so OpenTelemetry and Cloud Logging exporters do not drop on container startup.

  • Global and Multi-Region Foundation Models: When using models via the global endpoint (such as gemini-2.5-pro with GOOGLE_CLOUD_LOCATION="global") or cross-region us-central1 models, include https://us-aiplatform.googleapis.com, https://us-aiplatform.mtls.googleapis.com, https://aiplatform.us.rep.googleapis.com (and us-central1-aiplatform.* when deployed outside us-central1).

  • Hostname Permutation Matrix: Agent Gateway matches SNI hostnames strictly across all 6 Google API forms: Base REST (aiplatform.googleapis.com), Base mTLS (aiplatform.mtls.googleapis.com), Locational REST (${REGION}-aiplatform.googleapis.com), Locational mTLS (${REGION}-aiplatform.mtls.googleapis.com), Regional REP (aiplatform.${REGION}.rep.googleapis.com), and Private PSC REP (aiplatform.${REGION}.p.rep.googleapis.com).

  • 10 KB Spec Limit, Dual-Registry Cap and Multi-Region Registration Prohibition: --mcp-server-spec-content and --agent-spec-content enforce a hard 10 KB limit. An Agent Gateway supports a maximum of 2 registries (at most 1 global and 1 regional, referenced using numeric uint64 project numbers; see references/agent_gateway_and_act.md Section 3.4). Manual registration in multi-region locations (--location=us or --location=eu) is unsupported and returns HTTP 400; always register in a specific region (such as us-central1 or us-east4) or global.

4.3 Canonical Consolidated googleapis Registration Command and Schema Rules

When registering Agent Registry services (agentregistry.services), provide serviceId, location, one spec block (endpointSpec, mcpServerSpec, or agentSpec), and interfaces entries (url and protocolBinding = "HTTP_JSON", "JSONRPC", or "GRPC"). Use "GRPC" for binary HTTP/2 gRPC endpoints (spanner.googleapis.com, telemetry.mtls.googleapis.com, trace.mtls.googleapis.com) and "HTTP_JSON" for all aiplatform*.googleapis.com REST endpoints:

gcloud agent-registry services create "googleapis" \
  --project="${PROJECT_ID}" \
  --location="${REGION}" \
  --display-name="Google Cloud APIs" \
  --description="Consolidated Google Cloud APIs catalog for Agent Gateway egress" \
  --endpoint-spec-type=no-spec \
  --interfaces="url=https://agentregistry.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://aiplatform.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://aiplatform.mtls.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://${REGION}-aiplatform.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://${REGION}-aiplatform.mtls.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://aiplatform.${REGION}.rep.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://us-aiplatform.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://us-aiplatform.mtls.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://aiplatform.us.rep.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://cloudresourcemanager.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://cloudresourcemanager.mtls.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://iamcredentials.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://iamcredentials.mtls.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://storage.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://telemetry.mtls.googleapis.com,protocolBinding=GRPC" \
  --interfaces="url=https://monitoring.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://trace.mtls.googleapis.com,protocolBinding=GRPC" \
  --interfaces="url=https://cloudtrace.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://logging.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://telemetry.googleapis.com,protocolBinding=HTTP_JSON" \
  --interfaces="url=https://spanner.googleapis.com,protocolBinding=GRPC"

5. Automated Multi-Project Registry Federation

5.1 The Read-Through Invalidation and Anti-Entropy Pattern

Treat Cloud Audit Logs or Cloud Asset Inventory (CAI) feeds strictly as cache invalidation triggers:

  1. Folder Log Sink: Catches CreateService, UpdateService, or DeleteService on agentregistry.googleapis.com across spoke projects (excluding projects/${HUB_PROJECT_ID}/, projects/${HUB_PROJECT_NUMBER}/, and the replicator service account email to prevent echo loops) and publishes to Pub/Sub with a dead-letter topic (maxDeliveryAttempts = 5).

  2. Authoritative Spoke Read-Through and Validation: A Cloud Run Replicator service calls GetService against the spoke (projects/{spoke}/locations/{loc}/services/{spoke_service}), verifies that the interface URL uses an approved FQDN (rejecting raw IP literals or blocklisted external domains so spoke registrations cannot bypass Org UAP guardrails), and upserts the federated service into the Central Hub Registry (projects/{hub}/locations/{loc}/services/{spoke_project}--{spoke_service}) using updateMask=displayName,description,interfaces,agentSpec,mcpServerSpec,endpointSpec and watermark comparison (replicated_from_update_time=...).

  3. Hourly Anti-Entropy Sweep: A Cloud Run Job (triggered by Cloud Scheduler) reconciles spoke ListServices / CAI against Hub records older than 2 hours (updateTime < NOW - 2h) before pruning deleted spoke services via DeleteService.

gcloud logging sinks create "agent-registry-events-sink" \
  "pubsub.googleapis.com/projects/${HUB_PROJECT_ID}/topics/agent-registry-events" \
  --folder="${FOLDER_ID}" --include-children \
  --log-filter="protoPayload.serviceName=\"agentregistry.googleapis.com\" AND protoPayload.methodName:(\"CreateService\" OR \"UpdateService\" OR \"DeleteService\") AND NOT protoPayload.resourceName:\"projects/${HUB_PROJECT_ID}/\" AND NOT protoPayload.resourceName:\"projects/${HUB_PROJECT_NUMBER}/\" AND NOT protoPayload.authenticationInfo.principalEmail=\"${REPLICATOR_SA_EMAIL}\""

6. Agent Registry Taxonomy Metadata, Resource Labels and CI/CD Catalog Automation

  1. Standardized Taxonomy Metadata and Resource Labels: Attach standard Google Cloud resource labels (labels = { env = "...", team = "...", cost_center = "...", owner = "..." }) to underlying compute/runtime resources (ReasoningEngine, Cloud Run, GKE) and encode structured taxonomy metadata (env=...;team=...;cost_center=...;owner=...) into the Agent Registry service_id naming convention ({team}-{env}-{service_name}) and --description field.

  2. Automated CI/CD Registration and Verification: Combine declarative service definitions in spoke projects with the event-driven catalog replicator (Section 5) and gate promotion using the Post-Deployment Verification Checklist (references/topologies_and_project_layouts.md Section 10).

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs an MCP server, Needs a command-line tool

Security

What our scanner noticed· Low risk

  • Instructions that use the network

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
Google
Publisher
Google (Official)
Source
google/skills · skills/cloud/agent-platform-architecture · commit 2194d3b
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Google or Google.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download agent-platform-architecture.zip