Skip to content

Commit dcfdee9

Browse files
vthunderclaude
andcommitted
feat: add web UI and screenshots
- React 19 + Vite + TypeScript UI in ui/ with shadcn/ui components - Pages: Dashboard, Engrams, Episodes, Entities, Search, Admin, Graph - Graph view uses d3-force layout with engram and entity nodes; click an engram node to open a detail popup - Level-8 pyramid summaries used throughout for compact display - Dev server proxies /v1 and /health to localhost:8080 (no CORS config) - Runtime config via ui/public/config.json (no rebuild on change) - Add dashboard and graph screenshots to docs/screenshots/ - Add Web UI quickstart section to README Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent af340c8 commit dcfdee9

59 files changed

Lines changed: 7753 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
**Episodic memory service for AI agents — automatic consolidation, neuroscience-inspired retrieval.**
44

5+
| Dashboard | Graph view |
6+
|-----------|------------|
7+
| ![Dashboard showing engram counts, recent memories, and API health](docs/screenshots/engram-dash.png) | ![Graph view showing engram and entity nodes connected by relationships](docs/screenshots/engram-graph.png) |
8+
59
## The Problem
610

711
AI agents are stateless. When a bot conversation ends, every observation, preference, and decision it accumulated is gone. Naive solutions make this worse: storing raw messages and doing keyword search gives you a log, not a memory. Flat embeddings + cosine similarity retrieves what *matches* your query, not what's *relevant* to it.
@@ -127,6 +131,24 @@ curl -X POST http://localhost:8080/v1/engrams/search \
127131
curl -X POST http://localhost:8080/v1/consolidate
128132
```
129133

134+
## Web UI
135+
136+
A browser UI for browsing engrams, episodes, entities, and the memory graph ships in the `ui/` directory.
137+
138+
```bash
139+
cd ui
140+
npm install
141+
npm run dev
142+
```
143+
144+
Open http://localhost:5173. The dev server proxies `/v1` and `/health` to `http://localhost:8080`, so no CORS configuration is needed.
145+
146+
To point the UI at a different host (e.g. a remote server), edit `ui/public/config.json` — no rebuild required:
147+
148+
```json
149+
{ "apiUrl": "http://your-server:8080", "apiKey": "your-secret-key" }
150+
```
151+
130152
## MCP
131153

132154
Engram can serve as an MCP server alongside the REST API, giving Claude agents direct memory access.

docs/screenshots/engram-dash.png

334 KB
Loading

docs/screenshots/engram-graph.png

468 KB
Loading

ui/.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
node_modules/
2+
dist/
3+
.vite/
4+
*.local

ui/components.json

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"$schema": "https://ui.shadcn.com/schema.json",
3+
"style": "new-york",
4+
"rsc": false,
5+
"tsx": true,
6+
"tailwind": {
7+
"config": "tailwind.config.js",
8+
"css": "src/index.css",
9+
"baseColor": "slate",
10+
"cssVariables": true
11+
},
12+
"aliases": {
13+
"components": "@/components",
14+
"utils": "@/lib/utils",
15+
"ui": "@/components/ui",
16+
"lib": "@/lib",
17+
"hooks": "@/hooks"
18+
},
19+
"iconLibrary": "lucide"
20+
}

ui/index.html

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!doctype html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8" />
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
6+
<title>Engram</title>
7+
</head>
8+
<body>
9+
<div id="root"></div>
10+
<script type="module" src="/src/main.tsx"></script>
11+
</body>
12+
</html>

0 commit comments

Comments
 (0)