Kythe is a pluggable, (mostly) language-agnostic ecosystem for building tools that work with code.
C++ Go Java Python Shell Protocol Buffer Other
Latest commit ae4db7e Jan 20, 2017 @creachadair creachadair Go extractor: Avoid double-rooting generated source paths.
The Bazel rules for Go prefix generated source files with a label that the
compiler expects to find. Ensure we don't remove that label and thus confuse
the indexer.

Also: Handle packages with no source inputs gracefully in the indexer.

A package with no source files is usually a sign of a bug, typically in the
extractor. The indexer now reports an error rather than crashing, when this

Reviewers: #core_team, shahms

Reviewed By: #core_team, shahms

Differential Revision:




  • Extensive documentation of the Kythe schema

  • Indexer implementations for C++ and Java

  • Compilation extractors for javac, Maven, cmake, Go, and Bazel

  • Generic verifier for indexers

  • Sample cross-reference service and accompanying web UI

  • Many useful utility commands to work with Kythe artifacts

Getting Started

Download the latest Kythe release from and then unpack it for a snapshot of Kythe’s toolset.

tar xzf kythe-v*.tar.gz
rm -rf /opt/kythe
mv kythe-v*/ /opt/kythe

See /opt/kythe/README for a complete description of the packaged tools and their usages.

Contributing and Building Kythe