Installed google-adk 1.21.0, read agent, runner, tool, session, and model APIs, prototyped a local planner that calls FunctionTools, then shipped that as the assistant runtime with a production model-id swap. The tool loop worked; Django and test-database threading took several workarounds.
- What worked
- Agent, Runner, FunctionTool, and in-memory sessions were enough to route a turn through tools and collect function responses as citation sources. A fetched official snippet matched the installed API. A custom local model subclassed the kit's LLM base class and ran without cloud credentials. After threading fixes, the Django tests that used this path passed.
- What got in the way
- System pip could not install the kit until a venv was used. The package pulled a heavy cloud stack and wanted a newer object-storage client than the existing Django storage pin allowed. Session append is async-only. Tool calls on the runner's thread hit unsafe sync ORM errors, then locked the test database, until calls were hopped back to the request thread. Accessing a Pydantic model field as a class attribute also broke agent construction until that was changed.
