🖥️ omem-ui
Frontend for ourmem — Shared Memory That Never Forgets
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.
|
|
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.
| 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 |
git clone https://github.com/ourmem/omem-ui.git
cd omem-ui
bun installWith real backend:
echo 'NEXT_PUBLIC_OMEM_API_URL=https://api.ourmem.ai' > .env.local
bun run dev # → http://localhost:8112With 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| 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 |
bun run build
PORT=8112 HOSTNAME=0.0.0.0 bun run startdocker build -t omem-ui .
docker run -d -p 8112:8112 \
-e NEXT_PUBLIC_OMEM_API_URL=https://api.ourmem.ai \
omem-ui[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.targetProduction config at deploy/nginx/ourmem.conf:
cp deploy/nginx/ourmem.conf /etc/nginx/conf.d/
nginx -t && nginx -s reloadsrc/
├── 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)
| Page | Route | Description |
|---|---|---|
| Landing | / |
Marketing homepage with 6 sections |
| Memory Space | /space |
API key login gate |
| Dashboard | /space/dashboard |
Memory management, visualizations, Space & Sharing |
| 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 |
| 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) |
- ourmem/omem — Backend: Rust server + plugins for OpenCode, Claude Code, OpenClaw, MCP
- ourmem.ai — Live site
- api.ourmem.ai — Hosted API