Protocol Buffers

Protocol Buffers


This page describes the internals of the project. This is only relevant if you'd like to contribute to Apollo. For standard usage of Apollo, this page is not relevant.


Apollo uses Google's Protocol Buffers (opens in a new tab) to communicate with the client.

Note that although the .proto files / messages generally match up with Apollo modules, there's circumstances where we expose different interfaces in Apollo - primarily to make the API simpler to use.

For example, Apollo's modsetting and serverrule module end up flowing over the wire as the same packet. However, we split them into separate modules (with separate purposes) in the public API.


As all changes to the .proto definitions require a corresponding implementation in the client to be usable, we aren't currently allowing direct contributions to .proto files.


The usage of protocol buffers, and the generated code itself, is considered an implementation detail of Apollo. As such, we can only provide limited support to those wishing to use protocol buffers directly.