SuperAPI AI Directory

cicada

Code intelligence for Elixir: module search, function tracking and PR attribution via tree-sitter AST parsing.

Open website

About this tool

Purpose

CICADA (Code Intelligence: Contextual Analysis, Discovery, and Attribution) aims to solve the problem of "blind search" by AI code assistants: using Grep directly stuffs the entire file contents into the context, while the user may only need a function signature, thereby crowding out the space the model uses for reasoning. CICADA uses AST-level indexing to provide AI assistants with structured, pre-indexed code knowledge, making the context more compact and reducing token consumption.

Important note: The official repository explicitly includes a warning—the way AI agents currently work is different from when the project was conceived, and in the latest benchmarks of frontier models, using code intelligence tools offers almost no advantage. CICADA is no longer maintained, and the author recommends against using this tool or any other "code intelligence" tool.

Main capabilities

  • AST-level indexing: records definitions of modules, functions, and classes, including signatures, specs, and documentation.
  • Multi-language support: Elixir, Python, TypeScript, JavaScript, Rust, Go, Java, Kotlin, Scala, C/C++, Ruby, C#, Visual Basic, Dart, PHP, Erlang (beta), and more than 17 languages.
  • Complete call-site tracking: handles aliases, imports, and dynamic references across languages.
  • Semantic search: supports keyword extraction or embeddings (Ollama integration) to find code by concept.
  • Git and PR attribution: shows why code exists, not just what it contains.
  • Dependency analysis: bidirectional tracking (who calls it, and what it calls).
  • Automatic language detection: works seamlessly in multilingual codebases.

Usage

Install CICADA through the editor's built-in MCP management. After installation, the available commands include:

  • cicada [claude|cursor|vs|gemini|codex|opencode|zed]: one-click interactive setup for a project.
  • cicada-mcp: MCP server (started automatically by the editor).
  • cicada serve: starts the REST API server, allowing access to all MCP tools over HTTP.
  • cicada status: displays index status, PR index, link status, agent files, and MCP configuration.
  • cicada stats [repo]: displays usage statistics (tool calls, tokens, execution time).
  • cicada watch: watches for file changes and automatically reindexes.
  • cicada index: reindexes code with custom options (-f/--force、--keywords、--embeddings、--watch)。
  • cicada index-pr: indexes pull requests for PR attribution.
  • cicada run [tool]: executes any of the 7 MCP tools directly from the CLI.
  • cicada agents install: installs Claude Code agents into the ./.claude/ directory.
  • cicada link [parent_dir]: links the current repository to an existing index.
  • cicada clean: completely removes the CICADA integration and all settings.

MCP tools

CICADA provides 7 dedicated MCP tools for Elixir, Python, and Erlang codebases:

  • query: the intelligent code discovery entry point, automatically distinguishing keywords from patterns, supporting filters such as scope, recent, filter_type, and match_source, returning snippets and giving next-step suggestions, and can be used with path_pattern to filter by location.
  • search_module: in-depth module analysis, viewing functions, signatures, specs, and documentation; Python shows classes along with method counts and signatures, Elixir shows functions with arity; supports what_calls_it=true(impact analysis) and what_it_calls=true(dependency analysis), supports wildcards and OR patterns, and can filter by visibility.
  • search_function: function usage tracking, finding the definition and all call sites, by default what_calls_it=true to view callers,what_it_calls=true to view dependencies, can use include_usage_examples=true to include code examples, by usage_type Filter source/tests/all.
  • git_history: Unified Git operations, supporting single-line blame+PR, line-range grouped blame, tracking evolution by function name, file history, supporting recent time filtering and author filtering, with automatic PR index integration.
  • expand_result: Drill down from query results, automatically identify modules or functions, and display complete details and usage examples.
  • query_jq: Execute advanced jq queries on the index, supporting schema discovery, compact/pretty output, and sampling of large results.

All tools return structured Markdown/JSON fragments (signatures, call sites, PR metadata) rather than complete files. Starting from v0.5.1, compact output is used by default to minimize tokens; you can use verbose=true to get the complete documentation and spec.

Privacy and Security

  • 100% local: parsing and indexing are done on the user's machine, with no external access.
  • No telemetry: no usage or any telemetry data is collected.
  • Read-only tools: the MCP endpoint only reads the index and cannot modify the repository.
  • Optional GitHub access: PR features depend on gh and the user's existing OAuth token.
  • Data layout: under~/.cicada/projects/<repo_hash>/ contains index.json、config.yaml、hashes.json、pr_index.json. Only editor configuration will be added to the repository (.mcp.json、.cursor/mcp.json、.vscode/settings.json、.gemini/settings.json、.codex/mcp.json or .opencode.json).

Applicable Scenarios

Suitable for Elixir or Python and other codebases that want to provide AI assistants with rich Git context (PR attribution, blame, function evolution tracking) in a local-first way and optimize token usage. Official comparison notes: choose Serena when LSP-based code editing capabilities are needed and higher resource usage is acceptable; choose Codicil for Elixir projects when LLM semantic summaries are preferred.

Limitations and Notes

  • The project is no longer maintained, and the author explicitly recommends not using it.
  • Erlang, Java/Kotlin/Scala, and C#/Visual Basic support are marked as Beta or in development; production-ready languages are Elixir (tree-sitter), Python (SCIP), TypeScript (SCIP), and JavaScript (SCIP).
  • Python's first indexing may be slower than Elixir's (requires a SCIP generation step); large .venv are automatically excluded, and some dynamic Python patterns may not be captured.
  • Keyword search requires keyword extraction to be enabled during indexing, otherwise it reports "Keyword search not available".
  • PR features require configuring the GitHub CLI; the first indexing will fetch all PRs, which may be slow and subject to GitHub API rate limits.
  • Watch mode only monitors .ex、.exs(Elixir) and .py(Python) files, excluding deps、_build、node_modules、.git、assets、priv、.venv、venv。