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 plus safe repo text chunking, where content chunks stay within file boundaries and skip binary, large, and excluded files, then gives agents (and humans) precise, token-efficient access to symbols, docs, configs, content chunks, 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 + safe text chunks → PostgreSQL hub → search / retrieve / navigate
│ │
┌──────────┼──────────┐ │
│ │ │ ┌──┴──┐
symbols chunks files │ │
(BM25) (BM25) (hashes) FalkorDB Qdrant
(calls) (vectors)
- Index — Walk files, parse ASTs with tree-sitter, and chunk safe repo text
- Store — PostgreSQL hub tables for symbols/content, FalkorDB for call/import graphs, Qdrant for semantic vectors
- Search — Hybrid ranking: pg_search BM25 + optional semantic + optional graph sources → exact-tiered RRF results with raw
rrf_scoremetadata - 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
Graph and semantic features are configured at runtime. You do not need Cargo
feature flags to enable FalkorDB, Qdrant, or embeddings support. Gobby-managed
projects read FalkorDB settings from databases.falkordb.*; daemon-independent
setups can use GOBBY_FALKORDB_HOST, GOBBY_FALKORDB_PORT, and
GOBBY_FALKORDB_PASSWORD.
Runtime indexing/search requires a migrated Gobby PostgreSQL hub. gcode
asks the local daemon broker for the hub DSN first. If the daemon is
unavailable, it falls back to explicit fallback sources:
GCODE_DATABASE_URL, GOBBY_POSTGRES_DSN, ~/.gobby/gcode.yaml
database_url, then bootstrap database_url. Bootstrap fallback requires
hub_backend: postgres; bootstrap database_url_ref is rejected.
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 reads (requires FalkorDB)
# Graph lifecycle (requires Gobby daemon)
# Project management
# Cross-project queries
# Global flags
|
AI CLI Skill Installation
For non-Gobby-managed projects, gcode init installs the bundled gcode skill
for every supported project-local AI CLI target:
| CLI | Project-local files |
|---|---|
| Claude Code | .claude-plugin/plugin.json, skills/gcode/SKILL.md |
| Codex | .codex/skills/gcode/SKILL.md |
| Droid | .factory/skills/gcode/SKILL.md |
| Grok | .grok/skills/gcode/SKILL.md |
| Qwen | .qwen/skills/gcode/SKILL.md |
| Gemini CLI (deprecated) | .gemini/skills/gcode/SKILL.md |
| Antigravity CLI | .agents/skills/gcode/SKILL.md |
Gemini CLI remains installed for compatibility with older setups, but it is deprecated. Gobby-managed projects skip these project-local writes because Gobby owns CLI wiring.
Daemon-Independent Runtime
gcode is standalone in the important CLI sense: gcode index, gcode search,
gcode status, and symbol retrieval do not require the Gobby daemon process.
They do require the migrated PostgreSQL hub schema because that hub is the
source of truth for code-index rows.
With Gobby
codebase → tree-sitter → PostgreSQL hub + pg_search BM25
FalkorDB → call graphs, blast radius, imports
Qdrant + embeddings → semantic vector search
Gobby daemon → auto-indexing, graph/vector sync,
config, secrets, sessions, agents
Gobby adds graph queries, graph lifecycle orchestration, semantic search, and infrastructure that makes gcode better at its core job — not just more features bolted on.
Search quality improves. With FalkorDB, gcode search blends BM25 text matching with call-graph relevance. With Qdrant plus a configured embeddings API, conceptual queries like "database connection pooling" can find semantically similar code even when the exact words don't match.
Config and secrets are managed. FalkorDB connection settings, Qdrant API keys, and auth credentials are stored in the shared database and encrypted with Fernet. No env vars to juggle.
PostgreSQL DSNs can stay out of plaintext files. Isolated gcode runtimes
ask the daemon broker first. Operators who need daemonless access can opt into
GCODE_DATABASE_URL, GOBBY_POSTGRES_DSN, ~/.gobby/gcode.yaml, or inline
bootstrap database_url. Bootstrap database_url_ref is rejected.
Indexing happens automatically. The Gobby daemon watches for file changes and re-indexes in the background. Without the daemon, run gcode index manually.
| Capability | gcode CLI | With Gobby daemon/services |
|---|---|---|
| AST indexing + BM25 search | Yes, via PostgreSQL hub | Yes |
| Graph-boosted search ranking | When FalkorDB is configured | Yes |
| Semantic vector search | When Qdrant + embeddings are configured | Yes |
| Call graph / blast radius | When FalkorDB is configured | Yes |
| Import graph | When FalkorDB is configured | Yes |
| Graph clear / rebuild lifecycle | Requires daemon | Yes |
| Auto-indexing on file change | Manual gcode index |
Yes (daemon file watcher) |
| Centralized config + secrets | Reads PostgreSQL config_store + secrets |
Yes |
| Shared index (daemon + CLI) | PostgreSQL hub | PostgreSQL hub |
| 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 |
|---|---|
| FalkorDB down | Graph commands return []. Search loses graph boost. |
| Qdrant down | Search loses semantic boost. BM25 + graph still work. |
| Embeddings API unavailable | Semantic embeddings disabled. BM25 + graph still work. |
| PostgreSQL hub unavailable | Runtime index/search commands fail with a bootstrap or connection error. |
| No index yet | Commands error with Run gcode init to initialize. |
Read-side graph commands depend on FalkorDB. gcode graph clear and gcode graph rebuild
are separate lifecycle operations routed through the Gobby daemon for the
current resolved project.
Language Support
gcode parses ASTs using tree-sitter with support for 18 languages. Files that
pass the same safety checks but do not match a tree-sitter language are indexed
as content-only text for search-content.
| 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 (structural symbols + content chunks) |
Content-only indexing covers repo text files such as source comments, skill
files, docs/Markdown, configs, scripts, CSS, SQL, Dockerfile/Makefile, and
other extensionless text files. Binary, excluded, empty, and >10MB files are
skipped. Secret-like skips are filename/path checks from src/index/security.rs:
extensions such as .env, .pem, .key, .p12, .pfx, .jks, .keystore,
and .secret; prefixes such as credentials, .env, id_rsa, id_ed25519,
and token; and substrings such as api_key, apikey, _secret., and
_token.. No content secret scanner or external detector is currently used.
Build
gcode uses runtime-configured services rather than Cargo feature flags.
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.