← All integrations
GOOGLE ADK · NATIVE BASEPLUGIN · PYPI v0.1.0

Signed decision evidence for Google ADK.

Attach a native Google Agent Development Kit BasePlugin to an ADK App and capture run, model and tool evidence while ADK continues to execute the agent. LoopGrid preserves and verifies the evidence; it does not execute the business action.

loopgrid-google-adk v0.1.0 · validated with google-adk 2.10.0 · LoopGrid Core 0.8.1-design-partner.

NATIVE EVIDENCE FLOW
01Agent invocation + decision
02Model evidence
03Application policy
04Tool request + framework result
05Explicit action execution + observed outcome
06Evidence complete + verify

ADK reports framework lifecycle facts. The application owns the external-action claim. after_tool_callback is recorded as a tool result; authoritative execution is recorded only when the application can prove it happened.

01 · INSTALL

Install the native Google ADK integration.

pip install loopgrid-google-adk

Version 0.1.0 is published on PyPI through GitHub OIDC Trusted Publishing and installs a compatible Google ADK runtime plus the LoopGrid Python SDK.

02 · CONNECT

Attach the plugin at the ADK App boundary.

from google.adk.agents import Agent
from google.adk.apps import App
from google.adk.runners import InMemoryRunner
from loopgrid_google_adk import LoopGridADKPlugin

plugin = LoopGridADKPlugin(
    authority={"scope": "refunds", "max_amount": 50},
    policy={
        "policy_id": "refund-policy-v3",
        "decision": "auto_allowed",
    },
    proposed_action={"type": "refund", "amount": 25},
    context={"prompt_version": "support-v7"},
)

root_agent = Agent(
    name="support_agent",
    model="gemini-2.5-flash",
    tools=[...],
)

app = App(
    name="support_app",
    root_agent=root_agent,
    plugins=[plugin],
)
runner = InMemoryRunner(app=app)
Base URLLOOPGRID_BASE_URL, for example http://127.0.0.1:8000
WorkspaceLOOPGRID_WORKSPACE_ID, for example default
API keyLOOPGRID_API_KEY for authenticated deployments

For per-invocation evidence, call plugin.bind_run(...) and use the returned value as ADK's invocation_id. This keeps application-owned authority, policy and correlation data scoped to the current run.

03 · NATIVE LIFECYCLE

Use ADK plugin callbacks instead of a generic wrapper.

01Before run

before_run_callback creates the LoopGrid decision envelope from explicit run evidence.

02After model

after_model_callback records model completion/provenance. Application policy is recorded only when explicitly supplied.

03Before tool

before_tool_callback records tool_requested before the framework produces a tool result.

04After tool

after_tool_callback records tool_result — not an automatic execution claim.

05Authoritative execution

The application calls record_action_executed(...) only when it has authoritative evidence that the consequential tool body actually ran.

06Observed outcome

The application calls observe_outcome(...) after it observes the authoritative downstream/business result.

04 · ACTION + OUTCOME BOUNDARY

Do not turn an ADK tool result into stronger evidence than it proves.

ADK before_tool_callback
  → LoopGrid tool_requested

ADK after_tool_callback
  → LoopGrid tool_result
  → framework result observed

application confirms external execution
  → plugin.record_action_executed(...)
  → LoopGrid tool_executed

application observes authoritative business result
  → plugin.observe_outcome(...)
  → LoopGrid outcome_observed
  → evidence_complete
  → verify valid:true

ADK allows callbacks to short-circuit a tool call and return a result without invoking the underlying tool body. That is why LoopGrid keeps framework-observed result evidence separate from the application's authoritative execution claim.

05 · PRIVACY + FAILURE MODE

Commit to content without storing it by default.

capture_content = false by default. Raw user content, model responses, tool arguments, tool results and exception messages are not stored by this integration unless the application deliberately opts in.

SHA-256 commitments preserve evidence linkage while reducing unnecessary raw-content retention. The integration is also fail-closed by default with fail_open = false, so an evidence-required path does not silently continue when evidence recording fails.

06 · RELEASE VALIDATION

Validated through the actual ADK runtime and a real LoopGrid Core E2E.

Automated tests20 / 20 passing, including a real ADK App + InMemoryRunner + deterministic BaseLlm + native function tool loop
LoopGrid lifecycleevidence_complete
Applicable coverage100%
Verificationvalid: true with Ed25519 + SHA-256 workspace hash chain
Public packageloopgrid-google-adk==0.1.0 clean-installed from PyPI
Sandbox boundaryreal_money_moved=false; LoopGrid did not execute the refund

The runtime test used the real Google ADK plugin/runner lifecycle with a deterministic custom model, so no Gemini API key, paid Google Cloud billing account or credit card was required. Verification establishes captured integrity/provenance; it does not prove that the underlying decision was correct or legally compliant.

GOOGLE ADK + LOOPGRID

Keep ADK native. Make the evidence portable.

Install the PyPI package, attach the native plugin at the App boundary, and preserve consequential decision evidence without replacing the Google ADK runtime.