Skip to content

About

Web dashboard for Engram memory infrastructure

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

Β 

History

229 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Engram Dashboard

Web UI for the Engram memory ecosystem.

Ecosystem:Β  Memory API β€’ Code Search β€’ Local Embeddings β€’ Dashboard

Visualize, search, and manage your AI agent's memory. Built with Next.js, Tailwind, and shadcn/ui.


Features

Feature Description
πŸ“Š Overview Key metrics, health status, API usage charts
🧠 Memories Browse, search, filter, and edit stored memories
πŸ“ˆ Analytics Memory trends, type distribution, layer breakdown
πŸ”— Ensemble Multi-model embedding management, coverage stats
πŸ•ΈοΈ Graph D3 force-directed visualization of memory relationships
πŸ‘₯ Users View users and their memory statistics
πŸ”‘ API Keys Create and manage API keys
βš™οΈ Settings Configure LLM providers, vector storage, webhooks
πŸ“š Docs Built-in documentation and quickstart guides

Screenshots

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Engram Dashboard                    πŸ”” βš™οΈ  beaux β–Ό        β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚              β”‚                                              β”‚
β”‚  πŸ“Š Overview β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  🧠 Memories β”‚  β”‚  Total Memories: 1,247                 β”‚  β”‚
β”‚  πŸ“ˆ Analyticsβ”‚  β”‚  Active Users: 3                       β”‚  β”‚
β”‚  πŸ”— Ensemble β”‚  β”‚  API Calls (24h): 4,521                β”‚  β”‚
β”‚  πŸ•ΈοΈ Graph    β”‚  β”‚  Health: βœ… All systems operational    β”‚  β”‚
β”‚  πŸ‘₯ Users    β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚  πŸ”‘ API Keys β”‚                                              β”‚
β”‚  βš™οΈ Settings β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚              β”‚  β”‚         Memory Type Distribution        β”‚  β”‚
β”‚  ─────────── β”‚  β”‚  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ FACT (45%)               β”‚  β”‚
β”‚  πŸ“š Docs     β”‚  β”‚  β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ     PREFERENCE (32%)         β”‚  β”‚
β”‚              β”‚  β”‚  β–ˆβ–ˆβ–ˆβ–ˆ         EVENT (15%)              β”‚  β”‚
β”‚              β”‚  β”‚  β–ˆβ–ˆ           TASK (6%)                β”‚  β”‚
β”‚              β”‚  β”‚  β–ˆ            CONSTRAINT (2%)          β”‚  β”‚
β”‚              β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Quick Start

# Clone
git clone https://github.com/heybeaux/engram-dashboard
cd engram-dashboard

# Install
pnpm install

# Configure
cp .env.example .env.local
# Edit NEXT_PUBLIC_ENGRAM_API_URL if needed

# Run
pnpm dev

Open http://localhost:3000.

Requirements:

  • Node.js 18+
  • Engram API running on localhost:3001

LAN Access

To access the dashboard from other devices on your network:

# Start with host binding
pnpm dev --hostname 0.0.0.0

# Or for production
pnpm build
pnpm start --hostname 0.0.0.0

Then access from any device: http://<your-ip>:3000

Finding your IP:

# macOS/Linux
ifconfig | grep "inet " | grep -v 127.0.0.1

# Windows
ipconfig | findstr "IPv4"

Environment Variables

Variable Default Description
NEXT_PUBLIC_ENGRAM_API_URL http://localhost:3001 Engram API URL
NEXT_PUBLIC_CODE_API_URL http://localhost:3002 engram-code API URL (optional)

For LAN access, set the API URL to your machine's IP:

NEXT_PUBLIC_ENGRAM_API_URL=http://192.168.1.100:3001

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     engram-dashboard                         β”‚
β”‚                                                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚                    Next.js 14 (App Router)             β”‚  β”‚
β”‚  β”‚                                                        β”‚  β”‚
β”‚  β”‚  /dashboard     - Overview metrics                     β”‚  β”‚
β”‚  β”‚  /memories      - Memory browser                       β”‚  β”‚
β”‚  β”‚  /memories/:id  - Memory detail + embeddings tab       β”‚  β”‚
β”‚  β”‚  /analytics     - Trends and charts                    β”‚  β”‚
β”‚  β”‚  /ensemble      - Multi-model management               β”‚  β”‚
β”‚  β”‚  /graph         - D3 memory visualization              β”‚  β”‚
β”‚  β”‚  /users         - User management                      β”‚  β”‚
β”‚  β”‚  /api-keys      - Key management                       β”‚  β”‚
β”‚  β”‚  /settings      - Configuration                        β”‚  β”‚
β”‚  β”‚  /docs          - Documentation                        β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                          β”‚                                   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚              API Clients                              β”‚   β”‚
β”‚  β”‚                                                       β”‚   β”‚
β”‚  β”‚   engram-client.ts    β†’ Engram Memory API (3001)     β”‚   β”‚
β”‚  β”‚   ensemble-client.ts  β†’ Ensemble/Re-embedding API    β”‚   β”‚
β”‚  β”‚   code-client.ts      β†’ engram-code API (3002)       β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                          β”‚                                   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚              UI Components (shadcn/ui)                β”‚   β”‚
β”‚  β”‚                                                       β”‚   β”‚
β”‚  β”‚   Button, Card, Dialog, Table, Badge, Chart...       β”‚   β”‚
β”‚  β”‚   + custom: MemoryCard, GraphView, EnsemblePanel...  β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Memory Browser

Search, filter, and explore stored memories:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Memories                                         + Create  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  πŸ” Search...    Type: [All β–Ό]  Layer: [All β–Ό]  User: beauxβ”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚ πŸ₯ CONSTRAINT                       Score: 0.95     β”‚   β”‚
β”‚  β”‚ I'm allergic to peanuts             2 hours ago     β”‚   β”‚
β”‚  β”‚ Safety-critical β€’ Never evicted                     β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚ ⭐ PREFERENCE                       Score: 0.82     β”‚   β”‚
β”‚  β”‚ I prefer dark mode                  Yesterday       β”‚   β”‚
β”‚  β”‚ Layer: IDENTITY                                     β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚ πŸ“ FACT                             Score: 0.78     β”‚   β”‚
β”‚  β”‚ I live in Vancouver                 3 days ago      β”‚   β”‚
β”‚  β”‚ Layer: IDENTITY                                     β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Memory Detail

Click a memory to view details:

Tab Content
Overview Full content, 5W1H extraction, confidence scores
Embeddings Per-model embedding status (βœ… embedded, ⏳ pending, ❌ failed)
Relationships Linked memories, contradictions
History Creation, updates, access log

Ensemble Overview

Multi-model embedding management:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Ensemble Overview                                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  Model Registry                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Model      β”‚ Status β”‚ Dims β”‚ Weight β”‚ Coverage      β”‚  β”‚
β”‚  β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€  β”‚
β”‚  β”‚  bge-base   β”‚ Active β”‚ 768  β”‚ 1.0    β”‚ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ 100%   β”‚  β”‚
β”‚  β”‚  nomic      β”‚ Active β”‚ 768  β”‚ 0.8    β”‚ β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘ 85%    β”‚  β”‚
β”‚  β”‚  minilm     β”‚ Shadow β”‚ 384  β”‚ 0.5    β”‚ β–ˆβ–ˆβ–ˆβ–‘β–‘β–‘ 50%    β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚                                                             β”‚
β”‚  Re-embedding Jobs                              [Run Now]   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Job #42    β”‚ Complete β”‚ 1,247/1,247 β”‚ 3m 24s        β”‚  β”‚
β”‚  β”‚  Job #41    β”‚ Complete β”‚ 856/856     β”‚ 2m 12s        β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Graph Visualization

Interactive D3 force-directed graph showing memory relationships:

                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚ Allergic to  β”‚
                    β”‚   peanuts    β”‚  πŸ₯ Safety-critical
                    β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
                           β”‚ related
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚            β”‚            β”‚
        β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β–Όβ”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”
        β”‚  Health   β”‚ β”‚  Diet   β”‚ β”‚ Emergency β”‚
        β”‚  records  β”‚ β”‚ prefs   β”‚ β”‚ contacts  β”‚
        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Legend:
  ● CONSTRAINT (red ring)     β—‹ FACT
  ◐ PREFERENCE               β—‘ EVENT
  ⬀ Large = high score       β—‹ Small = low score

Interactions:

  • Drag nodes to reposition
  • Click node to view memory details
  • Scroll to zoom
  • Hover for tooltip

Project Structure

engram-dashboard/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ (dashboard)/
β”‚   β”‚   β”‚   β”œβ”€β”€ dashboard/     # Overview
β”‚   β”‚   β”‚   β”œβ”€β”€ memories/      # Memory browser
β”‚   β”‚   β”‚   β”‚   └── [id]/      # Memory detail
β”‚   β”‚   β”‚   β”œβ”€β”€ analytics/     # Charts & trends
β”‚   β”‚   β”‚   β”œβ”€β”€ ensemble/      # Multi-model view
β”‚   β”‚   β”‚   β”œβ”€β”€ graph/         # D3 visualization
β”‚   β”‚   β”‚   β”œβ”€β”€ users/         # User management
β”‚   β”‚   β”‚   β”œβ”€β”€ api-keys/      # Key management
β”‚   β”‚   β”‚   └── settings/      # Configuration
β”‚   β”‚   └── docs/              # Documentation pages
β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”œβ”€β”€ layout/            # Sidebar, Header
β”‚   β”‚   β”œβ”€β”€ ensemble/          # Multi-model components
β”‚   β”‚   └── ui/                # shadcn/ui components
β”‚   └── lib/
β”‚       β”œβ”€β”€ engram-client.ts   # Memory API client
β”‚       β”œβ”€β”€ ensemble-client.ts # Ensemble API client
β”‚       β”œβ”€β”€ types.ts           # Type definitions
β”‚       └── utils.ts           # Utilities
β”œβ”€β”€ public/
β”œβ”€β”€ next.config.mjs
β”œβ”€β”€ tailwind.config.ts
└── package.json

Development

# Run development server
pnpm dev

# Build for production
pnpm build

# Start production server
pnpm start

# Lint
pnpm lint

# Type check
pnpm tsc --noEmit

API Endpoints Used

Core Memory API (Engram)

Endpoint Method Description
/v1/health GET Health check and metrics
/v1/memories GET List memories
/v1/memories/:id GET Get memory detail
/v1/memories/query POST Semantic search
/v1/memories/graph GET Graph data
/v1/context POST Load context

Ensemble API

Endpoint Method Description Status
/ensemble/status GET Ensemble config βœ…
/ensemble/models GET Model registry πŸ”§ Proposed
/ensemble/coverage GET Coverage stats πŸ”§ Proposed
/v1/reembedding/status GET Job status βœ…
/v1/reembedding/run POST Trigger job βœ…

Endpoints marked "Proposed" gracefully degrade with placeholder data.

Tech Stack

Component Technology
Framework Next.js 14 (App Router)
Styling Tailwind CSS
Components shadcn/ui
Charts Recharts
Graph D3.js
Icons Lucide React

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run pnpm lint and pnpm build
  5. Submit a pull request

License

MIT


See what your AI remembers.

About

Web dashboard for Engram memory infrastructure

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages