Runtime Services
Use this sub-skill when a task is about ADK execution services rather than agent design: Runner, InMemoryRunner, App, session persistence, memory, artifacts, plugins, telemetry, code executors, execution environments, event storage, lifecycle cleanup, or service migration cautions.
Route Here
- Create or debug a
Runner/InMemoryRunner, includingrun,run_async,run_live,run_debug,close, andauto_create_sessionbehavior. - Choose between
InMemorySessionService,SqliteSessionService,DatabaseSessionService, or cloud-backed session/memory/artifact services. - Explain why events, state, memory, artifacts, or live audio blobs were or were not persisted.
- Add an app-level
BasePluginthat observes model/tool/user/event callbacks while preserving runner-owned event persistence. - Configure OpenTelemetry/logging,
TelemetryConfig, orgoogle_adklogger behavior. - Attach a code executor or execution environment and assess local/container/cloud safety trade-offs.
- Diagnose optional dependency failures such as missing SQLAlchemy for DB sessions or missing extension/cloud packages.
Route Elsewhere
- Agent, tool, callback, schema, model, or sub-agent construction belongs in agent-construction.
Workflowgraph/node/edge/resume design belongs in workflow-orchestration.- CLI servers, app discovery, YAML config, and deployment commands belong in cli-configuration-deployment.
- Evaluation metrics, eval sets, and
adk test/adk evalassertion design belongs in evaluation-debugging.
Working Path
- Identify which service owns the symptom: runner lifecycle, session event persistence, memory ingestion/search, artifact storage, plugin callback order, telemetry export, or code execution.
- Confirm installation assumptions:
google-adk2.3.0, import rootgoogle.adk, Python 3.10+, and optional extras absent unless installed explicitly. - Use in-memory services for focused local tests; switch to persistent services only after checking dependencies, URLs/paths, concurrency, migrations, and credential requirements.
- Keep event persistence runner-owned: stream events through
Runner.run_async/run_liveand let the configured session service append non-partial events. - Close long-lived services with
await runner.close()orasync with Runner(...)when plugins, toolsets, or database engines need cleanup.
References And Scripts
- API Reference: constructor signatures, core methods, imports, service contracts, optional extras, and lifecycle notes.
- Service Patterns: safe recipes for runner setup, persistence choices, plugins, telemetry, memory/artifacts, and code execution.
- Troubleshooting: symptom-driven fixes for DB extras, event persistence, plugin callback order, blocking tools, code executors, credentials, and migrations.
- Runtime Services Diagnostic: safe local script that prints base runtime imports/signatures and reports optional DB-extra availability without touching databases or credentials.
Safety Defaults
- Prefer
InMemoryRunneror explicitRunner(..., session_service=InMemorySessionService())for examples and unit tests. - Treat
InMemorySessionService,InMemoryMemoryService, andInMemoryArtifactServiceas development/test services, not multi-process production stores. - Do not run destructive migrations or open user databases as a first diagnostic; inspect optional imports and backup plans before migration.
- Treat
UnsafeLocalCodeExecutorandLocalEnvironmentas high-trust local-only surfaces because model-generated code or shell commands can affect the host. - Do not assume base install includes DB, extension, MCP, GCP, or cloud service dependencies.


