Integrations / Google ADK

Keep your ADK agents. See what they do.

Sulcus reads ADK’s own OpenTelemetry spans. ADK still owns the agents, sub-agents, tools, sessions and model calls. There are two ways in, with different controls.

Hosted or deployed elsewhere

Sulcus adds

ADK activity, shown as runs.

  • Hosted: one run for each Python entrypoint Sulcus starts. That entrypoint may execute several ADK invocations, all observed inside the same run.
  • Deployed elsewhere: each exported invocation trace becomes its own observed run, after the invocation completes.
  • Agents and sub-agents, as a tree.
  • Tool calls and model calls, with timing and failures.
  • Input and output token counts that ADK reports.
  • For hosted runs: live activity, stop control and an optional token limit.
  • A bounded event history for each run.

ADK keeps

How the agents behave.

  • Agent definitions, transfers between agents and tools.
  • Sessions, state and model selection.
  • For a deployed service: where it runs and when it stops.
  • Anything your application stores, and its side effects.

Two ways in

Hosted run, or a service you already deploy.

AspectHosted by SulcusDeployed elsewhere
Who runs the agentSulcus, from your public Git repositoryYou, where it already runs
In the appNew project, with Google ADK as the frameworkProjects → Connect Google ADK
What a run isOne hosted Python entrypoint, which may contain several ADK invocationsOne exported ADK invocation trace
When a run appearsLive, as it executesAfter the invocation has finished and Sulcus has received its trace; this can be delayed
ControlStart, stop and run again; optional token limitNone. Observation only
What Sulcus receivesRepository, branch, file to run; API keys per run; what the app printsNo Google credentials. Your service exports supported telemetry to Sulcus, using an endpoint and token you add to it

Deployed elsewhere

Send a running service’s telemetry.

In Sulcus, open Projects and choose Connect Google ADK. Sulcus shows an endpoint and a token; the token is shown once. Addopentelemetry-exporter-otlp-proto-http to the service’s requirements, set the three variables and deploy.

adk api_server, adk web andget_fast_api_app read these variables. On Cloud Run, also disable CPU throttling, or finished invocations can wait for the next request before their spans are sent.

Use the traces-specific variables. Sulcus accepts ADK traces over OTLP/HTTP, not logs or metrics.

Service environment
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=<endpoint shown in Sulcus>
OTEL_EXPORTER_OTLP_TRACES_HEADERS=Authorization=Bearer%20<token shown in Sulcus>
ADK_CAPTURE_MESSAGE_CONTENT_IN_SPANS=false

What Sulcus keeps

Names, timing, outcomes and token counts.

Your service exports its ADK spans to Sulcus. Sulcus stores only the fields it supports: names, identifiers, timing, error status and type, and token counts. Prompts, responses, tool arguments and results, span events, status messages and user IDs on those spans are discarded on arrival, before anything is stored.

Setting ADK_CAPTURE_MESSAGE_CONTENT_IN_SPANS=false turns off ADK’s message-content span attributes at the source. It doesn’t stop the export: identifiers, status and error information, and exception details may still be transmitted, depending on your ADK version and configuration. Telemetry settings made per invocation can also change what ADK exports.

Hosted ADK runs also keep what the workload prints to stdout and stderr, so printed content can appear in the run history. Redaction is best effort.

OBSERVATION BOUNDARY
Runs the agents
Google ADK
Event source
ADK’s OpenTelemetry spans
Checked with
google-adk 1.39.1 and 2.11.0, Python
ADK span content discarded
Prompts, responses, tool arguments and results

Boundaries

What this integration doesn’t do.

Sulcus can’t stop, pause or limit a service deployed elsewhere. A run appears once its invocation finishes, or after about ten minutes without new spans if the invocation’s final span never arrives. Telemetry may be lost during exporter or network outages; your agent is unaffected.

For hosted ADK runs, the token limit is counted from ADK’s reported usage and fails the run when the script ends. It doesn’t interrupt a model call in flight. Other ADK languages aren’t covered, and Agent Runtime deployments haven’t been verified end to end.

Get started

See your first run in Sulcus.

Create an account, then connect an agent: a public Git repository Sulcus runs for you, Claude Code or Codex on your computer, or a Google ADK service or Microsoft Copilot Studio environment you already run.

Early access. Hosted repository runs may be limited to selected workspaces; the app shows what yours can run.