1broseidon/cymbal

Language-agnostic code navigation CLI powered by tree-sitter

What it solves

Cymbal solves the problem of navigating large, unfamiliar codebases by replacing slow, manual search patterns (like chaining grep, find, and file reads) with a fast, indexed approach. It provides a structured way to understand symbol relationships, dependencies, and the impact of changes, which is particularly useful for both human developers and AI agents who often struggle with the token-heavy process of exploring code.

How it works

Cymbal uses tree-sitter to parse source files into Abstract Syntax Trees (ASTs), extracting symbols, imports, and references. This data is stored in a local SQLite index with FTS5 for fast symbol searching. The tool incrementally reparses only changed files before each query, ensuring the index stays fresh without requiring a background daemon. It also supports federated searches across multiple Git worktrees.

Who it’s for

  • Developers who want a fast CLI for codebase exploration and impact analysis.
  • AI Agents that need a structured code navigation layer to reduce token usage and avoid long chains of search calls.
  • Tool Builders who want to embed indexed code navigation into editors, bots, or automation via a Go library.

Highlights

  • Adaptive Exploration: The investigate command provides a combined view of source, callers, and impact in one call.
  • Relationship Mapping: Supports trace (downward dependencies) and impact (upward callers) with optional visual graph generation (Mermaid, DOT, JSON).
  • Change Analysis: The changed command maps Git diffs to specific symbols and their blast radius.
  • Language Agnostic: Supports a wide array of languages including Go, Python, Rust, TypeScript, Java, and C++.
  • Agent Integration: Includes dedicated hooks for OpenCode and Claude Code to streamline agentic code navigation.

Related

  • Project
  • Project
  • Project
  • Project
  • Project