Clangd remote index server is building an index directly from public Chromium source code. The indexer code is executed on a GCP VM using this docker container.
The remote index service can be summarized as an implementation of
clang::clangd::SymbolIndex
interface. The data we transfer from and to the client is the data needed to
form a request to the index instance (and doesn't differ from the analogous
request sent to the local index).
clangd/index/remote/Index.proto
is a specification of data that is transferred over the wire. Even though this
data is transferred to and from the server, none if it is actually saved. The
server disposes the request data from the RAM right after the response is
sent and the only data it saves is:
- Request timestamp
- How much time it took the server to process request
- Status of the request processing (success/failure)
- Number of the results returned for each successful request
These logs help maintainers monitor and identify problems with the service and
improve it over time. We run the
server
with --log-public
option within a Docker
container.
All deployment
scripts
are also public.
Finally, the code that runs the service as well as its client side is publicly available. The client side implementation lives in upstream LLVM under clang-tools-extra/clangd/index/remote/, this is exactly the code being used to produce Clangd releases and weekly snapshots. The server code lives in clangd/chrome-remote-index repository and also has the deployment scripts. The service is deployed on the public instance of Google Cloud Platform.
You can raise any issues about this service in clangd/chrome-remote-index.