Built on EverMemOS - Open-source AI memory infrastructure
A demonstration web application showcasing EverMem's AI memory infrastructure through an interactive Q&A experience with "A Game of Thrones" (Book 1).
Ask questions about the book and watch two AI responses stream side-by-side: one with memory using EverMem to retrieve relevant passages, and one without memory using only the LLM's training data. See the difference memory makes.
- Side-by-Side Comparison: Watch two responses stream simultaneously - with and without memory context
- Memory-Grounded Responses: See exactly which book passages are used to answer questions
- Real-time Streaming: Token-by-token AI response streaming via SSE
- Interactive Memory Chips: Hover over memory chips to see full excerpt details and metadata
- Follow-up Suggestions: AI-generated follow-up questions after each response
- Dark Theme UI: Modern, clean interface inspired by EverMind's design
- Frontend: React 18 + TypeScript + Vite
- Backend: Node.js + Express + Bun
- AI: Claude Haiku (via OpenRouter)
- Memory: EverMind Cloud API
- Bun (latest version)
- OpenAI API key (or OpenRouter API key)
- EverMind Cloud API key (apply at EverMemOS Cloud)
# Clone the repository
git clone <repository-url>
cd evermem-story-demo
# Install dependencies
bun installBackend (backend/.env):
cp backend/.env.example backend/.envEdit backend/.env:
OPENAI_API_KEY=your-openrouter-api-key
OPENAI_MODEL=anthropic/claude-3-haiku
PORT=3001
FRONTEND_URL=http://localhost:3000
# EverMind Cloud
USE_EVERMEMOS=true
EVERMEMOS_URL=https://api.evermind.ai
EVERMEMOS_API_KEY=your-evermind-api-keyFrontend (frontend/.env):
cp frontend/.env.example frontend/.envThe default VITE_API_URL=http://localhost:3001 should work for local development.
# Start both frontend and backend
bun run dev- Frontend: http://localhost:3000
- Backend: http://localhost:3001
Before using the demo, you need to load novel content into EverMind Cloud.
A sample file with 5 chapters is included for testing:
bun run load-novel-cloud \
--file sample/got-sample.txt \
--book-title "A Game of Thrones" \
--book-abbrev "got" \
--api-key YOUR_EVERMIND_API_KEYFor the complete experience, obtain the full novel text file and load it:
bun run load-novel-cloud \
--file path/to/got.txt \
--book-title "A Game of Thrones" \
--book-abbrev "got" \
--api-key YOUR_EVERMIND_API_KEYThe script:
- Detects chapter boundaries automatically (PROLOGUE, character names in caps)
- Splits text into paragraphs
- Uploads to EverMind Cloud with metadata
- Supports resumption if interrupted
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # UI components
│ │ ├── hooks/ # Custom React hooks
│ │ ├── services/ # API client
│ │ └── types/ # TypeScript types
│ └── public/ # Static assets
├── backend/ # Express backend
│ ├── src/
│ │ ├── routes/ # API endpoints
│ │ ├── services/ # Business logic
│ │ └── utils/ # Utilities
├── scripts/ # CLI tools
│ ├── load-novel-cloud.ts # Load novel to EverMind
│ └── clear-memories-cloud.ts
└── sample/ # Sample data for testing
└── got-sample.txt # 5 chapters from Book 1
# Start dev servers
bun run dev
# Frontend only
bun run dev:frontend
# Backend only
bun run dev:backend
# Type check
bun run type-check
# Lint
bun run lintMIT
- EverMind for the memory infrastructure
- George R.R. Martin for "A Song of Ice and Fire"
