Freedom251 › Static Analysis Tools
Kythe

What Kythe is
Kythe is an open-source, mostly language-agnostic ecosystem for building tools that work with code. It defines a graph format and extensible schema for sharing source-code information, including cross-references, and lists indexers for C++, Go, and Java. Compilation extractors cover javac, Maven, CMake, Go, and Bazel. Additional components include an indexer verifier, a sample cross-reference service, and commands for handling Kythe artifacts. Extraction workflows can use Bazel, CMake, Gradle, make, or compile_commands.json. The command-line tool can work with serving tables directly or communicate with a remote API service. Kythe supports API use and self-hosted deployment, with build instructions for macOS and Debian-based Linux systems. It is intended for code navigation across a codebase. The project states that it does not replace purpose-built intermediate representations and is not a compiler or optimizer. Its configurable extraction documentation describes that system as a work in progress. The repository identifies Apache-2.0 as the license and lists separate community and development Google Groups.
Who it suits
Kythe suits developers building self-hosted code indexing, cross-reference, and navigation tools across supported languages and build workflows. It is for code tooling rather than compiler or optimizer replacement.
What it does well
- Language-agnostic graph and extensible schema
- Indexers for C++, Go, and Java
- Extractors for several build systems
- Supports remote API and self-hosting
- Apache-2.0 open-source license
What to know first
- Configurable extraction is a work in progress
- Not a compiler or optimizer
- Does not replace purpose-built intermediate representations
- Build instructions focus on macOS and Debian Linux
Verdict
Kythe provides shared code graphs, indexing components, extraction tools, and APIs for navigating codebases. It remains a work in progress in configurable extraction and is explicitly not intended to replace specialized compiler representations or optimization tools.
Facts from Kythe's own pages
- API
- The command-line tool can use serving tables directly or communicate with a remote API service. · kythe.io, 4 Oct 2026
- Build extractors
- Kythe lists compilation extractors for javac, Maven, CMake, Go, and Bazel. · github.com, 4 Oct 2026
- Build platforms
- The getting-started documentation includes instructions for building on macOS and Debian-based Linux systems. · kythe.io, 4 Oct 2026
- Community support
- The repository lists separate Google Groups for the general Kythe community and Kythe development. · github.com, 4 Oct 2026
- Extraction status
- The configurable extraction documentation describes the system as a work in progress rather than a finished product. · kythe.io, 4 Oct 2026
- Graph and schema
- Kythe provides a language-agnostic graph format and an extensible schema for sharing source code information, including cross-references. · kythe.io, 4 Oct 2026
- Indexers
- The project lists indexer implementations for C++, Go, and Java. · github.com, 4 Oct 2026
- Integrations
- Examples cover extraction with Bazel, CMake, Gradle, make, and compile_commands.json workflows. · kythe.io, 4 Oct 2026
- License
- The repository identifies its license as Apache-2.0. · github.com, 4 Oct 2026
- Limitations
- Kythe's overview says it is not intended to replace existing purpose-built intermediate representations or to serve as a compiler or optimizer. · kythe.io, 4 Oct 2026
- Other tools
- The project includes a generic verifier for indexers, a sample cross-reference service, and utility commands for Kythe artifacts. · kythe.io, 4 Oct 2026
- Purpose
- Kythe is a pluggable, mostly language-agnostic ecosystem for building tools that work with code. · kythe.io, 4 Oct 2026
Where Kythe stands on Freedom251
- Static Analysis Tools#30 of 38
- Code Search Tools#39 of 42