Help us shape the future of Go! Take the 2026 Go Developer Survey

xray

command
v2.4.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 29, 2026 License: Apache-2.0 Imports: 57 Imported by: 0

Documentation

Overview

Command recall is a local code-intelligence substrate: it parses repositories, documentation and Kubernetes manifests into a semantic graph, snapshots that graph to disk, and serves retrieval over MCP so a coding agent can ask structural questions — who calls this, what breaks if I change it, why was this decided — instead of grepping.

Everything is local. Embeddings go to an OpenAI-compatible endpoint you run (llama.cpp, Ollama, vLLM, LM Studio); nothing else leaves the machine.

Which subcommands a build carries depends on CGO, because only the Tree-sitter parser needs a C toolchain:

static build (CGO_ENABLED=0)
  xray graph serve-snapshots   serve read tools from pre-built snapshots
  xray graph servicemap        build a service-dependency graph from a catalog
  xray graph update|status|build   drive a running server (editor/agent hooks)
  xray graph search <query>    search the snapshots from the shell, no server
  xray graph impact <qn>...    blast radius of changing symbols, read from a snapshot
  xray graph services <snap>   derive a service catalog from a code map
  xray graph install           drop skills + hook into a repo's .claude/
  xray graph dump <snapshot>   inspect a snapshot: summary, header, vectors, JSON
  xray graph keygen            generate an age identity for encrypted snapshots

cgo build (CGO_ENABLED=1 — the default for `make build`)
  everything above, plus:
  xray graph serve             parse + embed live, serve MCP
  xray graph snapshot          build offline .graph.gob.gz snapshots
  xray graph dump <repo-dir>   parse a tree and print/JSON its graph

The parse modes are stubbed in the static build (parse_nocgo.go, dump_parse_nocgo.go) and exit with a message pointing at the CGO build, rather than silently missing.

`xray graph dump <target>` — look at a graph without a server.

The target is either a REPOSITORY DIRECTORY, which is parsed on the spot (the cheapest way to see what the extractors pull out of a tree — no embedder, no index; needs the CGO build because it parses), or a SNAPSHOT FILE (<label>.graph.gob.gz), which is read directly (internal/engine only, so it works in the static build too). Options pick the view:

(default)   header line + graph summary: counts by kind, sample nodes/edges
-header     the snapshot header alone — fingerprint, counts, routing summary —
            without decoding the body, so it stays cheap on a big map
-vectors    the embedding cache: one line per vector (-grep/-limit/-n)
-routing    the header's routing vector (the embedded summary)
-json       the selected view as JSON instead of text

Why the vector view exists: the cache in a snapshot is keyed by the embedded TEXT (index.nodeText: signature + path + a bounded body slice), not by node identity, because every rebuild constructs fresh nodes. So "what exactly was embedded for this node?" and "did the rebuild hit the cache or re-embed?" can only be answered by looking at the cache keys themselves — and before this that meant a throwaway Go program each time. -header prints the fingerprint, which is what to check BEFORE loading a snapshot under a server built at different dims: a Dims mismatch is a hard rejection at load, a model-name mismatch only warns, and neither is obvious from the file name.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL