A local vector memory explorer with a modern UI inspired by Supabase and Pinecone. Browse, search, visualize and manage the SQLite-vec database created by MCP Memory Service . I'm a sysadmin by trade, not a developer. My coding background is some C++ from many years ago. I built memviz entirely through vibe coding with Claude Code as a way to test AI-assisted development workflows. The whole thing
Add this skill
npx mdskills install pfillion42/memvizComprehensive vector memory visualization tool with excellent documentation and security design
1<p align="center">2 <img src="memviz.svg" alt="memviz logo" width="120" />3</p>45<h1 align="center">memviz</h1>67<p align="center">8 A local vector memory explorer with a modern UI inspired by Supabase and Pinecone.9 <br />10 Browse, search, visualize and manage the SQLite-vec database created by11 <a href="https://github.com/doobidoo/mcp-memory-service">MCP Memory Service</a>.12</p>1314<p align="center">15 <a href="https://github.com/pfillion42/memviz/actions"><img src="https://github.com/pfillion42/memviz/actions/workflows/staging.yml/badge.svg" alt="CI" /></a>16 <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License: MIT" /></a>17</p>1819---2021## A quick note2223I'm a sysadmin by trade, not a developer. My coding background is some C++ from many years ago. I built memviz entirely through **vibe coding** with Claude Code as a way to test AI-assisted development workflows. The whole thing was built in about two days.2425It works, it has 349 tests, and I use it daily. But the code reflects the fact that an AI wrote most of it while I steered. If you spot rough edges, odd patterns, or things that could be done better, I'd genuinely appreciate the feedback. PRs and issues are very welcome.2627---2829## Features3031- **Dashboard** - Overview with stats, top accessed memories, and usage charts (day/week/month)32- **Memory list** - Browse, filter (type, tags, date, quality), full-text search, and vector similarity search33- **Memory detail** - View and edit content, metadata, tags, and quality rating34- **Timeline** - Chronological view grouped by day with type badges35- **Duplicates** - Detect near-duplicate memories using vector similarity with adjustable threshold36- **Tags management** - Rename, delete, and merge tags across all memories37- **Stale memories** - Find old, low-quality memories to clean up38- **2D embedding projection** - UMAP scatter plot of your entire memory space with interactive zoom/pan39- **Semantic clustering** - Automatic grouping by vector proximity with cluster visualization40- **Association graph** - Force-directed graph of memory relationships41- **Bulk operations** - Select multiple memories for batch delete, tag, or retype42- **Import / Export** - JSON import and export of memories43- **Dark / Light theme** - Toggle with system preference detection44- **EN / FR language toggle** - Full interface translation with localStorage persistence45- **Keyboard shortcuts** - `j`/`k` navigation, `/` search, `?` help, and more46- **Security** - Helmet headers, rate limiting, optional API token, Zod validation, localhost-only binding4748## Screenshots49505152<details>53<summary><strong>Memories</strong> - Browse, search, filter, and manage</summary>545556</details>5758<details>59<summary><strong>Timeline</strong> - Chronological view grouped by day</summary>606162</details>6364<details>65<summary><strong>Duplicates</strong> - Detect near-duplicates by vector similarity</summary>666768</details>6970<details>71<summary><strong>Graph</strong> - Association graph with type-colored nodes</summary>727374</details>7576## Prerequisites7778- **Node.js** 20 or later79- A **SQLite-vec database** created by [MCP Memory Service](https://github.com/doobidoo/mcp-memory-service). This is the database memviz reads from. If you use Claude Code or Claude Desktop with the memory MCP server, you already have one.8081## Quick start8283```bash84# Clone the repo85git clone https://github.com/pfillion42/memviz.git86cd memviz8788# Backend89cd server90npm install91cp .env.example .env92# Edit .env and set MEMORY_DB_PATH to your SQLite-vec database path93npm run dev9495# Frontend (in another terminal)96cd client97npm install98npm run dev99```100101Open [http://localhost:5173](http://localhost:5173) in your browser.102103### Windows desktop shortcut (optional)104105The repo includes PowerShell launcher scripts and an `.ico` icon file for a one-click desktop experience on Windows:106107```powershell108# Start both servers (minimized) + open browser109.\start-memviz.bat110111# Stop both servers112.\stop-memviz.bat113```114115To create a desktop shortcut: right-click on `start-memviz.bat` > **Send to** > **Desktop (create shortcut)**, then change the icon to `memviz.ico` from the repo root.116117The start script detects if servers are already running, waits for health checks (60s timeout), and opens your browser automatically.118119## Configuration120121All configuration is done through environment variables in `server/.env`:122123| Variable | Required | Default | Description |124|----------|----------|---------|-------------|125| `MEMORY_DB_PATH` | Yes | - | Path to the SQLite-vec database from MCP Memory Service |126| `MEMORY_DB_READONLY` | No | `true` | Open database in read-only mode (`false` to enable editing) |127| `CORS_ORIGINS` | No | `http://localhost:5173` | Comma-separated allowed origins |128| `ACCESS_LOG_DB_PATH` | No | Derived from `MEMORY_DB_PATH` | Path for the access log database (writable) |129| `API_TOKEN` | No | - | If set, requires `Authorization: Bearer <token>` on all API requests |130| `HOST` | No | `127.0.0.1` | Listen address (localhost only by default) |131132## Architecture133134```135memviz/136├── server/ # Express + TypeScript API137│ ├── src/138│ │ ├── routes/ # REST endpoints under /api/139│ │ ├── middleware/140│ │ └── index.ts141│ └── tests/ # Vitest (213 tests)142├── client/ # React + Vite + TypeScript143│ ├── src/144│ │ ├── pages/ # 10 pages145│ │ ├── components/ # 11 reusable components146│ │ ├── hooks/ # Custom React Query hooks147│ │ └── App.tsx148│ └── tests/ # Vitest + Testing Library (136 tests)149└── .github/workflows/ # CI: lint, typecheck, test, build150```151152**Stack**: Express, better-sqlite3, sqlite-vec, umap-js, Zod | React 18, React Query, React Router, react-force-graph-2d, Vite, Vitest153154## Tests155156```bash157# Run all backend tests158cd server && npm test159160# Run all frontend tests161cd client && npm test162163# Watch mode164cd server && npm run test:watch165cd client && npm run test:watch166```167168349 tests total (213 server + 136 client).169170## Security171172- Binds to `127.0.0.1` by default (not exposed to the network)173- CORS restricted to configured origins174- Helmet HTTP security headers175- Rate limiting (100 requests / 15 min)176- Optional Bearer token authentication177- Zod schema validation on all write endpoints178- FTS5 query sanitization and LIKE pattern escaping179- JSON body size limit (5 MB)180181## Keyboard shortcuts182183| Key | Action |184|-----|--------|185| `j` / `k` | Navigate down / up in lists |186| `/` | Focus search bar |187| `Enter` | Open selected memory |188| `Escape` | Close modal / clear selection |189| `?` | Show keyboard shortcuts help |190191## Acknowledgments192193memviz exists because of [MCP Memory Service](https://github.com/doobidoo/mcp-memory-service) by doobidoo, which creates and manages the SQLite-vec database that memviz explores. Huge thanks for building it.194195Built with [umap-js](https://github.com/PAIR-code/umap-js), [sqlite-vec](https://github.com/asg017/sqlite-vec), [React](https://react.dev), [Express](https://expressjs.com), [Vite](https://vite.dev), [React Query](https://tanstack.com/query), [react-force-graph-2d](https://github.com/vasturiano/react-force-graph-2d), and [Vitest](https://vitest.dev).196197## Contributing198199See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.200201## License202203[MIT](LICENSE)204
Full transparency — inspect the skill content before installing.