graphweave
Most of what a retrieval step returns never makes it into the answer. You still pay for all of it: in tokens, in time, and in more places for the model to latch onto the wrong thing. Logs show what was fetched. They don't show what was used.
graphweave shows both. It lays out everything a run retrieved as a map, then checks each item against the final answer and marks it used or unused by word overlap. No second model grades the evidence, no score is guessed, and nothing leaves your machine.
Point it at any public GitHub repository and ask a question to see it work.
What you need
- Python 3.12 or newer
- A public GitHub repository, written as
owner/name
Get started
pip install graphweave
graphweave-github-trace psf/requests "What changed in how sessions handle retries?"
graphweave graphweave_out/trace_state.json
The first command installs it. The second reads the repository's recent pull requests, issues and commits and saves what matches your question. The third opens the result in your browser at http://127.0.0.1:4630.
In your browser
The map shows the pull requests, issues, commits and people behind the answer and how they connect. Below it, Retrieved vs used marks which items the answer actually draws on, then the steps taken and the answer itself. Open a folder instead of a file to switch between saved questions.
What the numbers mean
| Number | Meaning |
|---|---|
| Combined score | (α·vector + β·graph) × recency; α and β set by question type |
| Vector similarity | Cosine similarity between question and item embeddings |
| Graph relevance | Best path score from the question's seed nodes: product of edge weights along the path |
| Recency | max(floor, 0.5^(age / half-life)), with a half-life per entity type; 1.000 = undated or brand new |
| Age | Days since the item's event timestamp |
How links are scored
Each link carries a weight for how much it proves, and a path through the graph scores the product of its links. Links read from GitHub's own records are trusted most; links read out of prose are trusted least.
| Strength | Links | Comes from |
|---|---|---|
| Strongest | AUTHORED, RESOLVES |
who wrote it; "Fixes #N" |
| Strong | REVIEWED, TOUCHES, PART_OF |
submitted reviews; changed files; commit to repo |
| Medium | REPORTED, MENTIONS |
who opened the issue; named in the text |
| Weakest | CO_OCCURS |
names near each other in text (reserved) |
How duplicates are merged
The same thing gets written many ways: payment-service, payments, PaymentService. Each new name is compared with known ones:
- Near-identical: merged, no model call.
- Close but unsure: one yes/no question to a model. Any timeout, error or unclear reply counts as different.
- Clearly different: a new entity.
A merge never renames an entity; only its last-seen time moves forward.
Repository layout
src/
ingestion/ GitHub API client: PRs, issues, commits, reviews
analysis/ chunking, entity extraction, duplicate merging
knowledge/ typed, weighted, timestamped edges
graphdb/ LadybugDB store: graph + vector index
retrieval/ question type, graph walk, vector search, fusion, recency
api/ FastAPI app: trace, answer streaming, history
tracing/ trace format, capture(), local viewer server
adapters/ LangGraph callback
worker/ background ingest and rebuild (hosted mode)
frontend/ React + Vite: Studio and the bundled local viewer
tests/ package and viewer tests
Good questions to ask
"Who has been working on the test suite?""What changed in how errors are reported?""Which pull requests fixed issues about timeouts?"
If something goes wrong
| You see | Do this |
|---|---|
| A message about GitHub's rate limit | Set a GitHub token in GITHUB_TOKEN, or wait an hour |
| The browser doesn't open | Copy the address printed in the terminal into your browser |
| "Address already in use" | Add --port 4700 |
graphweave is not recognized |
Reopen the terminal after installing |
Metadata
Release files for graphweave 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| graphweave-0.1.0.tar.gz | 395.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| graphweave-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 834.0 kB
Release files / graphweave-0.1.0.tar.gz
| Download URL | graphweave-0.1.0.tar.gz |
|---|---|
| Size | 395.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
20a2df3078b13bac56d00665b5beaf84ca206f27f666209ce78608d041f4a6b1
|
|
BLAKE2b-256 checksum How to use checksums |
3bb05c8309617509f2da255e81856e9d4479636ad9c75187245b98cf03d00829
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency logRelease files / graphweave-0.1.0-py3-none-any.whl
| Download URL | graphweave-0.1.0-py3-none-any.whl |
|---|---|
| Size | 438.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1430c71f6770f03f03b35503a8f1f2fa384761033bcd6dd40131c8100415f568
|
|
BLAKE2b-256 checksum How to use checksums |
0b4590cfd39e6ed50b22a4c0a0550bde21364ae7b747e53b20c38224e63fb6a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency log