Skip to content
This repository was archived by the owner on Jul 9, 2026. It is now read-only.

Commit 0ab812f

Browse files
committed
Merge branch 'task-14665-update-rust-repo-documentation'
2 parents 75b5964 + 8e06661 commit 0ab812f

5 files changed

Lines changed: 41 additions & 26 deletions

File tree

AGENTS.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This file is for AI coding agents (Claude, Copilot, Cursor, etc.) working on the
44

55
## What This Is
66

7-
`gobby-code` is a Rust CLI (`gcode`) that provides AST-aware code search, symbol navigation, and dependency graph analysis. It reads/writes the Gobby PostgreSQL hub for symbols/search, Neo4j for call graphs, and Qdrant for semantic vectors. It works without the Gobby daemon process, but requires a migrated PostgreSQL hub bootstrap.
7+
`gobby-code` is a Rust CLI (`gcode`) that provides AST-aware code search, symbol navigation, and dependency graph analysis. It reads/writes the Gobby PostgreSQL hub for symbols/search, FalkorDB for call graphs, and Qdrant for semantic vectors. It works without the Gobby daemon process, but requires a migrated PostgreSQL hub bootstrap.
88

99
## Build & Test
1010

@@ -25,7 +25,7 @@ main.rs (clap CLI)
2525
→ db::connect_readwrite/readonly # PostgreSQL hub connection
2626
→ index/* # Indexing pipeline (walker → parser → chunker → indexer)
2727
→ search/* # Search pipeline (fts + semantic + graph_boost → rrf)
28-
neo4j::* # Graph queries via HTTP
28+
falkor::* # Graph queries via FalkorDB
2929
```
3030

3131
## Critical Constraints
@@ -49,7 +49,7 @@ These must match the Python daemon's `Symbol.make_id()` exactly. See `src/models
4949

5050
### 3. Config resolution order
5151

52-
Always: env vars (`GOBBY_NEO4J_URL`, etc.) → `config_store` table → hardcoded defaults. Don't short-circuit.
52+
Always: env vars (`GOBBY_FALKORDB_HOST`, `GOBBY_FALKORDB_PORT`, `GOBBY_FALKORDB_PASSWORD`, etc.) → `config_store` table → hardcoded defaults. Don't short-circuit.
5353

5454
### 4. Do NOT run `gcode invalidate`
5555

@@ -74,7 +74,7 @@ Always: env vars (`GOBBY_NEO4J_URL`, etc.) → `config_store` table → hardcode
7474
Search uses Reciprocal Rank Fusion in `src/search/rrf.rs` to merge results from:
7575
- `src/search/fts.rs` — pg_search BM25 symbol and content search
7676
- `src/search/semantic.rs` — Qdrant vector similarity
77-
- `src/search/graph_boost.rs`Neo4j graph relevance
77+
- `src/search/graph_boost.rs`FalkorDB graph relevance
7878

7979
### Modify the indexing pipeline
8080

@@ -90,4 +90,4 @@ The pipeline in `src/index/indexer.rs` orchestrates:
9090
- Don't change UUID5 generation without verifying Python parity
9191
- Don't add `println!` for user output — use `eprintln!` for status, and `output::print_json` / `output::print_text` for command results
9292
- Don't skip the `--no-default-features` test pass — CI runs both configurations
93-
- Don't assume Neo4j or Qdrant are available — all code must handle `None` configs gracefully
93+
- Don't assume FalkorDB or Qdrant are available — all code must handle `None` configs gracefully

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,21 @@ All notable changes to gobby-cli are documented in this file.
77
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
88
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
99

10+
## [Unreleased]
11+
12+
### Changed
13+
14+
#### gcode
15+
16+
- **FalkorDB graph backend transition** - `gcode` now reads graph service
17+
settings from the Gobby 0.4.x FalkorDB config path (`databases.falkordb.*`)
18+
and uses FalkorDB for graph reads such as `callers`, `usages`, `imports`,
19+
`blast-radius`, and graph-boosted search. `gcode 0.7.0+` requires
20+
`gobby 0.4.0+`; running new `gcode` against an older daemon that still writes
21+
Neo4j config-store keys silently degrades to "graph unavailable". Upgrade the
22+
daemon and CLI together. This compatibility boundary is covered by the
23+
Neo4j-to-FalkorDB Phase 8.3 validation matrix.
24+
1025
## [0.8.3] — gcode
1126

1227
### Changed

CLAUDE.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
66

77
A Cargo workspace containing three Gobby CLI tools:
88

9-
- **gcode** (`crates/gcode/`) — AST-aware code search, symbol navigation, and dependency graph analysis. Reads/writes the Gobby PostgreSQL hub; reads Neo4j and Qdrant when configured. External sync (embeddings, graph) is handled by the Gobby daemon.
9+
- **gcode** (`crates/gcode/`) — AST-aware code search, symbol navigation, and dependency graph analysis. Reads/writes the Gobby PostgreSQL hub; reads FalkorDB and Qdrant when configured. External sync (embeddings, graph) is handled by the Gobby daemon.
1010
- **gsqz** (`crates/gsqz/`) — YAML-configurable output compressor for LLM token optimization. Wraps shell commands and applies pattern-based compression pipelines.
1111
- **gloc** (`crates/gloc/`) — Local LLM launcher. Auto-detects backends (LM Studio, Ollama), manages model lifecycle, and execs into AI CLI tools (Claude Code, Codex) with the right env vars.
1212

@@ -26,7 +26,7 @@ cargo fmt --all --check # Check formatting
2626

2727
```
2828
crates/
29-
gcode/ — Heavy binary (tree-sitter, PostgreSQL, Neo4j, Qdrant, opt-level=3)
29+
gcode/ — Heavy binary (tree-sitter, PostgreSQL, FalkorDB, Qdrant, opt-level=3)
3030
gsqz/ — Tiny binary (regex pipelines, shell wrapper, opt-level="z")
3131
gloc/ — Tiny binary (local LLM launcher, backend detection, opt-level="z")
3232
```
@@ -41,11 +41,11 @@ Release profiles are in the root `Cargo.toml` with per-package overrides. Each b
4141

4242
### Core Modules
4343

44-
- **`config`** — Resolves runtime context: `~/.gobby/bootstrap.yaml` PostgreSQL DSN → PostgreSQL `config_store`Neo4j/Qdrant configs. Detects project root by walking up from cwd looking for `.gobby/project.json`. Resolves `$secret:NAME` patterns via `secrets`.
44+
- **`config`** — Resolves runtime context: `~/.gobby/bootstrap.yaml` PostgreSQL DSN → PostgreSQL `config_store`FalkorDB/Qdrant configs. Detects project root by walking up from cwd looking for `.gobby/project.json`. Resolves `$secret:NAME` patterns via `secrets`.
4545
- **`db`** — PostgreSQL bootstrap/keyring resolution plus read/write connection helpers. Runtime schema is validated, never created or migrated by gcode.
4646
- **`models`** — All data types: `Symbol`, `IndexedFile`, `ContentChunk`, `SearchResult`, `GraphResult`, etc.
4747
- **`secrets`** — Fernet decryption of Gobby secrets using `~/.gobby/machine_id` + `~/.gobby/.secret_salt` for key derivation.
48-
- **`neo4j`**HTTP client for Neo4j Cypher read queries (callers, usages, imports, blast radius). Graph writes are handled by the Gobby daemon.
48+
- **`falkor`**FalkorDB read client for graph queries (callers, usages, imports, blast radius). Graph writes are handled by the Gobby daemon.
4949
- **`output`** — Output formatting (text vs JSON).
5050

5151
### `commands/` — CLI Command Handlers
@@ -58,11 +58,11 @@ Each subcommand maps to a function: `index::run`, `search::search`, `symbols::ou
5858

5959
### `search/` — Search Pipeline
6060

61-
`fts` (pg_search BM25 symbol + content search) + `semantic` (Qdrant vector search via OpenAI-compatible embedding API) + `graph_boost` (Neo4j relevance boost) → `rrf` (Reciprocal Rank Fusion to merge ranked results).
61+
`fts` (pg_search BM25 symbol + content search) + `semantic` (Qdrant vector search via OpenAI-compatible embedding API) + `graph_boost` (FalkorDB relevance boost) → `rrf` (Reciprocal Rank Fusion to merge ranked results).
6262

6363
### Graceful Degradation
6464

65-
Neo4j/Qdrant/embedding API can each be unavailable independently. Graph commands return `[]` when Neo4j is down; semantic search returns `[]` when Qdrant or the embedding API is unavailable; BM25 search works when the PostgreSQL hub is configured and indexed.
65+
FalkorDB/Qdrant/embedding API can each be unavailable independently. Graph commands return `[]` when FalkorDB is down; semantic search returns `[]` when Qdrant or the embedding API is unavailable; BM25 search works when the PostgreSQL hub is configured and indexed.
6666

6767
## gsqz Architecture
6868

@@ -94,7 +94,7 @@ CLI parses args → loads layered config → auto-detects backend (probes LM Stu
9494
## Key Constraints
9595

9696
- **UUID5 parity with Python** (gcode): Symbol IDs are deterministic UUID5 using namespace `c0de1de0-0000-4000-8000-000000000000` and key format `{project_id}:{file_path}:{name}:{kind}:{byte_start}`. Must match the Python daemon's `Symbol.make_id()` exactly.
97-
- **Config resolution order** (gcode): env vars (`GOBBY_NEO4J_URL`, etc.) → `config_store` table → hardcoded defaults.
97+
- **Config resolution order** (gcode): env vars (`GOBBY_FALKORDB_HOST`, `GOBBY_FALKORDB_PORT`, `GOBBY_FALKORDB_PASSWORD`, etc.) → `config_store` table → hardcoded defaults.
9898
- **Tree-sitter grammars** (gcode): Tier 1 (Python/JS/TS/Go/Rust/Java/C/C++/C#/Ruby/PHP/Swift/Kotlin), Tier 2 (Dart/Elixir), Tier 3 (JSON/YAML/Markdown). Adding a language requires a new `tree-sitter-*` dep in `crates/gcode/Cargo.toml` and a grammar entry in `index/languages`.
9999
- **Non-destructive to Gobby hub schema** (gcode): Validate existing Gobby-owned PostgreSQL tables and BM25 indexes. Never alter `project.json`, `config_store`, or Gobby-managed schema.
100100
- **Exit code 0** (gsqz): Always exit 0 regardless of subprocess exit code. The LLM reads pass/fail from content.

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ This workspace contains four Gobby CLI tools plus a shared library:
2727

2828
AST-aware code search powered by tree-sitter. Indexes 18 languages into the
2929
Gobby PostgreSQL hub with pg_search BM25 for symbol lookup, content search, file
30-
tree navigation, and hybrid ranking. When Neo4j, Qdrant, and an embeddings
30+
tree navigation, and hybrid ranking. When FalkorDB, Qdrant, and an embeddings
3131
endpoint are configured - typically through Gobby - `gcode` adds graph-aware
3232
search, semantic search, dependency analysis (`callers`, `usages`, `imports`,
3333
`blast-radius`), and daemon-backed graph lifecycle commands (`gcode graph clear`,
@@ -85,7 +85,7 @@ cargo install gobby-hooks
8585
```
8686

8787
`gcode` graph and semantic features are configured at runtime. There are no
88-
Cargo feature flags for Neo4j, Qdrant, or embeddings support.
88+
Cargo feature flags for FalkorDB, Qdrant, or embeddings support.
8989

9090
`gcode` 0.8.0+ uses the migrated Gobby PostgreSQL hub. It reads
9191
`~/.gobby/bootstrap.yaml`, requires `hub_backend: postgres`, and resolves the

crates/gcode/README.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@ codebase → tree-sitter AST → PostgreSQL hub → search / retrieve / navigate
4646
│ │ │ │
4747
symbols chunks files ┌──┴──┐
4848
(BM25) (BM25) (hashes) │ │
49-
Neo4j Qdrant
49+
FalkorDB Qdrant
5050
(calls) (vectors)
5151
```
5252

5353
1. **Index** — Walk files, parse ASTs with tree-sitter, extract symbols and content chunks
54-
2. **Store** — PostgreSQL hub tables for symbols/content, Neo4j for call/import graphs, Qdrant for semantic vectors
54+
2. **Store** — PostgreSQL hub tables for symbols/content, FalkorDB for call/import graphs, Qdrant for semantic vectors
5555
3. **Search** — Hybrid ranking: pg_search BM25 + optional semantic + optional graph sources → Reciprocal Rank Fusion
5656
4. **Retrieve** — Byte-offset reads for exact symbol source, no file-level bloat
5757

@@ -90,7 +90,7 @@ cargo install gobby-code
9090
```
9191

9292
Graph and semantic features are configured at runtime. You do not need Cargo
93-
feature flags to enable Neo4j, Qdrant, or embeddings support.
93+
feature flags to enable FalkorDB, Qdrant, or embeddings support.
9494

9595
Runtime indexing/search requires a migrated Gobby PostgreSQL hub. gcode reads
9696
`~/.gobby/bootstrap.yaml`, requires `hub_backend: postgres`, and resolves the
@@ -130,7 +130,7 @@ gcode symbol <id> # Source code by symbol ID
130130
gcode symbols <id1> <id2> ... # Batch retrieve
131131
gcode tree # File tree with symbol counts
132132

133-
# Dependency graph reads (requires Neo4j)
133+
# Dependency graph reads (requires FalkorDB)
134134
gcode callers "handleAuth" # Who calls this?
135135
gcode usages "handleAuth" # Incoming call sites
136136
gcode imports src/auth.ts # Import graph for a file
@@ -186,17 +186,17 @@ source of truth for code-index rows.
186186

187187
```
188188
codebase → tree-sitter → PostgreSQL hub + pg_search BM25
189-
Neo4j → call graphs, blast radius, imports
189+
FalkorDB → call graphs, blast radius, imports
190190
Qdrant + embeddings → semantic vector search
191191
Gobby daemon → auto-indexing, graph/vector sync,
192192
config, secrets, sessions, agents
193193
```
194194

195195
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.
196196

197-
**Search quality improves.** With Neo4j, `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.
197+
**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.
198198

199-
**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.
199+
**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.
200200

201201
**PostgreSQL DSNs stay out of plaintext files.** Isolated gcode runtimes keep
202202
`database_url_ref: keyring:gobby:postgres_database_url`; gcode resolves it
@@ -208,10 +208,10 @@ keyring.
208208
| Capability | gcode CLI | With Gobby daemon/services |
209209
|-----------|-----------|-----------|
210210
| AST indexing + BM25 search | Yes, via PostgreSQL hub | Yes |
211-
| Graph-boosted search ranking | When Neo4j is configured | Yes |
211+
| Graph-boosted search ranking | When FalkorDB is configured | Yes |
212212
| Semantic vector search | When Qdrant + embeddings are configured | Yes |
213-
| Call graph / blast radius | When Neo4j is configured | Yes |
214-
| Import graph | When Neo4j is configured | Yes |
213+
| Call graph / blast radius | When FalkorDB is configured | Yes |
214+
| Import graph | When FalkorDB is configured | Yes |
215215
| Graph clear / rebuild lifecycle | Requires daemon | Yes |
216216
| Auto-indexing on file change | Manual `gcode index` | Yes (daemon file watcher) |
217217
| Centralized config + secrets | Reads PostgreSQL `config_store` + secrets | Yes |
@@ -226,13 +226,13 @@ Get started with Gobby at [github.com/GobbyAI/gobby](https://github.com/GobbyAI/
226226

227227
| Service unavailable | Behavior |
228228
|---------------------|----------|
229-
| Neo4j down | Graph commands return `[]`. Search loses graph boost. |
229+
| FalkorDB down | Graph commands return `[]`. Search loses graph boost. |
230230
| Qdrant down | Search loses semantic boost. BM25 + graph still work. |
231231
| Embeddings API unavailable | Semantic embeddings disabled. BM25 + graph still work. |
232232
| PostgreSQL hub unavailable | Runtime index/search commands fail with a bootstrap or connection error. |
233233
| No index yet | Commands error with `Run gcode init to initialize`. |
234234

235-
Read-side graph commands depend on Neo4j. `gcode graph clear` and `gcode graph rebuild`
235+
Read-side graph commands depend on FalkorDB. `gcode graph clear` and `gcode graph rebuild`
236236
are separate lifecycle operations routed through the Gobby daemon for the
237237
current resolved project.
238238

0 commit comments

Comments
 (0)