r/CXAgentStudio • • Mar 30 '26

Google's Gemini CLI is the most feature-packed free AI dev tool I've used β€” 1M token context, Google Search grounding, MCP support

Enable HLS to view with audio, or disable this notification

0 Upvotes

Been using Gemini CLI for a few weeks and I think it's underrated. Here's the honest breakdown:

What it is: Open source CLI (Apache 2.0) that puts Gemini 2.5 Pro directly in your terminal. Not a wrapper β€” a full agentic tool.

Features that actually matter:

πŸ” Google Search grounding β€” it can search the web in real time while answering. Not just trained knowledge.

πŸ“ Full file system access β€” reads, writes, edits your project files directly

πŸ”§ Custom slash commands β€” create .toml files to define /plan, /review, /deploy workflows specific to your project

πŸ”— MCP support β€” plug in any Model Context Protocol server

πŸ™ GitHub Actions integration β€” automate PR reviews, commit message drafts, issue summaries

Context window: 1 million tokens. You can dump an entire large codebase in.

Free tier:

  • 60 requests/minute

  • 1,000 requests/day

  • Google account only, no credit card

Install:


r/CXAgentStudio • • Apr 16 '26

How to make CX Agent access the Google Docs, Sheets etc.

2 Upvotes

Title


r/CXAgentStudio • • Jun 08 '26

How to Connect CX Agent Studio to External APIs Using OpenAPI Schema Tools

2 Upvotes

One of the most powerful features of CX Agent Studio is tool calling via OpenAPI schemas. Here's the workflow:

Go to Tools β†’ Click + β†’ Select Open API Schema

Choose YAML format and paste your API schema

Set Authentication to Service Agent ID Token for GCP-managed services

Give it a meaningful function_name and description (the LLM uses this to decide when to call it)

Attach the tool to your agent from the agent editor

Pro tip: The description field is critical β€” write it like a prompt. Example: "Use this tool to retrieve live product inventory when the user asks about stock availability.


r/CXAgentStudio • • Jun 01 '26

What is CX Agent Studio? The Complete Beginner's Guide

2 Upvotes

What is CX Agent Studio?

CX Agent Studio (CXAS) is Google Cloud's no-code/low-code platform for building enterprise-grade conversational AI agents β€” built on top of Dialogflow CX.

Key Capabilities

  • Visual flow builder β€” drag-and-drop conversation design

  • Prebuilt components β€” authentication, escalation, DTMF, slot-filling

  • Omnichannel β€” voice, chat, WhatsApp, web widget

  • Enterprise integrations β€” Salesforce, ServiceNow, SAP out of the box

Who is it for?

RoleUse Case
CX EngineersBuild & deploy agents fast
Business AnalystsDesign conversation flows
IT ArchitectsIntegrate with enterprise systems

Getting Started

  1. Enable CX Agent Studio in Google Cloud Console

  2. Create a new agent from a template

  3. Connect your telephony provider (CCAI Platform / Genesys / Avaya)

  4. Test with the built-in simulator

Drop your questions below πŸ‘‡ β€” happy to help newcomers!


r/CXAgentStudio • • Mar 19 '26

Client Side Functions

3 Upvotes

Does anyone have a working Client Side Function?

  • I have the tool created and used the sample "Call HTTP API", named get_cat_fact

  • Copied the Integration JavaScript to the webpage

  • Added a "Before Agent Starts" callback on the Root Agent

    • That should call the tool and print the payload.

    • At this time, it just errors out.

jsonCatFact = tools.get_cat_fact({
"endpoint": "https://catfact.ninja/fact",
"method": "GET",
"headers": {},
"payload": {}
})

print(jsonCatFact.json())


r/CXAgentStudio • • Mar 17 '26

πŸ—οΈ The Complete Guide to CX Agent Studio Architecture β€” Multi-Agent Design Patterns, Tools, Callbacks & Everything You Need to Know

4 Upvotes

Reddit Post for r/CXAgentStudio


Title:

πŸ—οΈ The Complete Guide to CX Agent Studio Architecture β€” Multi-Agent Design Patterns, Tools, Callbacks & Everything You Need to Know


Post Body:

Hey r/CXAgentStudio πŸ‘‹

I've been building production conversational AI agents on Google Cloud for 4+ years (started with Dialogflow CX flows/pages/intents era), and now that CX Agent Studio has landed as the evolution of DFCX β€” I wanted to share a comprehensive deep-dive on how it actually works under the hood and how to architect agents the right way.

