Repository navigation
Expand file tree
/
Copy pathindex.html
More file actions
728 lines (698 loc) · 45.2 KB
/
Copy pathindex.html
File metadata and controls
728 lines (698 loc) · 45.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
<!DOCTYPE html>
<html lang="en" data-theme="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>LiteGraph | Multi-Modal AI Data Platform</title>
<meta name="description" content="LiteGraph is a multi-modal AI data platform: graph relationships, vectors, and metadata in one database, native LLM chat over your data, an MCP tool surface and memory for agents, high availability across multiple server nodes, and built-in observability with Prometheus, OpenTelemetry, Loki, and Grafana.">
<link rel="stylesheet" href="styles.css">
<link rel="icon" type="image/png" href="https://raw.githubusercontent.com/litegraphdb/litegraph/main/assets/favicon.png">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
</head>
<body>
<nav class="navbar">
<div class="nav-container">
<a href="#home" class="nav-brand">
<img src="https://raw.githubusercontent.com/litegraphdb/litegraph/main/assets/favicon.png" alt="LiteGraph logo" class="logo">
<span class="brand-text">LiteGraph</span>
</a>
<div class="nav-links">
<a href="#features">Features</a>
<a href="#chat">Chat</a>
<a href="#agentic">Agents</a>
<a href="#query">Query</a>
<a href="#operations">Operations</a>
<a href="#getting-started">Get Started</a>
<a href="#web-ui">Dashboard</a>
<a href="https://github.com/litegraphdb/litegraph/blob/main/README.md" target="_blank" class="api-docs-link" rel="noopener">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path>
<polyline points="14 2 14 8 20 8"></polyline>
<line x1="16" y1="13" x2="8" y2="13"></line>
<line x1="16" y1="17" x2="8" y2="17"></line>
</svg>
Docs
</a>
<a href="https://github.com/litegraphdb/litegraph" target="_blank" class="github-link" rel="noopener" aria-label="LiteGraph on GitHub" title="View on GitHub">
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"></path>
</svg>
</a>
<button class="theme-toggle" id="themeToggle" aria-label="Toggle theme" type="button">
<svg class="sun-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
<svg class="moon-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
</svg>
</button>
</div>
</div>
</nav>
<section id="home" class="hero">
<div class="hero-content">
<p class="eyebrow">LiteGraph 10.0</p>
<h1 class="hero-title">
Multi-modal AI data platform
</h1>
<p class="hero-subtitle">
LiteGraph stores relationships, metadata, JSON data, and vectors in one graph database — with native LLM chat that answers questions straight from your data, streaming, tool-calling, and retrieval-augmented. MCP makes LiteGraph a tool surface and memory for agents, a cluster of stateless server nodes keeps it available through node failures and restarts, and Prometheus, OpenTelemetry, Loki, and Grafana watch every request out of the box.
</p>
<div class="hero-badges">
<span class="badge">Chat With Your Graph</span>
<span class="badge">Native Graph Query</span>
<span class="badge">Graph Transactions</span>
<span class="badge">HNSW Vector Search</span>
<span class="badge">PostgreSQL Ready</span>
<span class="badge">High Availability</span>
<span class="badge">MCP Server</span>
<span class="badge">MIT License</span>
</div>
<div class="hero-actions">
<a href="#getting-started" class="btn btn-primary">Get Started</a>
<a href="https://github.com/litegraphdb/litegraph" target="_blank" class="btn btn-secondary" rel="noopener">View on GitHub</a>
</div>
</div>
</section>
<section id="features" class="features">
<div class="container">
<h2 class="section-title">Ready For Production AI Applications</h2>
<p class="section-subtitle">
LiteGraph brings the core database, server, native LLM chat, SDKs, MCP tools, console, dashboard, and a full observability stack into one coordinated release, and runs as a single node or a highly available cluster.
</p>
<div class="features-grid">
<div class="feature-card">
<h3>Chat With Your Graph</h3>
<p>Ask questions in natural language. The server runs your model, executes graph tool calls under your own RBAC, grounds answers with vector retrieval, and streams the result over SSE.</p>
</div>
<div class="feature-card">
<h3>Built-In Observability</h3>
<p>Prometheus metrics for every REST route, MCP tool, and chat turn; OpenTelemetry traces; logs in Loki; and provisioned Grafana dashboards from first boot.</p>
</div>
<div class="feature-card">
<h3>Native Graph Query</h3>
<p>Run Cypher/GQL-inspired graph reads, traversals, filters, aggregates, supplied-vector search, and child-object mutations inside one tenant and one graph.</p>
</div>
<div class="feature-card">
<h3>Graph Transactions</h3>
<p>Commit or roll back graph-scoped node, edge, label, tag, and vector changes as a single unit with structured operation results.</p>
</div>
<div class="feature-card">
<h3>Graph Plus Vector Search</h3>
<p>Attach vectors to graph objects and use HNSW indexing (HnswLite on SQLite, pgvector on PostgreSQL), metadata filters, and graph context together instead of splitting data across separate systems.</p>
</div>
<div class="feature-card">
<h3>RBAC And Scoped Credentials</h3>
<p>Protect REST, MCP, and chat access with built-in roles — including a delegable Chat Admin role — custom roles, credential scopes, and immutable system roles.</p>
</div>
</div>
</div>
</section>
<section id="chat" class="chat-graph">
<div class="container">
<h2 class="section-title">Chat With Your Graph</h2>
<p class="section-subtitle">
LiteGraph builds LLM chat into the server. Register completion and embedding endpoints for your own models, and the model answers by actually querying your graph — with tool calls, retrieval, and telemetry visible in the stream.
</p>
<div class="query-panel chat-panel">
<pre class="docker-code"><code># OpenAI request body, graph-scoped LiteGraph URL
POST /v1.0/tenants/{tenant}/graphs/{graph}/chat/completions
{
"model": "gpt-oss:20b",
"stream": true,
"messages": [
{ "role": "user",
"content": "Which node has the most edges?" }
]
}
data: {"object":"chat.completion.chunk",
"choices":[{"delta":{"role":"assistant"}}]}
data: {"object":"chat.completion.chunk",
"choices":[{"delta":{"content":"Ada, with 14 edges."}}]}
data: [DONE]
# Native API: SSE with retrieval, tool, and usage events
POST /v1.0/tenants/{tenant}/chat/completions
data: {"event":"tool_call","name":"node/neighbors","iteration":1}
data: {"event":"delta","content":"The most connected node is Ada..."}
data: {"event":"usage","usage":{"TimeToFirstTokenMs":412.6,
"TokensPerSecondOverall":51.2,"ToolCallCount":2}}
data: [DONE]</code></pre>
<div class="query-points">
<p class="query-kicker">Native LLM integration</p>
<h3>The model queries the graph</h3>
<p class="query-summary">Chat runs an in-process tool loop under the caller's own tenant and RBAC: the model calls graph, node, edge, vector, label, and tag tools and answers from real data instead of guessing. Mutation tools stay off unless the tenant opts in.</p>
<ul class="query-surface-list">
<li><span class="query-surface-label">Providers</span>OpenAI and OpenAI-compatible servers, Ollama, Google Gemini, Anthropic (completion), VoyageAI (embedding)</li>
<li><span class="query-surface-label">Retrieval</span>Graph-bound threads get automatic vector RAG through the tenant's embedding endpoint</li>
<li><span class="query-surface-label">Streaming</span>SSE with delta, thinking, retrieval, tool, usage, and error events</li>
<li><span class="query-surface-label">Telemetry</span>TTFT, tokens per second, per-stage timings, tool transcripts, and a trace ID on every turn</li>
<li><span class="query-surface-label">Protocols</span>Graph-scoped routes speak OpenAI and Ollama wire formats, so existing clients connect without learning a new API</li>
</ul>
<a href="https://github.com/litegraphdb/litegraph/blob/main/docs/CHAT.md" target="_blank" class="sdk-link query-guide-link" rel="noopener">Read the chat architecture</a>
</div>
</div>
<div class="benefits-grid chat-card-grid">
<div class="benefit-card">
<h3>Bring Your Own Model</h3>
<p>Tenant-scoped endpoint management: register completion and embedding endpoints per tenant, mix providers freely, and keep API keys server-side — they always come back redacted.</p>
</div>
<div class="benefit-card">
<h3>Endpoint Health Monitoring</h3>
<p>Background health probes with debounced state transitions, uptime history, on-demand connectivity tests, and a <code>litegraph_chat_endpoint_healthy</code> gauge on the dashboard.</p>
</div>
<div class="benefit-card">
<h3>Per-Turn Telemetry</h3>
<p>Every turn persists time to first token, tokens per second, retrieval and tool timings, retries, and a trace ID — even failed turns leave a diagnosable trail.</p>
</div>
<div class="benefit-card">
<h3>Feedback And History</h3>
<p>Thumbs-up/down feedback capture, full thread and turn history with retention sweeps, and a delegable Chat Admin role for endpoints, settings, and tenant-wide history.</p>
</div>
<div class="benefit-card">
<h3>Point Any OpenAI Or Ollama Client At A Graph</h3>
<p>Graph-scoped endpoints accept OpenAI chat-completions and Ollama <code>/api/chat</code> request bodies — and answer in kind, streaming included — so any app that can talk to OpenAI or Ollama can chat with a specific graph using its existing client library.</p>
</div>
</div>
</div>
</section>
<section id="agentic" class="agentic">
<div class="container">
<h2 class="section-title">Built For Agentic Applications</h2>
<p class="section-subtitle">
Agents use LiteGraph two ways: as a tool surface they can call, and as durable memory they can keep.
</p>
<div class="query-panel agentic-panel">
<pre class="docker-code"><code># JSON-RPC over HTTP, TCP, or WebSocket
{
"jsonrpc": "2.0",
"id": 1,
"method": "node/neighbors",
"params": {
"tenantGuid": "00000000-0000-0000-0000-000000000000",
"graphGuid": "00000000-0000-0000-0000-000000000000",
"nodeGuid": "11111111-1111-1111-1111-111111111111"
}
}</code></pre>
<div class="query-points">
<p class="query-kicker">MCP tool surface</p>
<h3>A tool catalog agents already speak</h3>
<p class="query-summary">The MCP server exposes graph, node, edge, vector, label, and tag operations — CRUD, search, traversal, queries, transactions, and JSONL export/import — to Claude, Claude Code, Cursor, and any MCP-compatible client over HTTP, TCP, and WebSocket transports.</p>
<ul class="query-surface-list">
<li><span class="query-surface-label">One vocabulary</span>The built-in chat advertises the same tool names as the MCP catalog, so an agent built against MCP transfers directly</li>
<li><span class="query-surface-label">Authorized</span>Every tool call passes through REST-boundary authentication and RBAC</li>
<li><span class="query-surface-label">Measured</span>Every MCP tool reports rate, latency, and errors to Prometheus alongside REST</li>
</ul>
<a href="https://github.com/litegraphdb/litegraph/blob/main/docs/MCP_API.md" target="_blank" class="sdk-link query-guide-link" rel="noopener">Open the MCP API reference</a>
</div>
</div>
<div class="use-case-grid agentic-grid">
<div class="use-case-card">
<div class="use-case-icon">MEM</div>
<h3>Agentic Memory</h3>
<p>Give agents durable long-term memory: graphs hold entities and relationships, vectors hold semantic recall, and labels and tags keep it all queryable — per tenant, under RBAC.</p>
</div>
<div class="use-case-card">
<div class="use-case-icon">MCP</div>
<h3>Tool Surface</h3>
<p>Connect an MCP client and agents can create, query, traverse, and mutate graph data through a maintained tool catalog instead of hand-rolled database glue.</p>
</div>
<div class="use-case-card">
<div class="use-case-icon">CLI</div>
<h3>Query From The Terminal</h3>
<p>Install the <code>lg</code> console (the LiteGraphConsole dotnet tool) for an interactive shell over a local SQLite database or a remote server, with one-shot <code>--execute</code> queries and script files.</p>
</div>
<div class="use-case-card">
<div class="use-case-icon">API</div>
<h3>Inference In Your App</h3>
<p>The REST and SDK chat endpoints let your application infer with AI directly against its own data: send a message, get a grounded, telemetry-instrumented answer back.</p>
</div>
</div>
</div>
</section>
<section id="query" class="query-language">
<div class="container">
<h2 class="section-title">Query Relationships Directly</h2>
<p class="section-subtitle">
LiteGraph native graph query is a parser-backed, LiteGraph-native profile inspired by familiar graph query models.
</p>
<div class="query-panel">
<pre class="docker-code"><code>MATCH (person:Person)-[works:WORKS_ON]->(project:Project)
WHERE person.data.role = $role
RETURN person, works, project
ORDER BY person.name
LIMIT 10</code></pre>
<div class="query-points">
<p class="query-kicker">Execution surfaces</p>
<h3>Query from every surface</h3>
<p class="query-summary">Use the same graph-scoped query model from embedded applications, HTTP clients, MCP tools, and terminal workflows.</p>
<ul class="query-surface-list">
<li><span class="query-surface-label">C# embedded</span><code>client.Query.Execute(...)</code></li>
<li><span class="query-surface-label">REST</span><code>POST /v1.0/tenants/{tenantGuid}/graphs/{graphGuid}/query</code></li>
<li><span class="query-surface-label">MCP</span><code>graph/query</code></li>
<li><span class="query-surface-label">Console</span><code>lg --execute "MATCH (n) RETURN n"</code></li>
</ul>
<a href="https://github.com/litegraphdb/litegraph/blob/main/docs/DSL.md" target="_blank" class="sdk-link query-guide-link" rel="noopener">Open the query language guide</a>
</div>
</div>
</div>
</section>
<section id="operations" class="benefits">
<div class="container">
<h2 class="section-title">Operationally Ready</h2>
<p class="section-subtitle">
Built to stay up and to be watched. Run several server nodes behind a load balancer for high availability, and every REST route, every MCP tool, and every chat turn reports to Prometheus under one metric scheme, traces flow through OpenTelemetry, and logs land in Loki — side by side in Grafana, per node or across the cluster.
</p>
<div class="benefits-grid">
<div class="benefit-card">
<h3>PostgreSQL And High Availability</h3>
<p>SQLite remains the local default. PostgreSQL with pgvector is the production backend, and it lets several stateless LiteGraph nodes share one database: any node answers any request, a failed node drops out of the load balancer without losing data, and rolling restarts apply settings one node at a time while the cluster keeps serving.</p>
</div>
<div class="benefit-card">
<h3>Unified Prometheus Metrics</h3>
<p>REST and MCP emit the same metric names split by a <code>component</code> label, plus repository, query, vector, transaction, authorization, and <code>litegraph_chat_*</code> series.</p>
</div>
<div class="benefit-card">
<h3>OpenTelemetry Traces</h3>
<p>Trace request, repository, query, vector index, authorization, and chat activity — including per-turn spans for retrieval, tool calls, and each provider attempt — with optional OTLP export.</p>
</div>
<div class="benefit-card">
<h3>Provisioned Grafana Dashboards</h3>
<p>The Compose stacks preload nine per-domain LiteGraph dashboards — Overview, API Requests, Graphs and Queries, Vector Search, Algorithms, Storage, Logs, Chat and Inference, and Cluster — covering request rate, latency, errors, TTFT, token throughput, tool calls, endpoint health, and the state of every node.</p>
</div>
<div class="benefit-card">
<h3>Logs In Loki</h3>
<p>Structured logs ship through Grafana Alloy into Loki, stamped by component and severity, so a metric spike and the log line that explains it sit side by side in Grafana.</p>
</div>
<div class="benefit-card">
<h3>Chat Turn Records</h3>
<p>Every chat exchange persists TTFT, tokens per second, per-stage timings, tool transcripts, retries, and a trace ID that links straight to its distributed trace.</p>
</div>
<div class="benefit-card">
<h3>Request History</h3>
<p>Use recent request details, including the node that handled each one and the real client address behind a load balancer, for debugging while Prometheus and OpenTelemetry carry aggregate monitoring and tracing.</p>
</div>
<div class="benefit-card">
<h3>LiteGraphConsole</h3>
<p>Install the <code>lg</code> global tool for an interactive shell over a local database or remote endpoint, similar to using <code>sqlite3</code>.</p>
</div>
</div>
</div>
</section>
<section id="use-cases" class="use-cases">
<div class="container">
<h2 class="section-title">Where LiteGraph Fits</h2>
<p class="section-subtitle">
Use LiteGraph when graph structure, vector similarity, object metadata, and operational control need to live together.
</p>
<div class="use-case-grid">
<div class="use-case-card">
<div class="use-case-icon">AI</div>
<h3>RAG Beyond Vectors</h3>
<p>Combine semantic search with graph relationships, labels, tags, and JSON data — or let the built-in chat retrieval ground your model's answers automatically.</p>
</div>
<div class="use-case-card">
<div class="use-case-icon">KG</div>
<h3>Knowledge Graphs</h3>
<p>Model people, systems, documents, assets, events, and relationships with queryable metadata and typed graph edges.</p>
</div>
<div class="use-case-card">
<div class="use-case-icon">AG</div>
<h3>Agent Memory</h3>
<p>Expose LiteGraph through MCP so AI agents can store context, inspect relationships, query history, and update graph state as durable long-term memory.</p>
</div>
<div class="use-case-card">
<div class="use-case-icon">OP</div>
<h3>Operational Graphs</h3>
<p>Track infrastructure, identity, security, lineage, and dependency networks with transactional updates, production monitoring, and a highly available deployment that stays up when a server does not.</p>
</div>
</div>
</div>
</section>
<section id="getting-started" class="getting-started">
<div class="container">
<h2 class="section-title">Get Started In Minutes</h2>
<p class="section-subtitle">
Run the full stack with Docker Compose on one node or as a highly available cluster, chat with your data over REST, use LiteGraph embedded in .NET, or install the <code>lg</code> console.
</p>
<div class="code-examples">
<div class="code-tabs">
<button class="code-tab active" data-lang="docker">Docker Compose</button>
<button class="code-tab" data-lang="chat">Chat</button>
<button class="code-tab" data-lang="query">Native Query</button>
<button class="code-tab" data-lang="csharp">C# Embedded</button>
<button class="code-tab" data-lang="transaction">Transaction</button>
<button class="code-tab" data-lang="console">Console</button>
</div>
<div class="code-content">
<pre class="code-block active" data-lang="docker"><code>git clone https://github.com/litegraphdb/litegraph.git
# Pick a deployment: single-node-sqlite (evaluation),
# single-node-postgresql (production on one server),
# or multi-node (high availability, three nodes)
cd litegraph/docker/single-node-postgresql
docker compose up -d
smoke.bat # or: pwsh ./smoke.ps1
# LiteGraph REST: http://localhost:8701 (Bearer litegraphadmin)
# LiteGraph MCP: http://localhost:8702
# Dashboard: http://localhost:3001 (default@user.com / password)
# Prometheus: http://localhost:9090
# Grafana OSS: http://localhost:3000 (admin / admin)</code></pre>
<pre class="code-block" data-lang="chat"><code># Stream a chat completion grounded in your graph
curl -N -X POST http://localhost:8701/v1.0/tenants/${TENANT}/chat/completions \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"GraphGUID": "00000000-0000-0000-0000-000000000000",
"Message": "What are the most connected nodes in this graph?",
"Stream": true,
"EnableTools": true,
"EnableRag": true
}'
# SSE events: started, retrieval, tool_call, tool_result,
# delta, usage (TTFT, tokens/sec, tool calls), [DONE]</code></pre>
<pre class="code-block" data-lang="query"><code>curl -X POST http://localhost:8701/v1.0/tenants/${TENANT}/graphs/${GRAPH}/query \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"Query": "MATCH (n:Person) WHERE n.data.role = $role RETURN n LIMIT 10",
"Parameters": {
"role": "engineer"
},
"MaxResults": 100,
"TimeoutSeconds": 30
}'</code></pre>
<pre class="code-block" data-lang="csharp"><code>using System.Collections.Generic;
using LiteGraph;
using LiteGraph.GraphRepositories.Sqlite;
LiteGraphClient client = new LiteGraphClient(
new SqliteGraphRepository("litegraph.db"));
client.InitializeRepository();
TenantMetadata tenant = await client.Tenant.Create(
new TenantMetadata { Name = "Example tenant" });
Graph graph = await client.Graph.Create(new Graph
{
TenantGUID = tenant.GUID,
Name = "Knowledge graph"
});
Node ada = await client.Node.Create(new Node
{
TenantGUID = tenant.GUID,
GraphGUID = graph.GUID,
Name = "Ada",
Labels = new List<string> { "Person" },
Data = new { role = "engineer" }
});
GraphQueryResult result = await client.Query.Execute(
tenant.GUID,
graph.GUID,
new GraphQueryRequest
{
Query = "MATCH (n:Person) RETURN n LIMIT 10"
});</code></pre>
<pre class="code-block" data-lang="transaction"><code>curl -X POST http://localhost:8701/v1.0/tenants/${TENANT}/graphs/${GRAPH}/transaction \
-H "Authorization: Bearer ${TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"Operations": [
{
"OperationType": "Create",
"ObjectType": "Node",
"Payload": {
"Name": "Ada",
"Labels": ["Person"],
"Data": { "role": "engineer" }
}
}
],
"MaxOperations": 100,
"TimeoutSeconds": 30
}'</code></pre>
<pre class="code-block" data-lang="console"><code># From the LiteGraph repository root
install-tool.bat
# Local SQLite database
lg --database litegraph.db \
--tenant 00000000-0000-0000-0000-000000000000 \
--graph 00000000-0000-0000-0000-000000000000
# Remote server
lg --endpoint http://localhost:8701 \
--tenant ${TENANT} \
--graph ${GRAPH} \
--token ${TOKEN} \
--execute "MATCH (n) RETURN n LIMIT 5"</code></pre>
</div>
</div>
</div>
</section>
<section id="sdks" class="sdks">
<div class="container">
<h2 class="section-title">Clients And Packages</h2>
<p class="section-subtitle">
Official C#, Python, and JavaScript SDKs cover graphs, vectors, transactions, chat, and cluster administration, and retry safely when a cluster node goes away mid-request.
</p>
<div class="sdk-grid">
<div class="sdk-card">
<div class="sdk-header">
<h3>C# / .NET</h3>
<span class="sdk-badge">NuGet</span>
</div>
<p>Use LiteGraph embedded with SQLite or consume a LiteGraph Server through the C# SDK.</p>
<div class="sdk-stats">
<img src="https://img.shields.io/nuget/v/LiteGraph.svg?style=flat" alt="LiteGraph NuGet version">
<img src="https://img.shields.io/nuget/dt/LiteGraph.svg" alt="LiteGraph NuGet downloads">
</div>
<a href="https://www.nuget.org/packages/LiteGraph/" target="_blank" class="sdk-link" rel="noopener">Install via NuGet</a>
</div>
<div class="sdk-card">
<div class="sdk-header">
<h3>JavaScript</h3>
<span class="sdk-badge">npm</span>
</div>
<p>Use the JavaScript SDK for browser and Node.js applications that call LiteGraph Server.</p>
<div class="sdk-code">
<code>npm i litegraphdb</code>
</div>
<a href="https://www.npmjs.com/package/litegraphdb" target="_blank" class="sdk-link" rel="noopener">View on npm</a>
</div>
<div class="sdk-card">
<div class="sdk-header">
<h3>Python</h3>
<span class="sdk-badge">PyPI</span>
</div>
<p>Use the Python SDK for scripts, ingestion jobs, and application services.</p>
<div class="sdk-code">
<code>pip install litegraph_sdk</code>
</div>
<a href="https://pypi.org/project/litegraph-sdk/" target="_blank" class="sdk-link" rel="noopener">View on PyPI</a>
</div>
<div class="sdk-card">
<div class="sdk-header">
<h3>REST And MCP</h3>
<span class="sdk-badge">HTTP</span>
</div>
<p>Call REST directly — including the chat completion routes — or expose LiteGraph to AI tools through HTTP, TCP, and WebSocket MCP transports. A Postman collection covers the API.</p>
<div class="sdk-links">
<a href="https://github.com/litegraphdb/litegraph/blob/main/docs/REST_API.md" target="_blank" rel="noopener">REST API docs</a>
<a href="https://github.com/litegraphdb/litegraph/blob/main/docs/MCP_API.md" target="_blank" rel="noopener">MCP API docs</a>
<a href="https://github.com/litegraphdb/litegraph/blob/main/LiteGraph.postman_collection.json" target="_blank" rel="noopener">Postman collection</a>
</div>
</div>
</div>
</div>
</section>
<section class="docker-deployment">
<div class="container">
<h2 class="section-title">Docker Deployment</h2>
<p class="section-subtitle">
Three checked-in Compose deployments cover evaluation on SQLite, production on one PostgreSQL server, and a highly available three-node cluster behind a load balancer. Each starts LiteGraph Server, LiteGraph MCP, the dashboard, and a complete observability stack: Prometheus, Loki, Grafana Alloy, and Grafana OSS.
</p>
<div class="docker-content">
<div class="docker-example">
<h3>Server And Dashboard Images</h3>
<pre class="docker-code"><code>docker pull jchristn77/litegraph:v10.0.0
docker pull jchristn77/litegraph-mcp:v10.0.0
docker pull jchristn77/litegraph-ui:v10.0.0
# single-node-sqlite, single-node-postgresql,
# or multi-node for high availability
cd docker/multi-node
docker compose up -d</code></pre>
</div>
<div class="docker-example">
<h3>Observability</h3>
<pre class="docker-code"><code># Prometheus scrapes REST and MCP:
http://localhost:8701/metrics
http://localhost:8705/metrics
# Grafana with provisioned LiteGraph
# and Chat dashboards:
http://localhost:3000
# Logs ship through Grafana Alloy
# into Loki, queryable in Grafana.</code></pre>
</div>
<div class="docker-features">
<h3>What Starts</h3>
<ul>
<li>PostgreSQL 17 with pgvector and one-shot schema and default-data initialization</li>
<li>LiteGraph REST server on port 8701; in the cluster, three nodes behind Nginx with Clutch for coordination and Redis for the node registry</li>
<li>LiteGraph MCP server on ports 8702 (HTTP), 8703 (TCP), and 8704 (WebSocket)</li>
<li>Dashboard on port 3001</li>
<li>Prometheus on port 9090 scraping REST and MCP metrics</li>
<li>Loki and Grafana Alloy for log aggregation</li>
<li>Grafana OSS on port 3000 with provisioned LiteGraph, Chat, and Cluster dashboards</li>
</ul>
<div class="docker-links">
<a href="https://hub.docker.com/r/jchristn77/litegraph" target="_blank" class="btn btn-primary" rel="noopener">Server Image</a>
<a href="https://hub.docker.com/r/jchristn77/litegraph-mcp" target="_blank" class="btn btn-primary" rel="noopener">MCP Image</a>
<a href="https://github.com/litegraphdb/litegraph/tree/main/docker" target="_blank" class="btn btn-secondary" rel="noopener">Compose Files</a>
</div>
</div>
</div>
</div>
</section>
<section id="web-ui" class="web-ui">
<div class="container">
<h2 class="section-title">Dashboard And Administration</h2>
<p class="section-subtitle">
One login, one dashboard: graph management, chat, authorization, request history, API exploration, settings, and cluster operations in six hubs, each with its own tabs.
</p>
<div class="dashboard-gallery" aria-label="LiteGraph dashboard screenshots">
<figure class="dashboard-shot dashboard-shot-featured">
<img src="assets/screenshots/ss7.png" alt="LiteGraph chat window answering questions about an infrastructure graph with a markdown table, tool call timings, model selector, and streaming toggle" width="1916" height="966" loading="lazy" decoding="async">
<figcaption>
<span>Chat With Your Graph</span>
Ask questions in natural language: the model calls graph tools, streams markdown answers, and every turn records TTFT, tokens, and tool timings.
</figcaption>
</figure>
<div class="dashboard-shot-grid">
<figure class="dashboard-shot">
<img src="assets/screenshots/ss1.png" alt="LiteGraph home page with tenant KPIs and a 2D infrastructure topology graph with a node information panel" width="1913" height="957" loading="lazy" decoding="async">
<figcaption>
<span>Graph Workspace</span>
Tenant KPIs, quick actions, and an interactive graph view with node inspection on the home page.
</figcaption>
</figure>
<figure class="dashboard-shot">
<img src="assets/screenshots/ss2.png" alt="LiteGraph node editor with labels, tags, vector metadata, and JSON data fields" width="1915" height="984" loading="lazy" decoding="async">
<figcaption>
<span>Node And Vector Editing</span>
Update labels, tags, vectors, and JSON data without switching tools.
</figcaption>
</figure>
<figure class="dashboard-shot">
<img src="assets/screenshots/ss3.png" alt="LiteGraph request history with a requests-over-time chart, success and failure counts, and telemetry filters" width="1919" height="1021" loading="lazy" decoding="async">
<figcaption>
<span>Request Telemetry</span>
A week of traffic at a glance: success and failure trends, durations, filters, and links to Prometheus and OpenTelemetry.
</figcaption>
</figure>
<figure class="dashboard-shot">
<img src="assets/screenshots/ss4.png" alt="LiteGraph API Explorer with a searchable catalog of 240 operations, request parameters, and a JSON response preview" width="1909" height="970" loading="lazy" decoding="async">
<figcaption>
<span>API Explorer</span>
Browse the full operation catalog by category, fill in parameters, and inspect JSON responses interactively.
</figcaption>
</figure>
<figure class="dashboard-shot">
<img src="assets/screenshots/ss5.png" alt="LiteGraph authorization page listing built-in roles including Chat Admin with scopes, permissions, and resources" width="1915" height="888" loading="lazy" decoding="async">
<figcaption>
<span>Authorization</span>
Manage tenant roles — including the delegable Chat Admin — graph scopes, permissions, and built-in policy boundaries.
</figcaption>
</figure>
<figure class="dashboard-shot dashboard-shot-wide">
<img src="assets/screenshots/ss6.png" alt="LiteGraph 3D graph view of a knowledge base with a node information panel" width="1913" height="923" loading="lazy" decoding="async">
<figcaption>
<span>3D Graph Inspection</span>
Inspect graph structure, node metadata, and connected context in an interactive 3D view.
</figcaption>
</figure>
<figure class="dashboard-shot dashboard-shot-wide">
<img src="assets/screenshots/ss8.png" alt="Provisioned Grafana API Requests dashboard with request rates, latency percentiles, error rates, and authentication outcomes" width="1917" height="1025" loading="lazy" decoding="async">
<figcaption>
<span>Provisioned Grafana Dashboards</span>
Nine per-domain boards ship with the Compose stacks — request rates, latency percentiles, errors, and authentication outcomes out of the box.
</figcaption>
</figure>
</div>
</div>
<div class="web-ui-content">
<div class="web-ui-features">
<h3>Dashboard Features</h3>
<ul>
<li><strong>Graph Management</strong> - Create and manage graphs, nodes, edges, labels, tags, and vectors</li>
<li><strong>Chat</strong> - Talk to your graphs, manage endpoints and health, and review turn telemetry</li>
<li><strong>Authorization</strong> - Manage roles, scopes, immutable built-in roles, and assignments</li>
<li><strong>Request History</strong> - Inspect recent requests, timing, outcomes, JSON, and diagnostics</li>
<li><strong>API Explorer</strong> - Send REST calls and query templates from the browser</li>
<li><strong>Visualization</strong> - Explore graph structure with 2D and 3D views</li>
<li><strong>Settings</strong> - System administrators edit server configuration from a form, and a save reaches every node in a cluster</li>
<li><strong>Cluster</strong> - See every node's state and health, run rolling restarts, and inspect locks and background jobs</li>
</ul>
</div>
<div class="web-ui-deployment">
<h3>Run The Dashboard</h3>
<pre class="docker-code"><code>docker run -d --name litegraph-ui -p 3001:3000 \
-e LITEGRAPH_SERVER=http://localhost:8701 \
jchristn77/litegraph-ui:v10.0.0
# Or run from the monorepo
cd dashboard
npm install
npm run dev</code></pre>
<div class="web-ui-links">
<a href="https://github.com/litegraphdb/litegraph/tree/main/dashboard" target="_blank" class="btn btn-primary" rel="noopener">Dashboard Source</a>
<a href="https://hub.docker.com/r/jchristn77/litegraph-ui" target="_blank" class="btn btn-secondary" rel="noopener">Dashboard Image</a>
</div>
</div>
</div>
</div>
</section>
<footer class="footer">
<div class="container">
<div class="footer-content">
<div class="footer-section">
<img src="https://raw.githubusercontent.com/litegraphdb/litegraph/main/assets/favicon.png" alt="LiteGraph" class="footer-logo">
<p>Multi-modal AI data platform.</p>
<p>Graph, vector, metadata, query, transaction, chat, agents, observability, and high availability in one project.</p>
<p class="footer-license">Free and open source. MIT License.</p>
</div>
<div class="footer-section">
<h4>Documentation</h4>
<ul>
<li><a href="https://github.com/litegraphdb/litegraph/blob/main/README.md" target="_blank" rel="noopener">README</a></li>
<li><a href="https://github.com/litegraphdb/litegraph/blob/main/docs/CHAT.md" target="_blank" rel="noopener">Chat</a></li>
<li><a href="https://github.com/litegraphdb/litegraph/blob/main/docs/DSL.md" target="_blank" rel="noopener">Query Language</a></li>
<li><a href="https://github.com/litegraphdb/litegraph/blob/main/docs/REST_API.md" target="_blank" rel="noopener">REST API</a></li>
<li><a href="https://github.com/litegraphdb/litegraph/blob/main/docs/MCP_API.md" target="_blank" rel="noopener">MCP API</a></li>
<li><a href="https://github.com/litegraphdb/litegraph/blob/main/docs/OBSERVABILITY.md" target="_blank" rel="noopener">Observability</a></li>
<li><a href="https://github.com/litegraphdb/litegraph/blob/main/docs/RBAC.md" target="_blank" rel="noopener">RBAC</a></li>
<li><a href="https://github.com/litegraphdb/litegraph/blob/main/docs/STORAGE.md" target="_blank" rel="noopener">Storage</a></li>
<li><a href="https://github.com/litegraphdb/litegraph/blob/main/docs/CLUSTERING.md" target="_blank" rel="noopener">Clustering</a></li>
</ul>
</div>
<div class="footer-section">
<h4>Packages</h4>
<ul>
<li><a href="https://www.nuget.org/packages/LiteGraph/" target="_blank" rel="noopener">NuGet</a></li>
<li><a href="https://www.npmjs.com/package/litegraphdb" target="_blank" rel="noopener">npm</a></li>
<li><a href="https://pypi.org/project/litegraph-sdk/" target="_blank" rel="noopener">PyPI</a></li>
<li><a href="https://hub.docker.com/r/jchristn77/litegraph" target="_blank" rel="noopener">Docker Server</a></li>
<li><a href="https://hub.docker.com/r/jchristn77/litegraph-mcp" target="_blank" rel="noopener">Docker MCP</a></li>
<li><a href="https://hub.docker.com/r/jchristn77/litegraph-ui" target="_blank" rel="noopener">Docker Dashboard</a></li>
</ul>
</div>
</div>
<div class="footer-bottom">
<p>Copyright 2026 LiteGraph and contributors.</p>
</div>
</div>
</footer>
<script src="script.js"></script>
</body>
</html>