Skip to main content

graphsight

PyPI Python 3.10+ License: MIT

See exactly why your AI agent retrieved what it did.

Your agent answered a question. Which documents did it actually pull? What scores did they get? How are they connected to each other? Most stacks make you dig through logs to answer that. Graphsight renders the run as an interactive graph in your browser — one command, zero dependencies, nothing leaves your machine.

pip install graphsight
graphsight path/to/trace_state.json

What you get

  • Every retrieved item as a typed node — PR, Service, Person, Ticket, Document, Repo, Library, Team, Tool — with its retrieval score.
  • Relational paths between resultsperson → authored → PR → resolves → issue — the chain of evidence, not just a ranked list.
  • An inspector on every node: underlying content, score, source link.
  • The execution timeline of the run: each agent step, each retriever call, per-span timings, and which retrieval arm (vector / graph) produced the results.

Requirements

Python ≥ 3.10
Runtime dependencies none (stdlib only)
Platforms Windows, macOS, Linux
Browser any modern browser

Usage

graphsight [trace] [--port PORT] [--no-browser]
Argument Default Description
trace A trace_state.json file, or a directory of them (e.g. .graphsight/) to browse run history. Optional — omit to open the import page and drag-and-drop or paste JSON instead.
--port 4630 Local port to serve on.
--no-browser off Start the server without opening a browser window.

The server binds to 127.0.0.1 only and runs until you press Ctrl+C.

Run history

Point graphsight at a directory and it becomes a run browser — every trace listed by query and time, one click to open:

graphsight .graphsight/

The graphsight-langgraph capture() helper appends every agent run there automatically, so your debugging history accumulates with zero ceremony. Traces render with the retrieved vs. used split: items that surfaced in the answer highlighted, items retrieved but ignored dimmed — the two classic retrieval failures, visible at a glance.

Sharing traces with your team

A trace is one self-contained JSON file — no account or backend needed to share it:

  • Send the file. A teammate with graphsight installed runs graphsight trace.json. Works in a DM, a ticket attachment, a CI artifact.
  • Link it. A deployed Graphsight frontend opens any publicly reachable trace via …/memory/import?src=<url-to-json> — host the JSON on a gist or artifact store and share the link. (The host must allow cross-origin GETs; raw gists do.)
  • Commit it. Trace files in the repo next to the incident or PR they explain make retrieval debugging part of the review record.

Producing traces

Graphsight renders any file matching its trace JSON contract. Current producers:

  • graphsight-langgraph — instrument any LangGraph agent with a single callback handler, or trace a GitHub repository in one command:

    pip install "graphsight-langgraph[example]"
    graphsight-github-trace langchain-ai/langgraph "who fixed the recent streaming bugs?"
    graphsight graphsight_out/trace_state.json
    
  • The TraceRAG engine — the graph-memory backend this project grew out of; its /api/trace responses are the same shape.

Adapters for LlamaIndex and raw OpenTelemetry spans are planned; all producers emit the same schema and render in this same viewer.

Writing your own producer

The minimum contract is small — a JSON object with:

{
  "query": "the question that was asked",          // required, string
  "graph": {
    "nodes": [{ "id", "label", "type", "score", "meta": { "snippet", "sourceUrl" } }],
    "edges": [{ "id", "source", "target", "relation", "confidence" }]
  },
  "steps":   [ /* execution timeline, optional */ ],
  "metrics": { "queryTimeSec": 0.004 }             // optional
}

Node positions are computed client-side; emitters never deal with layout. The complete schema and a reference emitter live in the graphsight-langgraph source.

Security and privacy

  • The dependency list is empty by design: the UI is a bundled static build (Vite + React + React Flow) served by Python's stdlib http.server.
  • Binds to 127.0.0.1 — not reachable from other machines.
  • No accounts, no telemetry, no outbound network calls. Your traces stay on your disk.

Troubleshooting

Symptom Cause / fix
Address already in use Another process holds the port — pass --port 4631.
Browser doesn't open Some environments (SSH, WSL, containers) can't launch one — start with --no-browser and open the printed URL yourself.
Bundled UI missing error Broken installation — pip install --force-reinstall graphsight.
Page loads but trace doesn't The JSON didn't match the contract — the import page shows the specific validation error.

Links

License

MIT © Arush Karnatak

Release files for graphsight 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for graphsight 0.3.0
File Size Uploaded
graphsight-0.3.0.tar.gz 1.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for graphsight 0.3.0
File Interpreter ABI Platform
graphsight-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.4 MB

Release files / graphsight-0.3.0.tar.gz

Download URL graphsight-0.3.0.tar.gz
Size 1.2 MB
Tags Source
SHA-256 checksum
How to use checksums
52ef075798fed97d976ef2225c17f7684d649d203d91c9a175d7aa82bc22ca25
BLAKE2b-256 checksum
How to use checksums
9c957605e96d7ebf3c7417de5b773bb00f21fccb9276242dd9bb61fab21ae40f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.7

Release files / graphsight-0.3.0-py3-none-any.whl

Download URL graphsight-0.3.0-py3-none-any.whl
Size 1.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
dcc156576ef8fb3a9958bd94c993f6def4fa1cd8365f888e3f9c5450de8c5290
BLAKE2b-256 checksum
How to use checksums
8310e96a21540be885289e269fcecad210196495f70fb5d57a93e1e4c3e7f01b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.7

Release history Release notifications | RSS feed

0.3.1

2 release files

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page