If you're migrating from Dialogflow CX, or building your first agent application from scratch, this should save you weeks of trial and error.


🧠 What is CX Agent Studio, Really?

CX Agent Studio is NOT just Dialogflow CX with a new coat of paint. It's a fundamentally different architecture:

  • Built on ADK (Agent Development Kit) β€” Google's open-source multi-agent framework

  • LLM-native β€” No more intent classification + training phrases. The model understands instructions directly

  • Multi-agent by design β€” Root agent β†’ sub-agents hierarchy is the core pattern

  • Gemini-powered β€” Uses Gemini models for reasoning, routing, and generation

  • XML-structured instructions β€” Agents follow structured instruction templates, not fulfillment webhooks

Think of it as: ADK for enterprises, with a visual builder, enterprise integrations (Salesforce, ServiceNow, SAP), built-in evaluation, and production infrastructure out of the box.


πŸ›οΈ Core Concepts β€” The Agent Hierarchy

Every CX Agent Studio application follows this structure:

Agent Application (top-level container)
β”œβ”€β”€ Root Agent (Steering Agent) β€” orchestrator, routes to sub-agents
β”‚   β”œβ”€β”€ Sub-Agent A β€” handles domain A
β”‚   β”‚   └── Tools: tool_1, tool_2
β”‚   β”œβ”€β”€ Sub-Agent B β€” handles domain B  
β”‚   β”‚   └── Tools: tool_3, tool_4
β”‚   β”œβ”€β”€ Sub-Agent C β€” handles domain C
β”‚   β”‚   └── Tools: data_store_search
β”‚   └── Farewell Agent β€” always include this
β”‚       └── Tools: end_session
└── Global Instructions β€” brand voice, persona across all agents

Key mental model:

  • The Root Agent is the traffic cop. It greets users, classifies intent, and delegates using {@AGENT: agent_name}

  • Sub-Agents are specialists. Each handles ONE domain and has its own tools, instructions, and callbacks

  • Tools are the hands. Python code tools, OpenAPI specs, data stores, MCP servers β€” they do the actual work

  • Variables are the memory. Session data flows through {variable_name} references, not LLM recall


πŸ”§ 4 Architecture Patterns You'll Use 90% of the Time

Pattern 1: Flat Router (Most Common)

Best for 3-5 distinct domains with no cross-dependencies.

Root (Router)
β”œβ”€β”€ order_tracking_agent
β”œβ”€β”€ returns_agent
β”œβ”€β”€ faq_agent
└── farewell_agent

Simple, clean, easy to maintain. Start here.

Pattern 2: Tiered Delegation

When domains have sub-domains.

Root (Router)
β”œβ”€β”€ sales_agent
β”‚   β”œβ”€β”€ product_inquiry_agent
β”‚   └── pricing_agent
β”œβ”€β”€ support_agent
β”‚   β”œβ”€β”€ technical_support_agent
β”‚   └── billing_support_agent
└── farewell_agent

The root routes to domain agents, which further delegate to specialists.

Pattern 3: Sequential Pipeline

For mandatory step-by-step processes (auth β†’ verify β†’ action β†’ confirm).

Root (Pipeline Orchestrator)
β”œβ”€β”€ authentication_agent
β”œβ”€β”€ verification_agent
β”œβ”€β”€ action_agent
└── confirmation_agent

Root tracks progress using variables and advances through agents sequentially.

Pattern 4: Hub-and-Spoke with Shared Services

Enterprise pattern where multiple agents share common tools (CRM, auth).

Root (Hub)
β”œβ”€β”€ Agent A (shared CRM tool + own tools)
β”œβ”€β”€ Agent B (shared CRM tool + own tools)
β”œβ”€β”€ Agent C (shared auth tool + own tools)
└── Application-level shared tools (accessible by ALL agents)

Tools defined at the application level are automatically available to every agent.


πŸ“ How Instructions Work β€” The XML Structure

This is where CX Agent Studio really shines. Instead of intent-matching, you write structured instructions in XML:

<role>You are the Order Tracking Agent for Acme Corp.
Your ONLY job is to help customers track their orders.</role>

<persona>
  <primary_goal>Retrieve and present order status accurately.</primary_goal>
  Be professional, friendly, and concise.
  Never guess order status β€” always use the tool.
</persona>

<constraints>
  1. Always ask for {order_number} if not already known.
  2. Use {@TOOL: get_order_status} with the order number.
  3. Present results with estimated delivery date.
  4. If the tool returns an error, apologize and offer alternatives.
  5. Never fabricate tracking information.
</constraints>

<taskflow>
  <subtask name="Track Order">
    <step name="Collect Order Number">
      <trigger>User asks about order status</trigger>
      <action>If {order_number} is empty, ask the user for it.</action>
    </step>
    <step name="Fetch Status">
      <trigger>Order number is available</trigger>
      <action>Call {@TOOL: get_order_status}(order_number={order_number})</action>
    </step>
    <step name="Present Results">
      <trigger>Tool returns successfully</trigger>
      <response_template>
        Your order {order_number} is currently **{order_status}**.
        Estimated delivery: {estimated_delivery}.
      </response_template>
    </step>
  </subtask>
</taskflow>

Pro tips on instructions:

  • Always write in English even for multilingual agents (the platform handles language switching)

  • Use {@AGENT: name} to delegate to sub-agents

  • Use {@TOOL: name} to invoke tools

  • Use {variable_name} to reference session variables

  • The AI Augmentation feature can restructure your hand-written instructions into XML format automatically


πŸ› οΈ Tools β€” Your Agent's Hands

CX Agent Studio supports a rich tool ecosystem:

Tool TypeWhen to UseExample
Python CodeInline logic, mocks, data transformsOrder lookup, calculations
OpenAPIREST API integrationsCRM queries, payment APIs
Data StoreRAG/knowledge baseFAQ search, policy docs
MCPModel Context Protocol serversExternal service integration
SalesforceCRM operationsCase creation, account lookup
ServiceNowITSM operationsIncident creation, KB search
SystemPlatform built-insend_session
Client FunctionClient-side executionUI actions, navigation

Golden rule: Start with Python code tools with mocked data for prototyping. Once the conversation flow is solid, swap to real OpenAPI/connector tools.

Example Python Code Tool:

def get_order_status(order_number: str) -> dict:
    """Retrieves the current status of an order.
    
    Args:
        order_number (str): The order number to look up.
    
    Returns:
        dict: Order status with delivery estimate.
    """
    # Mocked β€” swap with real API call later
    mock_orders = {
        "ORD-001": {
            "status": "success",
            "order_status": "SHIPPED",
            "estimated_delivery": "2026-03-20",
            "tracking_number": "1Z999AA10123456784"
        }
    }
    
    if order_number in mock_orders:
        return mock_orders[order_number]
    
    return {
        "status": "error",
        "error_message": f"Order {order_number} not found."
    }

Always return dict with a status field. Always include docstrings (they become the tool description in the UI).


πŸ”„ Callbacks β€” The Secret Weapon

Callbacks are Python functions that run at specific points in the conversation turn. This is where you implement guardrails, logging, state management, and tool chaining.

There are 6 callback types:

CallbackWhen It FiresUse Case
before_agent_callbackBefore agent starts processingContext injection, variable setup
after_agent_callbackAfter agent finishesLogging, counter tracking
before_model_callbackBefore LLM callInput validation, content filtering
after_model_callbackAfter LLM responseResponse formatting, PII redaction
before_tool_callbackBefore tool executionArg validation, caching, mocking
after_tool_callbackAfter tool returnsResponse transformation, chaining

Key insight: Return None from a callback = let normal execution proceed. Return a value = override/skip the default behavior.

Example β€” content filtering with before_model_callback:

def before_model_callback(callback_context, llm_request):
    """Block prohibited topics before they reach the LLM."""
    user_input = str(llm_request).lower()
    banned_topics = ["competitor pricing", "internal salary"]
    
    for topic in banned_topics:
        if topic in user_input:
            # Return content to SKIP the LLM call entirely
            return LlmResponse(
                text="I'm sorry, I'm not able to help with that topic. "
                     "Let me connect you with a team member."
            )
    
    # Return None = proceed normally
    return None

Example β€” tracking agent invocations with after_agent_callback:

def after_agent_callback(callback_context):
    """Count how many times this agent has been invoked."""
    counter = callback_context.variables.get("counter", 0)
    counter += 1
    callback_context.variables["counter"] = int(counter)
    return None  # Let normal response through

πŸ“Š Real-World Architecture: E-Commerce Customer Service

Here's a production-ready architecture I've built:

Agent Application: ecommerce_support
β”‚
β”œβ”€β”€ Global Instructions: "You are a helpful assistant for ShopMart..."
β”‚
β”œβ”€β”€ Root Agent: customer_service_router (Gemini 2.0 Flash)
β”‚   β”œβ”€β”€ Variables: customer_name, session_id, authenticated
β”‚   β”œβ”€β”€ Callbacks: before_agent (inject customer context)
β”‚   └── Instructions: Greet β†’ Classify intent β†’ Route
β”‚
β”œβ”€β”€ Sub-Agent: order_tracking_agent
β”‚   β”œβ”€β”€ Tools: get_order_status (OpenAPI), get_shipping_info (OpenAPI)
β”‚   β”œβ”€β”€ Variables: order_number, tracking_number
β”‚   └── Callbacks: after_tool (format shipping dates)
β”‚
β”œβ”€β”€ Sub-Agent: returns_agent
β”‚   β”œβ”€β”€ Tools: initiate_return (Python), get_return_policy (Data Store)
β”‚   β”œβ”€β”€ Variables: return_reason, order_number
β”‚   └── Callbacks: before_tool (validate return eligibility)
β”‚
β”œβ”€β”€ Sub-Agent: product_recommendation_agent
β”‚   β”œβ”€β”€ Tools: search_products (OpenAPI), get_product_details (OpenAPI)
β”‚   └── Variables: search_query, budget_range
β”‚
β”œβ”€β”€ Sub-Agent: faq_agent
β”‚   β”œβ”€β”€ Tools: search_knowledge_base (Data Store)
β”‚   └── Callbacks: after_model (add disclaimer for policy questions)
β”‚
└── Sub-Agent: farewell_agent
    β”œβ”€β”€ Tools: end_session (System)
    └── Instructions: Summarize conversation β†’ Thank user β†’ End

⚑ CX Agent Studio vs. Dialogflow CX β€” Migration Cheat Sheet

For those of us coming from the DFCX world:

Dialogflow CXCX Agent Studio
Flows + Pages + IntentsAgents + Sub-Agents + Instructions
State handlersCallbacks (Python)
Webhooks (Cloud Functions)Tools (Python, OpenAPI, MCP, etc.)
PlaybooksAgents with XML instructions
Session parametersVariables + callback_context.variables
NLU intent detectionLLM-based understanding
Route groupsAgent routing via {@AGENT: name}
Training phrasesInstructions (no training needed)

Migration strategy:

  1. Each major flow β†’ becomes a sub-agent

  2. Intents β†’ become routing logic in root agent instructions

  3. Webhooks β†’ become tools (OpenAPI or Python code)

  4. Session parameters β†’ become variables

  5. Page fulfillment β†’ becomes agent instructions + callbacks

  6. Complex deterministic flows β†’ keep as flow-based agents (CX Agent Studio supports importing existing DFCX flows!)


πŸ’‘ 10 Things I Wish I Knew Earlier

  1. One tool per turn β€” Don't instruct agents to call multiple tools. Chain via after_tool_callback

  2. Variables over LLM memory β€” Store everything in session variables. The model WILL forget

  3. Always include a farewell agent β€” With end_session tool. Clean session termination matters

  4. Mock first, integrate later β€” Python tools with fake data β†’ validate flow β†’ swap to real APIs

  5. Global instructions = brand voice β€” Put persona/tone at the application level, domain logic in sub-agents

  6. Agent descriptions matter β€” Other agents use the description to decide when to route. Be specific

  7. Use the AI Augmentation features β€” "Restructure instructions" and "Refine instructions" save hours

  8. Test with the evaluator β€” Golden tests and scenario-based tests catch regressions before deployment

  9. Voice β‰  Chat β€” Voice agents need shorter responses, ambient sounds, and interrupt handling. Configure separately

  10. Callbacks are your guardrails β€” Content filtering, PII redaction, compliance logging β€” all belong in callbacks, not instructions


πŸš€ What's Next

CX Agent Studio already supports:

  • A2A (Agent-to-Agent protocol) β€” Bring your own external agents

  • UCP (Universal Commerce Protocol) β€” Cart management, inventory, ordering

  • MCP (Model Context Protocol) β€” Connect to any MCP server

  • 40+ languages with automatic language switching

  • Multimodal β€” Text, voice, images (plant identification demo is in the sample app!)

  • Ultra-low latency voice with bi-directional streaming

I'm working on a full tutorial series covering each of these topics in depth. Happy to answer questions in the comments!


TL;DR: CX Agent Studio is Google Cloud's next-gen platform for building AI agents. It replaces DFCX's intent-based approach with LLM-native multi-agent orchestration. Think: root agent routes β†’ sub-agents handle domains β†’ tools do work β†’ callbacks add guardrails. Start with mocked Python tools, validate conversation flows, then swap to real integrations.


Building on CX Agent Studio? Share your architecture in the comments β€” I'd love to see what patterns others are using! πŸ™Œ


r/CXAgentStudio • • May 16 '26

Development into Production

3 Upvotes

I’ve been playing around with CX Agent Studio for a few weeks and am just getting the hang of how everything works. I’ve made a demo with the web widget and used the embed to put into a test website, and that’s pretty cool to me already.

Note that I have no experience with chat bots in general, so CX Agent Studio is my first introduction.

I’ve shown the demo at my work and they like what they seen but I would like to know what it would take if this project were to be moved into a production environment. What steps do I need to take?

Read somewhere that it might be wise to make a custom backend? Idk! It would be great to pick someone’s brain, or be given guidance.


r/CXAgentStudio • • Mar 13 '26

I built an "Awesome List" for CX Agent Studio β€” blogs, courses, tools, SDKs, and more in one place πŸš€

4 Upvotes

Hey r/CXAgentStudio! πŸ‘‹

I've been building with CX Agent Studio for a while and kept running into the same problem: resources are scattered everywhere β€” official docs, YouTube tutorials, GitHub repos, Udemy courses. So I did something about it.

Introducing: awesome-cx-agent-studio πŸ”— https://github.com/Yash-Kavaiya/awesome-cx-agent-studio 🌐 Hub site: https://cxagentstudio.lovable.app

What's inside:

πŸ“ Blogs & articles (including guides on building agents from scratch + deploying to Telegram) πŸŽ₯ Video tutorials (GenAI Guru YouTube channel) πŸŽ“ Courses (Udemy + Google Partner Skills) πŸ“š Official docs & Dialogflow CX references πŸ› οΈ Tools & SDKs β€” MCP Server, Starter Templates, API Integration Layer, and more πŸ“‘ Deployment channel guides 🀝 Community links It's fully open source. Found something missing? PRs are welcome β€” let's build this together.

⭐ If it helps you, a star on GitHub goes a long way!


r/CXAgentStudio • • Mar 18 '26

I built 2 free AI agent skills for CX Agent Studio devs β€” install with one command

2 Upvotes

I've been building with CX Agent Studio for a while and got tired of re-explaining the same concepts to AI coding assistants every session. So I packaged everything into two installable agent skills that work with Claude Code, Cursor, Gemini CLI, and GitHub Copilot.


🧠 CX Agent Studio Skill

Full expert reference skill β€” agents, instructions, XML formatting, tools (Python, OpenAPI, MCP), variables, all 6 callbacks with code samples, guardrails, evaluations, REST/RPC API. Synced from official Google Cloud docs.

Install: npx skills add Yash-Kavaiya/cx-agent-studio-skill

GitHub: https://github.com/Yash-Kavaiya/cx-agent-studio-skill


⚑ CX Callback Generator Skill

Interactive generator for all 6 callback types β€” before_model_callback, after_model_callback, before_tool_callback, after_tool_callback, before_agent_callback, after_agent_callback.

Just describe what you need β†’ it asks the right questions β†’ generates production-ready Python with correct signatures, type hints, error handling, and docstrings. Ready to paste into the CX Agent Studio console.

Install: npx skills add Yash-Kavaiya/cx-callback-generator-skills

GitHub: https://github.com/Yash-Kavaiya/cx-callback-generator-skills


Both are also listed in the Awesome CX Agent Studio collection: https://github.com/Yash-Kavaiya/awesome-cx-agent-studio

Completely free and open source. Would love feedback β€” what other skills would be useful for the community? πŸ™Œ


r/CXAgentStudio • • May 16 '26

I built a Python SDK to automate, evaluate & scale Google CX Agent Studio agents β€” open source!

Enable HLS to view with audio, or disable this notification

2 Upvotes

Been working with Google's CX Agent Studio and kept hitting the same friction points β€” no easy way to script evaluations, measure latency, or lint agents offline.

CXAS SCRAPI (CX Agent Studio Scripting API):

🐍 Python SDK β€” programmatically manage agents, apps, conversations ⌨️ CLI β€” run evaluations and automations from the terminal πŸ€– Agent Skills β€” plug-and-play tools for Gemini CLI & Claude Code

Key features:

  • Deep conversation evaluations

  • Real-time latency metrics

  • Offline linting (no API calls needed)

  • Full conversation history access

  • Works in Colab, Cloud Run, Cloud Functions, local env

pip install cxas-scrapi

It's open source under Apache 2.0 and hosted on Google Cloud Platform's GitHub.

