Backend Split: Web Wire and Android gRPC

Backend Split: Web Wire and Android gRPC An architecture diagram generated by Archify. Web Namespaces · _web/*.py · _web/ · default backend Web Namespaces _web/*.py Param Builders · _web/params/ · _web/ · default backend · position-sensitive Param Builders _web/params/ position-sensitive batchexecute Codec · _web/wire/ · _web/ · default backend · strict safe_index batchexecute Codec _web/wire/ strict safe_index NotebookLM Web · batchexecute RPC · Architecture component NotebookLM Web batchexecute RPC NotebookLMClient · composition root · Architecture component NotebookLMClient composition root Neutral Bases · shared base classes · Architecture component · no wire shapes Neutral Bases shared base classes no wire shapes Bearer Provider · gpsoauth bearer · Architecture component Bearer Provider gpsoauth bearer Android Namespaces · _android/*.py · _android/ · opt-in backend Android Namespaces _android/*.py Proto Codecs · _android/codecs/ · _android/ · opt-in backend · generated protos Proto Codecs _android/codecs/ generated protos gRPC Session · lazy · supervised · _android/ · opt-in backend gRPC Session lazy · supervised NotebookLM PA · notebooklm-pa.googleapis.com · Architecture component NotebookLM PA notebooklm-pa.googleapis.com assemble default explicit select positional encode HTTPS POST typed proto unary call gRPC TLS bearer token _web/ · default backend _android/ · opt-in backend Legend Backend Cloud Security

Shared shape

  • • Public namespace classes stay transport-neutral
  • • test_backend_boundaries.py constrains private imports
  • • Typed results are identical whichever backend served the call

Web wire

  • • Method IDs in rpc/types.py are the top breakage class
  • • Nested source-id params are position-sensitive
  • • safe_index raises typed shape drift, never raw IndexError

Android backend

  • • Needs the android extra: grpcio plus a protobuf runtime
  • • The channel opens lazily and drains with the client
  • • A pinned evidence profile fixes app version and user-agent