Standalone graph viewer frontend/runtime for AutoMem.
This repository is the source of truth for the visualizer service. The automem API keeps /viewer compatibility routes as the canonical entrypoint: the API bootstraps users into this standalone app, preserves URL hash tokens, and passes server=<automem-origin> so the browser calls the AutoMem API instead of any Railway-private host.
| Whole-store search | Memory inspector |
|---|---|
![]() |
![]() |
- Node.js 20+
- npm 10+
npm ci
npm run devBuild and run production static server:
npm run build
npm run startDefault runtime URL: http://localhost:3000
Copy .env.example and set values as needed:
VITE_API_TARGET=...for local dev proxy target (optional)VITE_BASE_PATH=/viewer/when building for non-root subpath hosting (optional)
Production Railway deployments normally do not need viewer environment variables. The viewer stores only browser-side API config (automem_server, automem_token) and should never receive database credentials or Railway private-network URLs.
Do not set these on the production viewer service:
VITE_API_TARGET- dev-server proxy target only; production browser API calls use?server=<automem-origin>or saved server configVITE_BASE- not used; the supported build-base variable isVITE_BASE_PATHVITE_ENABLE_HAND_CONTROLS- obsolete; hand controls are runtime UI state
- Recommended Railway source:
ghcr.io/verygoodplugins/automem-graph-viewer:stable - Fallback source-linked Railway builds:
railway.tomluses the repoDockerfile - Runtime server:
server.mjsservesdist/with immutable cache headers on/assets/*
Recommended AutoMem Railway project layout:
| Service | Source | Public? | Notes |
|---|---|---|---|
automem |
ghcr.io/verygoodplugins/automem:stable |
Yes | Owns auth, API routes, data access, and /viewer/* bootstrap |
automem-graph-viewer |
ghcr.io/verygoodplugins/automem-graph-viewer:stable |
Yes | Static React/Three.js UI; no DB secrets |
mcp-automem |
ghcr.io/verygoodplugins/mcp-automem:stable |
Yes | Remote MCP bridge for hosted clients |
falkordb |
falkordb/falkordb:latest |
No | Private graph database |
qdrant |
qdrant/qdrant:latest or Qdrant Cloud |
No/External | Vector store |
Set these variables on the automem API service after the viewer domain exists:
GRAPH_VIEWER_URL=https://<viewer-domain>
VIEWER_ALLOWED_ORIGINS=https://<viewer-domain>Browser-to-API traffic must use the API public domain. Railway private domains are only reachable by Railway services, not by code running in a user's browser.
Keep the standalone viewer service served at /. Only set VITE_BASE_PATH=/viewer/ when the built assets are actually served from the AutoMem API origin under /viewer/.
- CI workflow (
.github/workflows/ci.yml):npm cinpm run lintnpm run build- runtime smoke check (
/and/assets/*cache headers)
- Release Please workflow (
.github/workflows/release-please.yml):- manages version bumps/changelog/releases from conventional commits
- Docker Build workflow (
.github/workflows/docker-build.yml):- publishes
latestonmain - publishes version tags and
stableon release tags such asautomem-graph-viewer-v0.3.0
- publishes
Use conventional commits for clean release notes:
feat:-> minor bumpfix:-> patch bumpfeat!:/BREAKING CHANGE:-> major bump