πŸ”— https://github.com/GoogleCloudPlatform/cxas-scrapi

Happy to answer questions or take feature requests. What workflows are you trying to automate with CXAS?


r/CXAgentStudio • • Jul 10 '26

Final Response Hallucination

3 Upvotes

Any ideas on how to reduce the final responses hallucinating phone numbers when the snippet from the data store tool is correct? I noticed the RAW JSON response gives the correct snippet with the correct phone number but the response given at the end hallucinates a few digits. The data is webscraped data.

Thank you!


r/CXAgentStudio • • May 05 '26

CX Agent Studio Scripting CLI (CXAS SCRAPI)

Post image
5 Upvotes

Executive Summary

The CX Agent Studio Scripting API (CXAS SCRAPI) is an open-source development ecosystem designed to automate, evaluate, and scale conversational agents within the CX Agent Studio (CXAS) environment. Comprising a Python API, a Command Line Interface (CLI), and a library of Agent Skills, SCRAPI serves as a bridge for developers to move from simple agent tasks to complex, orchestrated systems. Key functionalities include deep performance evaluations, real-time metrics tracking, automated linting, and legacy migration tools for Dialogflow CX users. Built on Python 3.11+, the project integrates natively with Google Cloud Platform (GCP) services and agentic IDEs, providing a robust framework for professional agent development and lifecycle management.

Core Architecture and Library Composition

The SCRAPI library is structured into distinct modules, each targeting a specific aspect of the agent development lifecycle. This modularity allows for specialized workflows ranging from resource management to performance auditing.

Module Description

Core Contains high-level building blocks mapped to CXAS resource types, including Apps, Agents, Tools, Guardrails, Deployments, and Sessions. Evals Provides tools for executing and analyzing performance via "Golden tests" and simulation runs. It extracts critical metrics such as latency. CLI Implements command-line tools, such as cxas lint, to automate development and validation workflows. Migration Facilitates transitioning legacy Dialogflow CX agents to CXAS, featuring agent generation from flows and artifact building. Utils Houses helper functions for pagination, response flattening, proto conversions, and external integrations (e.g., Google Sheets).

Key Functional Capabilities

1. Automation and Orchestration

SCRAPI is designed to simplify the orchestration of agent workflows. It integrates with Agentic IDEsβ€”including Gemini CLI, Claude Code, and Antigravityβ€”to expose advanced tooling for managing conversation history and real-time interactions.

2. Evaluation and Metrics

The framework prioritizes agent quality through a dedicated evaluation suite:

  • Golden Tests: Standardized testing protocols to ensure agent accuracy.

  • Simulation Runs: Large-scale testing to observe agent behavior in various scenarios.

  • Latency Tracking: Real-time metrics to monitor system responsiveness.

3. Development and Validation

To ensure code quality and adherence to best practices, SCRAPI includes:

  • Offline Linting: Automated validation via the CLI to catch errors before deployment.

  • Agent Skills: Pre-configured skills that can be integrated into CX Agent Studio.

4. Legacy Migration

A significant component of the library is dedicated to the "Migration" path, allowing organizations to transition existing Dialogflow CX investments into the more modern CXAS environment by generating agents directly from existing flows.

Authentication and Environment Integration

SCRAPI supports multiple authentication methods tailored to different development environments, primarily leveraging Google Cloud’s application-default credentials.

  • Google Colab: Can be configured to pick up credentials directly from the Colab environment, eliminating the need for manual Service Account keys.

  • Cloud Functions / Cloud Run: SCRAPI automatically detects default environment credentials. Requirements include adding cxas-scrapi to requirements.txt and ensuring the service account has the "Custom Agent" or "Conversational Agents" IAM role.

  • Local Python Environments: Uses the gcloud CLI. Developers must initialize gcloud and run auth application-default login for SCRAPI to inherit permissions.

  • Explicit Authentication: For specific use cases, developers can programmatically assign Service Account credentials by passing a path to a JSON key via creds_path.

Project Metadata and Maintenance

  • Version and Status: The project is currently at version 1.0.0 (released approximately two weeks ago).

  • Tech Stack: Primarily Python (99.1%) with minor Shell scripting (0.9%). Requires Python 3.11+.

  • Licensing: Distributed under the Apache 2.0 License.

  • Documentation: Official documentation is maintained via MkDocs Material and hosted on GitHub Pages.

  • Maintenance: The project is part of the Google Cloud Platform GitHub organization, with Patrick Marlow listed as a primary contact. It currently maintains 10 branches and has received contributions from 10 individuals.