The Problem
AI coding agents read entire files to find a single function. A 2000-line module gets dumped into the context window when all the agent needed was a 15-line method. Multiply that across a session and you're burning thousands of tokens on code that isn't relevant.
The Fix
gcode indexes your codebase using tree-sitter AST parsing and gives agents (and humans) precise, token-efficient access to symbols, search results, and dependency graphs.
$ gcode search "handleAuth"
[
{"name": "handleAuth", "kind": "function", "file_path": "src/auth/middleware.ts",
"line_start": 42, "signature": "async function handleAuth(req, res, next)", ...}
]
One search call instead of reading 50 files. 90%+ token savings.
How It Works
codebase → tree-sitter AST → SQLite index → search / retrieve / navigate
│ │
┌──────────┼──────────┐ │
│ │ │ │
symbols chunks files ┌──┴──┐
(FTS5) (FTS5) (hashes) │ │
Neo4j Qdrant
(calls) (vectors)
- Index — Walk files, parse ASTs with tree-sitter, extract symbols and content chunks
- Store — SQLite for symbols + FTS5, Neo4j for call/import graphs, Qdrant for semantic vectors
- Search — Hybrid ranking: FTS5 + semantic similarity + graph relevance → Reciprocal Rank Fusion
- Retrieve — Byte-offset reads for exact symbol source, no file-level bloat
Installation
Pre-built binaries
Download from GitHub Releases:
# macOS (Apple Silicon)
|
# macOS (Intel)
|
# Linux (x86_64)
|
# Linux (ARM64)
|
# Windows (x86_64) — PowerShell
Build from source
# With embeddings (requires cmake for llama-cpp-2)
# Without embeddings (no cmake needed)
With Gobby
gcode is installed automatically as part of the Gobby platform. If you're using Gobby, you already have it.
Usage
# Initialize and index a project (one step)
# Search
# Symbol retrieval
# Dependency graph (requires Neo4j)
# Project management
# Cross-project queries
# Global flags
|
Standalone vs Gobby
gcode works out of the box with zero dependencies — just gcode init and search. But it's designed to unlock its full potential with Gobby.
Standalone
codebase → tree-sitter → SQLite
(symbols + FTS5)
Full indexing and text search. No external services needed.
With Gobby
codebase → tree-sitter → SQLite → FTS5 search
Neo4j → call graphs, blast radius, imports
Qdrant + GGUF → semantic vector search
Gobby daemon → auto-indexing, LLM summaries,
config, secrets, sessions, agents
Gobby adds graph queries, semantic search, and infrastructure that makes gcode better at its core job — not just more features bolted on.
Search quality improves. With Neo4j, gcode search blends FTS5 text matching with call-graph relevance. Symbols that are heavily referenced rank higher. With Qdrant, conceptual queries like "database connection pooling" find semantically similar code even when the exact words don't match.
Summaries appear. gcode summary <symbol_id> returns AI-generated explanations of what a symbol does. The Gobby daemon generates these; standalone always returns null.
Config and secrets are managed. Neo4j URLs, Qdrant API keys, and auth credentials are stored in the shared database and encrypted with Fernet. No env vars to juggle.
Indexing happens automatically. The Gobby daemon watches for file changes and re-indexes in the background. Standalone requires manual gcode index.
| Capability | Standalone | With Gobby |
|---|---|---|
| AST indexing + FTS5 search | Yes | Yes |
| Graph-boosted search ranking | — | Yes (Neo4j) |
| Semantic vector search | — | Yes (Qdrant + GGUF) |
| Call graph / blast radius | — | Yes (Neo4j) |
| Import graph | — | Yes (Neo4j) |
| LLM symbol summaries | — | Yes (daemon-generated) |
| Auto-indexing on file change | — | Yes (daemon file watcher) |
| Centralized config + secrets | — | Yes (encrypted, no env vars) |
| Shared index (daemon + CLI) | — | Yes (gobby-hub.db) |
| AI agent orchestration | — | Yes |
| Persistent sessions + memory | — | Yes |
| Task tracking + pipelines | — | Yes |
Get started with Gobby at github.com/GobbyAI/gobby.
Graceful Degradation
| Service unavailable | Behavior |
|---|---|
| Neo4j down | Graph commands return []. Search loses graph boost. |
| Qdrant down | Search loses semantic boost. FTS5 + graph still work. |
| GGUF model missing | Semantic embeddings disabled. FTS5 + graph still work. |
| No index yet | Commands error with Run gcode init to initialize. |
Language Support
gcode parses ASTs using tree-sitter with support for 18 languages:
| Tier | Languages |
|---|---|
| Tier 1 | Python, JavaScript, TypeScript, Go, Rust, Java, C, C++, C#, Ruby, PHP, Swift, Kotlin |
| Tier 2 | Dart, Elixir |
| Tier 3 | JSON, YAML, Markdown (content indexing only) |
Build Features
The embeddings Cargo feature (default: on) enables local GGUF embedding generation via llama-cpp-2. Requires cmake to build. macOS builds use Metal GPU acceleration.
Platform Support
| Platform | Architecture | Status |
|---|---|---|
| macOS | Apple Silicon (aarch64) | Supported |
| macOS | Intel (x86_64) | Supported |
| Linux | x86_64 | Supported |
| Linux | ARM64 (aarch64) | Supported |
| Windows | x86_64 | Supported |
| Windows | ARM64 (aarch64) | Supported |
Contributing
See CONTRIBUTING.md for details.
License
Apache 2.0 — Use it, fork it, build on it.