Skip to content

RFC: graph-layers as the docs-graph renderer + LLM search surface #595

Description

@charlieforward9

Motivation

Closing #534 surfaced a better use of AI-assistance effort here: use the repo's own graph-layers module to turn the deck.gl-community docs into a graph that both LLMs and humans can navigate. Each node = a module / export / example; each edge = an import, doc cross-reference, or "see also". Rendering this as a force-directed graph reveals structural gaps (low-connection nodes = likely underdocumented or orphaned areas) and gives agents a high-signal index over the site.

This is the same fan-in pattern as the editable-layers RFC: every AI channel — text tool-calls, vision pointing via thor.gl, speech-to-intent — can query or highlight the same doc graph once the graph itself is the stable contract.

This RFC covers two deliverables landing on the website:

  1. A graph view of the doc / module graph.
  2. An LLM search surface that queries the graph rather than blob-grepping the docs.

Why now

graph-layers has had substantial investment recently — see backlog below — and building a canonical consumer (our own docs) forces the public surface to be usable and exercises the in-flight improvements end-to-end.

Renderer choice — graph-layers vs Cosmograph

Before committing to graph-layers as the docs-graph renderer, we should evaluate @rokotyan's cosmograph-org/cosmos side-by-side. Cosmos is a WebGL force-directed graph library tuned for very large graphs (100k+ nodes) with a GPU layout that is already production-tested.

Decision matrix we'd want answered:

Dimension graph-layers Cosmograph
Install — drops onto an existing deck.gl site Native — one more @deck.gl-community/* package Adjacent lib; needs a second canvas or iframe bridge
Maintenance — who owns bugs / releases This repo External (rokotyan-led)
Scale — demonstrated node counts TBD, needs benchmark 100k+ nodes shipping
Layout quality on long-tail doc graph D3 / GPU force, recent lifecycle work Cosmos GPU force + quadtree
Interop — picking, transitions, other deck layers on top Composable with any deck layer Standalone canvas
Headless / SSR for build-time snapshots deck.gl can render offscreen Browser-only AFAIK

Pinging @rokotyan for input on whether Cosmograph is the better substrate here, and/or whether there are lessons from Cosmos that graph-layers should absorb. @ibgreen — this evaluation is also a forcing function for the upstream-path question below.

Scope

In scope

  • Ingestion: extract nodes / edges from the monorepo (tsdoc exports, example imports, markdown cross-refs). Likely reuses / motivates Add GraphML loader for graph-layers #419 (GraphML loader).
  • Rendering: force-directed view on the website. Primary candidate: graph-layers (GraphLayer + D3 / GPU force layout). Evaluate Cosmograph as alternative / fallback for very large graphs.
  • LLM query: tool-call that takes a natural-language query and returns ranked graph paths (e.g. "editable-layers examples that use MapboxOverlay").
  • "Low-connection" highlight mode so maintainers can spot orphaned docs / modules at a glance.

Out of scope

  • General-purpose graph-editor UI.
  • Non-docs graphs — graph-layers already covers those.

UX goal — installing, maintaining, and visualizing docs should be a breeze

Success criterion is not "we shipped a graph view." It is that the graph makes the docs cheaper to own:

  • Install — one command regenerates the doc graph on every build; no separate service, no manual ingestion step.
  • Maintain — adding a new module or example automatically shows up as a node; dead links and orphans surface in the viewer, not in a nightly report nobody reads.
  • Visualize — every node has a shareable URL; graph state (filters, highlighted paths) is query-string serializable so LLM answers can link directly to "this view of the graph."

If any of those costs a contributor more than a few lines of code or config, the design is wrong.

Upstream path — how community graph layers land in core deck.gl

Open question @ibgreen should weigh in on: what is the promotion path from deck.gl-community/graph-layers into upstream deck.gl use cases? Today the community package is a soft parking lot; a canonical consumer like the docs graph raises the pressure on that question:

  • Does a mature graph-layers eventually become a first-party @deck.gl/* module?
  • Or does it stay community-owned and upstream ships examples that depend on it?
  • What is the bar — API stability, test coverage, maintainer coverage — and how do the backlog PRs below map to that bar?

Clarifying this now affects how much we invest in graph-layers API polish vs. just shipping a docs-graph that works.

Open questions

  1. Graph source of truth — generated at build time, committed, or both? Committed = diffable; generated = always-fresh.
  2. Edge types — import, doc-reference, "see also", test-reference. One weighted graph or multiple overlays?
  3. Layout stability — incremental updates need the streaming / lifecycle work in the PRs below to land first.
  4. Renderer — graph-layers primary, or Cosmograph primary with graph-layers as deck-native overlay? Needs @rokotyan / @ibgreen input against the matrix above.

Backlog to address alongside

Tracker: #78 (graph-layers module)

Graph-layers open PRs that should be evaluated for merge / alignment before this RFC lands:

Related

cc @rokotyan @ibgreen

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions