Listed from the MCP registry; nobody on Odel publishes it.
Zero-trust, air-gapped Enterprise GraphRAG MCP server with offline, citation-grounded answers.
Runs on your machine from its package; the steps are below.

At most: moves money, runs code or commands, deletes data, or sends messages for you.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
uvx veritasgraph-mcp
MCP client config
{
"mcpServers": {
"veritasgraph": {
"command": "uvx",
"args": [
"veritasgraph-mcp"
]
}
}
}A knowledge graph your agents can trust: every answer cites its sources, the vocabulary is governed by a certified ontology, and the system says "I don't know" instead of guessing. Runs 100% locally.
🎯 Traditional RAG guesses based on similarity. VeritasGraph reasons based on structure — and refuses to answer when the evidence isn't there.
🌐 Live site · 🎮 Try the Studio live · ⭐ Star · 🍴 Fork · 💬 Discuss · 🐛 Report a bug
| Area | What you get |
|---|---|
| 🧭 Ontology & business glossary | Entity types, predicates (with domain/range) and glossary terms move through proposed → certified → deprecated. Certified vocabulary steers extraction. |
| ⚙️ Ontology compiler | compile normalizes types and predicates, finds duplicate entities, suggests new terms, checks domain/range rules and flags orphans. It only changes the graph when a mapping is unambiguous; everything else becomes a reviewable suggestion. |
| 🛡️ Governed answers | mode="governed" answers only when certified terms cover the question, and withholds answers whose citations don't match retrieved sources. |
| 🧾 Answer receipts | Every answer gets an answer_id. You can replay it later with its question, mode, citations, grounding and feedback. |
| 🚫 Strict citations & abstention | Each response carries grounded, unknown_citations and abstained. If no entity matches, it says so instead of guessing. |
| 💾 Shared SQLite store | Studio, the MCP server and the CLI share one transactional store. Legacy JSON graphs are migrated on first start. |
| 🔐 Governance | A SHA-256 hash-chained audit log with a verify endpoint, snapshots and restore (the graph is snapshotted automatically before it is cleared), and entity merge. |
| 🕵️ PII policy | Choose off, tag, redact_before_extract or reject. Email, SSN, credit card (Luhn-checked), phone and IP are detected and redacted on read for low-privilege roles. |
| 🔑 Auth & roles | Bearer tokens with viewer / editor / admin roles, an SSRF allowlist for HTTP tools, and a CORS allowlist. |
| 🔌 MCP modes | read / write / admin tool tiers, plus new tools: answerability check, ontology, term search, answer receipts and structured data. |
| 🗄️ Structured data layer | Connect read-only to Postgres, MySQL, SQLite, DuckDB, ClickHouse, Trino, Hive, Snowflake or Databricks. Govern a semantic layer and ask questions answered by SQL. |
🧰 veritasgraph CLI | serve, mcp, migrate, compile, export, import --dry-run, structured …. |
| 🐳 Docker | docker compose up for Studio + Ollama, an on-prem stack with pgvector, and a hardened MCP container. |
git clone https://github.com/bibinprathap/VeritasGraph.git && cd VeritasGraph
pip install -e ".[studio]" # Studio + the `veritasgraph` CLI
ollama serve & ollama pull qwen3:latest # any local chat model
export STUDIO_API_TOKENS="$(openssl rand -hex 24):admin" # auth is on by default
echo "${STUDIO_API_TOKENS%%:*}" # the token to paste into the UI
veritasgraph serve # http://127.0.0.1:8200/studio · API docs at /docs
Studio asks for the token the first time you open it and keeps it for the browser session. To run a local demo without auth, set STUDIO_AUTH=off (Studio logs a warning on startup); never do this on a shared or public host.
STUDIO_API_TOKENS="$(openssl rand -hex 24):admin" docker compose up
docker compose exec ollama ollama pull qwen3:latest
Studio is published on 127.0.0.1:8200 only.
pip install -e .
VERITASGRAPH_MCP_MODE=read python -m veritasgraph_mcp # or: veritasgraph mcp
See MCP server for IDE registration.
This builds a graph and drives a fully wired agent through graph reasoning, memory recall, PII redaction and a guardrail block:
python3 demos/agent-studio/sample_pipeline.py --model qwen3:latest
flowchart LR
subgraph Ingest
D[Documents / graph.json imports] --> PII{PII policy}
PII --> X["LLM extraction<br/>(steered by certified ontology)"]
end
subgraph Store["Shared SQLite store"]
G[(Entities · relations · chunks)]
O[(Ontology & glossary)]
A[(Audit chain · snapshots · receipts)]
end
X --> G
G <--> C["Ontology compiler<br/>normalize · merge · suggest · validate"]
C <--> O
subgraph Query
Q[Question] --> ANS{"Answerability<br/>(governed mode)"}
ANS -->|covered| R["Entity match + multi-hop traversal"]
ANS -->|not covered| AB[Abstain]
R --> L[Local LLM]
L --> V{"Citation check<br/>(doc#chunk)"}
V -->|grounded| OUT["Answer + citations + answer_id"]
V -->|unknown citations| AB
end
G --> R
O --> ANS
OUT --> A
subgraph Surfaces
S[Studio UI & REST API]
M[MCP server]
CLI[veritasgraph CLI]
end
Surfaces --> Ingest
Surfaces --> Query
Studio, MCP and the CLI are thin layers over the same engine and store. A graph built in Studio can be queried from your IDE, and a compile run from the CLI shows up in the Studio Ontology tab. A shared job lock ensures only one compiler runs at a time.
doc_xxx#n, or imp_xxx#n for imported graphs). This prevents hallucinated citations at read time.unknown_citations and set grounded: false.abstained: true instead of guessing.The ontology is the governed vocabulary of the graph:
Drug, Enzyme, Supplier.inhibits, with optional domain/range constraints.stateDiagram-v2
[*] --> proposed: propose (editor, MCP write, compile suggestion)
proposed --> certified: certify (admin)
certified --> deprecated: deprecate (admin)
proposed --> deprecated: deprecate (admin)
Once vocabulary is certified, it changes how the system behaves:
Manage it in the Studio Ontology tab, through /ontology in the REST API, or with the MCP tools get_ontology, search_terms, get_term and propose_term.
veritasgraph compile, POST /graphrag/compile, or a timer set with VERITASGRAPH_COMPILE_INTERVAL runs these stages:
| Stage | What it does |
|---|---|
normalize_types | Maps raw entity types to certified types and synonyms. |
normalize_predicates | Maps raw relation labels to certified predicates. |
merge_candidates | Finds likely duplicate entities. It only suggests merges and never merges on its own. |
suggest_terms | Proposes glossary terms for well-connected entities (VERITASGRAPH_TERM_MIN_DEGREE). |
check_predicate_rules | Flags relations that break a predicate's domain/range. |
detect_orphans | Flags entities with no relations. |
Only unambiguous mappings to certified vocabulary change the graph. Everything else is a suggestion that you accept or reject in Studio or via /graphrag/suggestions. Rejected suggestions are fingerprinted and don't come back. Every run is recorded (/graphrag/compile/runs) and audited.
exploratory (default) | governed | |
|---|---|---|
| Needs certified glossary coverage | No | Yes; abstains with a reason if not covered |
| Answers with unmatched citations | Returned, flagged grounded: false | Withheld |
Answer receipt (answer_id) | ✅ | ✅ |
POST /graphrag/answerable (MCP: check_answerable) tells an agent whether a question can be answered before it spends a model call.GET /graphrag/answers/{id} returns the receipt: question, mode, answer, citations, grounding and feedback.POST /graphrag/answers/{id}/feedback records a rating for the answer so it can be reviewed later. Any viewer can rate an answer.GET /graphrag/audit/verify recomputes the chain and reports the event where it breaks (broken_at)./graphrag/snapshots). Clearing the graph always takes a snapshot first. Retention is set with VERITASGRAPH_SNAPSHOT_KEEP (default 20).POST /graphrag/entities/merge folds duplicates together and keeps their relations and provenance.graph.json from Graphify, Understand-Anything, AI-Atlas or a generic node/edge file. Merge strategies are preserve_curated, skip_existing and overwrite, with a --dry-run preview.VERITASGRAPH_PII_POLICY controls what happens when ingested text contains email addresses, SSNs, credit card numbers (Luhn-validated), phone numbers or IP addresses:
| Policy | Behaviour |
|---|---|
off | No detection. |
tag (default) | Store the text and tag the chunks that contain PII. |
redact_before_extract | Redact before the LLM ever sees the text. |
reject | Refuse the document. |
PII in chunks is redacted on read for callers below VERITASGRAPH_PII_REVEAL_ROLE (default editor).
Beyond documents, VeritasGraph can govern databases. Install with pip install -e ".[structured]" and set VG_STRUCTURED_DSN to a Postgres + pgvector store.
[structured-hive]), Snowflake or Databricks ([structured-saas]). Credentials are encrypted with VG_SECRET_KEY.proposed → certified workflow.Source DSNs are guarded:
VG_STRUCTURED_ALLOWED_NETWORKS) controls which hosts can be reached.VG_STRUCTURED_FILE_ROOT) limits SQLite and DuckDB to approved paths.See .env.structured.example for every setting, and the structured CLI / /structured API.
Studio is a local Agent Build Workspace (FastAPI + a single-page UI at /studio). You build a knowledge graph from your own documents, govern its vocabulary, and wire it into agents alongside tools, memory, data logging, guardrails and headroom-style context budgeting. You then chat with those agents and watch every stage of the orchestration pipeline.
🎮 Try the Studio live — a stable URL that always redirects to the currently running Studio tunnel.

| Section | What you can do |
|---|---|
| Knowledge Graph | Ingest text or import graph.json, explore entities and relations visually, and ask exploratory or governed questions with citations. Browse the audit log and snapshots. |
| Ontology | Propose and certify types, predicates and glossary terms, run compile, and accept or reject suggestions. |
| Agents | Create agents with a local model, instructions, capability toggles (Knowledge Graph, Tools, Memory, Guardrails, Data log) and a headroom token budget. |
| Tools / Knowledge / Guardrails / Memory / Data | Manage inventories: real HTTP tools (method, auth header, custom headers), MCP bridge connectors, PII and policy guardrails. |
| Playground | Chat with an agent live and inspect the per-turn pipeline trace, reasoning path and citations. |
| Evaluation / Fine-tune | Run evaluation suites with pass-rate trends, and queue and monitor fine-tune jobs. |
Orchestration pipeline (per turn): Guardrails → Memory → Knowledge Graph → Headroom budget → Tools → Data log, with every step visible in the trace.
For full API details and curl recipes, see studio_api/README.md. For a guided enterprise scenario, see the Northwind Bank compliance playbook.
Auth is on by default. Studio refuses to start unless STUDIO_API_TOKENS is set or STUDIO_AUTH=off is set explicitly.
export STUDIO_API_TOKENS="tokenA:admin,tokenB:editor,tokenC:viewer" # each token ≥ 24 chars
| Role | Can |
|---|---|
viewer | Read everything, ask questions (graph query, answerability, playground chat, structured search and ask), and leave answer feedback. |
editor | Everything a viewer can, plus ingest and import, edit Studio inventories, propose ontology entries, run compile, and accept or reject suggestions. |
admin | Everything, including clearing the graph, restoring snapshots, certifying or deprecating vocabulary, and reindexing structured data. |
More controls:
/health, /ready and /studio; the UI shell holds no data.STUDIO_TOOL_ALLOWED_NETWORKS.STUDIO_CORS_ORIGINS.VERITASGRAPH_MCP_MODE limits which tools an MCP client can see. In the Studio MCP bridge, tools are also limited by the caller's role.VeritasGraph ships a Model Context Protocol server: a zero-trust, air-gapped enterprise GraphRAG server for MCP. Claude Desktop, Cursor, VS Code, Windsurf, Cline and Continue connect over JSON-RPC 2.0 stdio with zero external data egress.
VERITASGRAPH_MCP_MODE=read python -m veritasgraph_mcp
| Mode | Tools exposed (all prefixed veritasgraph_) |
|---|---|
read | check_answerable, query, search_entities, get_entity, get_graph, get_ontology, search_terms, get_term, get_answer_receipt, compile_status, structured_search, structured_get_term, structured_list_measures, structured_ask |
write (default) | read tools + ingest_document, import_graph, propose_term |
admin | write tools + clear_graph (always snapshots first) |
Resources: veritasgraph://graph, veritasgraph://stats, veritasgraph://ontology. Tools that aren't in the active mode are reported as unknown tools.
See veritasgraph_mcp/README.md for Claude Desktop, Cursor and VS Code registration snippets.
Real-world deployment: the VeritasGraph MCP server runs on Azure Functions with Azure AI Foundry. It delivers GraphRAG-powered clinical decision support with verifiable citations and a compliance-ready architecture.
The challenge: 90% of Azure AI demos work. Most never ship. The gap isn't the model; it's architecture, security, state management and compliance.
The solution: VeritasGraph is deployed as a remote MCP server that Azure AI Foundry agents call to answer clinical questions with:
[doc#chunk] sources.Foundry Agent / MCP client
→ Identity (Entra ID + function key)
→ Azure Functions (Flex Consumption, 4 mcpToolTrigger tools)
→ veritasgraph-mcp + graphrag_engine
→ Azure OpenAI (extraction + reasoning)
→ Knowledge Graph
→ Durable Azure Files mount (externalized state)
→ Storage + App Insights (observability)
Key production lessons:
{
"question": "Should we adjust warfarin for patient 4471 on amiodarone?",
"answer": "Reduce the warfarin dose because amiodarone inhibits CYP2C9...",
"citations": ["doc_warfarin_note#0", "doc_warfarin_note#1"],
"reasoning_path": ["Amiodarone → CYP2C9", "CYP2C9 → Warfarin", "Warfarin → Bleeding Risk"]
}
💡 Key insight: the gap between proof of concept and production is architecture, not the model. Ground it, externalize state, secure it, observe it, make it resilient and keep it compliant.
pip install -e ".[studio]" installs the veritasgraph command:
veritasgraph serve --host 127.0.0.1 --port 8200 # run Studio
veritasgraph mcp # run the MCP server (stdio)
veritasgraph migrate graph.json veritasgraph.db # legacy JSON → SQLite
veritasgraph compile --actor ci # run the ontology compiler
veritasgraph export -o graph.json # export the graph
veritasgraph import graph.json --format auto --merge-strategy preserve_curated --dry-run
# Structured data layer (needs the [structured] extra + VG_STRUCTURED_DSN)
veritasgraph structured migrate # create/upgrade the semantic store
veritasgraph structured status
veritasgraph structured sync <connection> # introspect a source schema
veritasgraph structured compile <connection> # build semantic-layer proposals
veritasgraph structured reindex
veritasgraph structured ask "total revenue by region last quarter" --mode governed
The import command accepts --format values auto, graphify, understand_anything, ai_atlas and generic, and --source-type values curated, extracted and inferred.
| Variable | Default | Purpose |
|---|---|---|
STUDIO_API_TOKENS | — | token:role,... (each token ≥ 24 chars). Required unless STUDIO_AUTH=off. |
STUDIO_AUTH | on | Set off for local development only. |
STUDIO_CORS_ORIGINS | — | Allowed browser origins. |
STUDIO_TOOL_ALLOWED_NETWORKS | — | CIDRs that HTTP tools may reach despite the SSRF block. |
STUDIO_DATA_DIR | studio_api/data | Data directory. |
VERITASGRAPH_DB | $STUDIO_DATA_DIR/veritasgraph.db | SQLite store shared by Studio, MCP and the CLI. A legacy graphrag.json is migrated on first start. |
OLLAMA_HOST | http://localhost:11434 | Local model server. |
VERITASGRAPH_MCP_MODE | write | MCP tool tier: read, write or admin. |
VERITASGRAPH_PII_POLICY | tag | off, tag, redact_before_extract or reject. |
VERITASGRAPH_PII_REVEAL_ROLE | editor | Lowest role that sees unredacted PII. |
VERITASGRAPH_COMPILE_INTERVAL | 0 | Seconds between background compile runs (0 = off). |
VERITASGRAPH_TERM_MIN_DEGREE | 3 | Minimum connections before a term is suggested. |
VERITASGRAPH_SNAPSHOT_KEEP | 20 | Snapshots retained. |
STUDIO_GRAPH_CHUNK_SIZE | — | Ingest chunk size. |
VG_STRUCTURED_DSN, VG_SECRET_KEY, VG_LLM_*, VG_EMBED_*, VG_STRUCTURED_*, VG_ASK_* | — | Structured data layer; see .env.structured.example. |
The full reference is in studio_api/README.md.
The interactive OpenAPI docs are served at /docs. Main route groups:
| Prefix | Highlights |
|---|---|
/graphrag | ingest, import, export, graph, query (mode: exploratory/governed), answerable, answers/{id} (+ /feedback), entities/{id}, entities/merge, compile, compile/runs, compile/status, suggestions (+ accept/reject), snapshots (+ restore), audit, audit/verify |
/ontology | List the ontology; terms, terms/{term}, terms/{term}/links; propose types, predicates, terms; /{kind}/{id}/certify and /deprecate (admin) |
/structured | status, connections (+ test, sync, compile), datasets, fields, terms, relationships, measures, /{kind}/{id}/{accept,certify,reject,deprecate}, search, ask, answers/{id}, reindex, jobs/{id} |
/playground | Agent chat with full pipeline trace |
/agents, /tools, /knowledge, /guardrails, /memory, /data | Studio inventories (CRUD), tools/{id}/test, knowledge/budget |
/evaluation, /finetune, /workspace, /models | Evaluation runs, fine-tune jobs, KPIs, draft/deploy, local models |
/mcp | MCP bridge: tools, resources, JSON-RPC (/mcp/rpc) |
TOKEN="${STUDIO_API_TOKENS%%:*}"
curl -s -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"question":"Which drugs inhibit CYP2C9?","mode":"governed"}' \
http://127.0.0.1:8200/graphrag/query
| Target | How |
|---|---|
| Docker Compose (Studio + Ollama) | STUDIO_API_TOKENS="$(openssl rand -hex 24):admin" docker compose up (Studio on 127.0.0.1:8200). |
| MCP container | docker compose run --rm -T mcp (the mcp profile); defaults to read mode. |
| On-prem stack | deploy/docker-compose.onprem.yml: pgvector semantic store, Studio via veritasgraph serve, ollama / vllm profiles and a test-engines profile with sample databases. |
| Public demo link | scripts/start-studio-with-tunnel.sh: Studio behind a Cloudflare tunnel, reusing the admin token in .studio-api-token. scripts/install-studio-service.sh installs it as a service. |
| Azure (serverless MCP) | See the Azure production use case. |
| Method | Duration | Local Ollama | Setup | Best for |
|---|---|---|---|---|
| Cloudflare tunnel (script above) | Unlimited* | ✅ | 5 min | Team evaluation |
| Ngrok tunnel | Unlimited* | ✅ | 5 min | Team evaluation |
| Hugging Face Spaces | Permanent | ❌ (cloud LLM) | 15 min | Public showcase |
*The free tier has some limitations. Always keep auth on for anything reachable from the internet, and rotate tokens that have been shared.
Hardware: 16+ CPU cores, 64 GB+ RAM (128 GB recommended), and an NVIDIA GPU with 24 GB+ VRAM (A100 / H100 / RTX 4090) for larger local models.
Software: Docker and Docker Compose, Python 3.10+, NVIDIA Container Toolkit.
Copy .env.example to .env and fill in environment-specific values.
Studio talks to Ollama (OLLAMA_HOST). The structured layer and the GraphRAG pipeline in graphrag-ollama-config/ work with any OpenAI-compatible API. The structured layer stays local unless you set VG_LLM_ALLOW_REMOTE to allow a remote endpoint.
| Provider | API base | Example model |
|---|---|---|
| Ollama (default) | http://localhost:11434/v1 | llama3.1, qwen3 |
| vLLM | http://localhost:8000/v1 | any served model |
| LM Studio | http://localhost:1234/v1 | the model loaded in LM Studio |
| OpenAI | https://api.openai.com/v1 | gpt-4-turbo-preview |
| Groq | https://api.groq.com/openai/v1 | llama-3.1-70b-versatile |
| Together AI | https://api.together.xyz/v1 | Meta-Llama-3.1-70B-Instruct-Turbo |
Azure OpenAI, OpenRouter, Anyscale and LocalAI are also supported.
⚠️ Embeddings must match your index. If you indexed with
nomic-embed-text(768 dims), you must query with the same model. Switching embedding models requires re-indexing.
pip install -e ".[studio,dev]"
ruff check veritasgraph studio_api veritasgraph_mcp
STUDIO_AUTH=off timeout 600 python -m pytest studio_api/tests tests -m "not ollama" -q \
--ignore=studio_api/tests/test_e2e_playwright.py
CI runs ruff and pytest on Python 3.10 and 3.12. Browser end-to-end tests live in tests/studio-e2e (see VERITASGRAPH_PLAYWRIGHT_INTEGRATION_TESTS.md). Contributions are welcome; see CONTRIBUTING.md and SECURITY.md.
| Example | What it demonstrates | Run |
|---|---|---|
sample_pipeline.py | Studio agent pipeline: brief → KG → multi-hop Q&A with citations → memory → PII redaction → guardrail block → audit. | python3 demos/agent-studio/sample_pipeline.py |
sample_tools_explorer.py | Seeds 17 tools and sample explorer agents (idempotent). | python3 demos/agent-studio/sample_tools_explorer.py |
| MedTrust Agent | Zero-trust governed agent for medical and pharma workflows (NEECON 2026): step-up authorization, mandatory citations, hash-chained audit, 69 tests. | python -m medtrust.demo |
clinical-kg/ | HIPAA-safe clinical KG: Safe Harbor de-identification, ConText NER, contradiction detection, ICD-10/RxNorm/SNOMED/LOINC normalization. | cd clinical-kg/backend && python run.py |
municipality-incident-chatbot/ | Civic incident reporting with CV validation (YOLO/VLM), KG-grounded routing and evidence fusion (architecture). | cd municipality-incident-chatbot && python cli.py |
| Floorplan-KG takeoff | Construction drawings → rooms, dimensions and schedules → KG + CSV/XLSX takeoff, with every quantity traced to its sheet. | Hosted demo |
GraphRAG is great at describing what documents say. Questions like "Which purchase orders violated our Segregation-of-Duties policy last quarter?" are rule-evaluation problems over structured records. VeritasReason is a deterministic reasoning engine (forward-chaining + Rete + SPARQL) that fires policy rules over a triple store and returns auditable answers with W3C PROV-O provenance.
Policy PDFs ─┐ ┌─ ingest_structured.py (SQL → triples + text)
▼ ▼
VeritasGraph GraphRAG VeritasReason (TripletStore + RuleSet
(quotes policy text) + ForwardChainer + PROV-O)
└──────────┬───────────────┘
▼
Compliance answer + violators table + clause citations
python tests/test_policy_compliance_demo.py # 30-second smoke test, stdlib only
pip install veritas-reason && veritasreason-policy-demo
The rules live in rules/sod_policy.yaml and the SQL → triple mapping in ingest_structured.py. See veritas-reason/plan.md for a walkthrough.
Building with VeritasGraph? Open a PR with a short repo description to be featured here.
Note: the
veritasgraphpackage on PyPI is the Vision RAG / tree + graph library. It is separate from the Studio / MCP / governance stack in this repository. Both install averitasgraphcommand, so use separate virtual environments if you need both.
pip install veritasgraph # basic (includes lite mode)
pip install veritasgraph[all] # + web UI, Microsoft GraphRAG, YouTube/web ingestion
veritasgraph demo --mode=lite # cloud APIs, no GPU (--mode=local for Ollama)
from veritasgraph import VisionRAGPipeline, VisionRAGConfig
pipeline = VisionRAGPipeline(VisionRAGConfig(ingest_mode="document-centric")) # tables stay intact
doc = pipeline.ingest_pdf("report.pdf")
print(pipeline.get_document_tree()) # hierarchical "table of contents"
print(pipeline.navigate_to_section("Methodology")["breadcrumb"])
print(pipeline.query("What methodology was used?").answer) # graph search with section context
| Ingest mode | Description | Best for |
|---|---|---|
document-centric | Whole pages/sections as nodes (default) | Most documents |
page | Each page = one node | Slide decks, reports |
section | Each section = one node | Structured documents |
chunk | Traditional 500-token chunks | Legacy compatibility |
Document Root
├── [1] Introduction
│ ├── [1.1] Background ←── Tree Navigation
│ └── [1.2] Objectives
├── [2] Methodology ←───────── Graph Links
│ └── relates_to ──────────→ [3.1] Findings
└── [3] Results
The package also includes an interactive PyVis graph explorer. It shows a query-aware subgraph, colors nodes by community, highlights query entities in red, and sizes nodes by number of connections.

| Feature | Vector RAG | PageIndex | VeritasGraph |
|---|---|---|---|
| Retrieval type | Similarity | Tree search | 🏆 Tree + graph reasoning |
| Attribution | ❌ Low | ⚠️ Medium | ✅ Verified citations + receipts |
| Abstains when evidence is missing | ❌ | ❌ | ✅ |
| Governed vocabulary (ontology) | ❌ | ❌ | ✅ |
| Tamper-evident audit | ❌ | ❌ | ✅ |
| Multi-hop reasoning | ❌ | ❌ | ✅ |
| Structured data (SQL) under the same governance | ❌ | ❌ | ✅ |
| MCP server for IDE agents | ⚠️ Varies | ❌ | ✅ |
| 100% local/private | ⚠️ Varies | ❌ Cloud | ✅ On-premise |
| Open source | ⚠️ Varies | ❌ Proprietary | ✅ MIT license |
Who is it for? Engineers building enterprise search, compliance assistants, research copilots, scientific literature explorers and agent memory systems: anywhere "the answer" depends on how facts connect, and where a wrong answer costs more than no answer.
Builds on the foundational work of HopRAG, Microsoft GraphRAG, LangChain & LlamaIndex, and Neo4j.
Presented at the International Conference on Applied Science and Future Technology (ICASF 2025) — 📄 Appreciation Certificate.
@article{VeritasGraph2025,
title={VeritasGraph: A Sovereign GraphRAG Framework for Enterprise-Grade AI with Verifiable Attribution},
author={Bibin Prathap},
journal={International Conference on Applied Science and Future Technology (ICASF)},
year={2025}
}
Licensed under MIT. ⭐ Star the repo to follow the roadmap for open-source, governed GraphRAG.