Skip to content

ourmem/omem-ui

Repository files navigation

🖥️ omem-ui
Frontend for ourmem — Shared Memory That Never Forgets

CI Live License Stars


What is This

The web frontend for ourmem — a marketing site and memory management dashboard for AI agent persistent memory.

Live at ourmem.ai — enter your API key at ourmem.ai/space to manage memories.

Landing Page

  • Hero with platform animation (OpenCode, Claude Code, OpenClaw, MCP)
  • Capabilities, Collective Intelligence, Platforms, Security, FAQ
  • EN / ZH bilingual, dark / light / system theme

Memory Space Dashboard

  • Memory list with L0→L1→L2 progressive preview
  • Tier chart, Weibull decay curve, relation graph, Sankey flow
  • Space management, share/pull/unshare, auto-share rules
  • Search with 11-stage retrieval trace

Architecture

Browser
  │
  ├── Page requests
  │   → ourmem.ai → Nginx (443) → Next.js SSR (:8112)
  │
  └── API requests (same-origin proxy, zero CORS)
      → ourmem.ai/api/v1/* → Next.js rewrites → api.ourmem.ai → Rust backend (:8080)

The frontend proxies all API requests through Next.js rewrites (/api/*api.ourmem.ai/*), eliminating CORS entirely. Direct API access via api.ourmem.ai remains fully functional for curl, plugins, and agents.

Tech Stack

Layer Technology
Framework Next.js 15 (App Router)
UI Components shadcn/ui v4 (base-nova, @base-ui/react)
Styling Tailwind CSS v4 (CSS-first, oklch)
Charts Recharts + D3.js (force-directed, Sankey)
State Zustand
i18n next-intl (EN / ZH)
Theme next-themes (dark / light / system)
Mock MSW v2 (dev mode Service Worker)
Runtime Bun

Quick Start

git clone https://github.com/ourmem/omem-ui.git
cd omem-ui
bun install

With real backend:

echo 'NEXT_PUBLIC_OMEM_API_URL=https://api.ourmem.ai' > .env.local
bun run dev    # → http://localhost:8112

With mock data (no backend needed):

cat > .env.local << EOF
NEXT_PUBLIC_OMEM_API_URL=http://localhost:8080
NEXT_PUBLIC_ENABLE_MOCKS=true
EOF
bun run dev    # → http://localhost:8112

Environment Variables

Variable Default Description
NEXT_PUBLIC_OMEM_API_URL http://localhost:8080 Backend API URL
NEXT_PUBLIC_ENABLE_MOCKS false Enable MSW mock data (dev only)
PORT 8112 Server listen port
HOSTNAME 0.0.0.0 Server listen address

Deploy

Production build

bun run build
PORT=8112 HOSTNAME=0.0.0.0 bun run start

Docker

docker build -t omem-ui .
docker run -d -p 8112:8112 \
  -e NEXT_PUBLIC_OMEM_API_URL=https://api.ourmem.ai \
  omem-ui

systemd

[Unit]
Description=OMEM UI
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/ourmem-ui
Environment=PORT=8112
Environment=HOSTNAME=0.0.0.0
Environment=NODE_ENV=production
ExecStart=/root/.bun/bin/bun run start
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Nginx

Production config at deploy/nginx/ourmem.conf:

cp deploy/nginx/ourmem.conf /etc/nginx/conf.d/
nginx -t && nginx -s reload

Project Structure

src/
├── app/[locale]/
│   ├── (marketing)/          # Landing page (6 sections)
│   └── (dashboard)/          # Memory Space (auth + dashboard)
├── components/
│   ├── marketing/            # Hero, Capabilities, Collective Intelligence, Platforms, Security, FAQ
│   ├── dashboard/            # Stats, decay curve, relation graph, Sankey, spaces, search, CRUD
│   ├── layout/               # Header, Footer
│   └── ui/                   # shadcn/ui (16 components)
├── lib/api/client.ts         # OmemClient (35+ endpoints)
├── stores/                   # Zustand (auth, memory, space)
├── types/                    # TypeScript types matching backend API
├── mocks/                    # MSW handlers + fixtures
└── i18n/                     # next-intl (EN/ZH)

Pages

Page Route Description
Landing / Marketing homepage with 6 sections
Memory Space /space API key login gate
Dashboard /space/dashboard Memory management, visualizations, Space & Sharing

Key Features

Feature Implementation
Platform animation Hero cycles through OpenCode → Claude Code → OpenClaw → MCP with highlight pulse
L0/L1/L2 preview Progressive memory reveal: summary → overview → full content
Tier visualization Recharts donut chart — Core (gold) / Working (blue) / Peripheral (gray)
Weibull decay curve Real-time S(t) = exp(-(t/λ)^β) with tier-specific parameters
Retrieval trace 11-stage pipeline waterfall visualization
Relation graph D3 force-directed with supersedes/supports/contradicts/shared_from edges
Sharing Sankey D3 Sankey diagram showing knowledge flow between Spaces
Space management CRUD + members + auto-share rules with importance thresholds
Batch share Multi-select + partial failure UX
Memory Insight Category pie + importance histogram + timeline stacked area + tag cloud + relation graph
Memory Import File upload (memory/session/markdown/jsonl) + 3-phase pipeline tracking + intelligence trigger

Documentation

Document Description
docs/AGENT-CONTEXT.md AI agent onboarding guide — design decisions, pitfalls, deploy flow
deploy/nginx/ourmem.conf Production Nginx config
public/SKILL.md Agent bootstrap installer (served at ourmem.ai/SKILL.md)

Related

License

Apache-2.0


Shared Memory That Never Forgets.
ourmem.ai · GitHub

About

OMEM — Shared Memory That Never Forgets. Frontend for ourmem AI agent memory system.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors