Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
</p>

<p align="center">
<a href="#install">Install</a> &bull;
<a href="#quick-start">Quick Start</a> &bull;
<a href="#benchmarks">Benchmarks</a> &bull;
<a href="#vs-competitors">vs Competitors</a> &bull;
Expand All @@ -68,6 +69,27 @@

---

## Install

```bash
npm install -g @agentmemory/agentmemory # once — bare `agentmemory` on PATH
agentmemory # start the memory server on :3111
agentmemory demo # seed sample sessions + prove recall
agentmemory connect claude-code # wire your agent (also: codex, cursor, gemini-cli, ...)
```

Or via `npx` (no install):

```bash
npx @agentmemory/agentmemory
```

Heads-up — npx caches per version. If a bare `npx @agentmemory/agentmemory` serves an older release, force the latest with `npx -y @agentmemory/agentmemory@latest`, or clear the cache once with `rm -rf ~/.npm/_npx` (macOS/Linux; on Windows delete `%LOCALAPPDATA%\npm-cache\_npx`). The first npx run from v0.9.16+ prompts to install globally inline so the bare `agentmemory` command works everywhere afterwards.

Full options at [Quick Start](#quick-start) below. Agent-specific wiring at [Works with every agent](#works-with-every-agent).

---

<h2 id="works-with-every-agent"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-agents.svg"><img src="assets/tags/section-agents.svg" alt="Works with every agent" height="32" /></picture></h2>

agentmemory works with any agent that supports hooks, MCP, or REST API. All agents share the same memory server.
Expand Down Expand Up @@ -321,6 +343,28 @@ npx @agentmemory/agentmemory demo

Open `http://localhost:3113` to watch the memory build live.

### Recommended: install globally

`npx` caches per-version. If you ran `npx @agentmemory/agentmemory@0.9.14` last week, a bare `npx @agentmemory/agentmemory` may serve the stale 0.9.14 from `~/.npm/_npx/`, not the latest release. Install once and the bare `agentmemory` command works everywhere:

```bash
npm install -g @agentmemory/agentmemory
agentmemory # start the server (same as the npx form)
agentmemory stop # tear it down
agentmemory remove # uninstall everything we created
agentmemory connect claude-code # wire one agent
agentmemory doctor # interactive diagnostics + fix prompts
```

From v0.9.16 onward, the first npx run prompts you to install globally inline — answer `Y` once and you're set. If you skip, fall back to either of these for a fresh fetch:

```bash
npx -y @agentmemory/agentmemory@latest # forces latest from npm (cross-platform)
rm -rf ~/.npm/_npx && npx @agentmemory/agentmemory # macOS/Linux only (POSIX shell)
```

On Windows / PowerShell, the equivalent cache clear is `Remove-Item -Recurse -Force "$env:LOCALAPPDATA\npm-cache\_npx"` — the `npx -y ...@latest` form above is the cross-platform option.

### Session Replay

Every session agentmemory records is replayable. Open the viewer, pick the **Replay** tab, and scrub through the timeline: prompts, tool calls, tool results, and responses render as discrete events with play/pause, speed control (0.5×–4×), and keyboard shortcuts (space to toggle, arrows to step).
Expand Down
19 changes: 10 additions & 9 deletions src/cli/splash.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,18 @@ function getTerminalWidth(): number {

const TAGLINE = "Persistent memory for AI coding agents";

// Block-art "agentmemory" lettering. Hand-drawn in box-drawing chars so
// we don't need a figlet dependency. Each row is 70 columns wide which
// gives ~25 cols of breathing room on the 120-col tier.
// "agentmemory" rendered in figlet's standard font (verified output —
// regenerate via `figlet agentmemory` if you change the wordmark). Each
// row is exactly 70 columns wide so the banner aligns cleanly inside
// the 2-col left margin we add below.
function fullBanner(version: string): string {
const logo = [
" _ ",
" __ _ __ _ ___ _ _ | |_ _ __ ___ _ __ ___ ___ _ __ _ _ ",
" / _` |/ _` |/ _ \\ '_\\| __| ' \\/ -_) ' \\ _ \\ / _ \\| '__| | | | ",
"| (_| | (_| | __/ | || |_| | | \\___| | | | | | (_) | | | |_| | ",
" \\__,_|\\__, |\\___|_| \\__|_| |_| |_| |_| |_|\\___/|_| \\__, | ",
" |___/ |___/ ",
" _ ",
" __ _ __ _ ___ _ __ | |_ _ __ ___ ___ _ __ ___ ___ _ __ _ _ ",
" / _` |/ _` |/ _ \\ '_ \\| __| '_ ` _ \\ / _ \\ '_ ` _ \\ / _ \\| '__| | | |",
"| (_| | (_| | __/ | | | |_| | | | | | __/ | | | | | (_) | | | |_| |",
" \\__,_|\\__, |\\___|_| |_|\\__|_| |_| |_|\\___|_| |_| |_|\\___/|_| \\__, |",
" |___/ |___/ ",
];
const lines: string[] = ["", ...logo.map((line) => " " + accent(line))];
lines.push("");
Expand Down
43 changes: 32 additions & 11 deletions website/components/Agents.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,16 @@ const FEATURED: Agent[] = [
pitch: "12 hooks + MCP + skills",
sub: "FIRST-CLASS PLUGIN",
},
{
id: "codex",
name: "Codex CLI",
from: "OpenAI",
logo: "https://github.com/openai.png",
accent: "#10A37F",
href: "https://github.com/openai/codex",
pitch: "6 hooks + MCP · native plugin",
sub: "NATIVE PLUGIN",
},
{
id: "openclaw",
name: "OpenClaw",
Expand All @@ -45,14 +55,24 @@ const FEATURED: Agent[] = [
sub: "FIRST-PARTY INTEGRATION",
},
{
id: "codex",
name: "Codex CLI",
from: "OpenAI",
logo: "https://github.com/openai.png",
accent: "#10A37F",
href: "https://github.com/openai/codex",
pitch: "TOML mcp_servers · one-liner",
sub: "MCP NATIVE",
id: "pi",
name: "pi",
from: "pi",
logo: "https://raw.githubusercontent.com/rohitg00/agentmemory/main/assets/agents/pi.svg",
accent: "#FF6B35",
href: "https://github.com/rohitg00/agentmemory/tree/main/integrations/pi",
pitch: "Native plugin + MCP",
sub: "NATIVE PLUGIN",
},
{
id: "openhuman",
name: "OpenHuman",
from: "tinyhumansai",
logo: "https://raw.githubusercontent.com/tinyhumansai/openhuman/main/app/src-tauri/icons/128x128.png",
accent: "#9b5cf6",
href: "https://github.com/tinyhumansai/openhuman",
pitch: "Native Memory trait backend (Rust)",
sub: "NATIVE BACKEND",
},
];

Expand Down Expand Up @@ -204,11 +224,12 @@ export function Agents() {
<header className="section-head">
<span className="section-eyebrow">WORKS WITH</span>
<h2 id="agents-title" className="section-title">
FOUR FIRST-PARTY.<br />REST MCP-NATIVE.
SIX FIRST-PARTY.<br />REST MCP-NATIVE.
</h2>
<p className="section-lede">
AGENTMEMORY SHIPS PLUGINS FOR CLAUDE CODE, OPENCLAW, HERMES, AND
CODEX. EVERY OTHER MCP CLIENT GETS IT FOR FREE.
NATIVE PLUGINS FOR CLAUDE CODE, CODEX CLI, OPENCLAW, HERMES, PI, AND
OPENHUMAN. EVERY OTHER MCP CLIENT GETS IT FOR FREE. `agentmemory
connect &lt;agent&gt;` AUTO-WIRES THEM ALL.
</p>
</header>

Expand Down
12 changes: 6 additions & 6 deletions website/components/CommandCenter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,12 @@ const PANELS: Record<
launch: "open http://localhost:3113",
},
console: {
title: "iii CONSOLE · OPTIONAL",
title: "iii CONSOLE · FIRST-CLASS",
blurb:
"agentmemory runs on the iii engine, so the official iii console gives you a deeper cut when you need it. Launch on :3114 so the viewer keeps :3113.",
"agentmemory runs on the iii engine, so the official iii console gives engine-level visibility: every function call, every worker, every queue, every trace. From v0.9.16 the agentmemory CLI prompts to install iii console alongside the engine. Launch on :3114 so the viewer keeps :3113.",
bullets: [
"33 REGISTERED FUNCTIONS · INVOKE ANY DIRECTLY WITH JSON",
"49 HTTP TRIGGERS · REPLAY REST ENDPOINTS",
"REGISTERED FUNCTIONS · INVOKE ANY DIRECTLY WITH JSON",
"107 HTTP ENDPOINTS · REPLAY ANY REST CALL",
"WEBSOCKET STREAM MONITOR · WATCH FRAMES LIVE",
"OTEL EXPORTER = MEMORY (DEFAULT) · TRACES STAY LOCAL",
"NO AUTH · BIND TO 127.0.0.1 ONLY",
Expand Down Expand Up @@ -101,8 +101,8 @@ export function CommandCenter() {
</h2>
<p className="section-lede">
AGENTMEMORY SHIPS A REAL-TIME VIEWER FOR YOUR MEMORIES AND AN
ENGINE-LEVEL CONSOLE FOR WHEN YOU WANT TO SEE EVERY FUNCTION, TRIGGER,
AND OTEL SPAN.
ENGINE-LEVEL CONSOLE FOR EVERY FUNCTION, TRIGGER, AND OTEL SPAN.
BOTH ARE FIRST-CLASS — INSTALLED INLINE BY THE CLI ON FIRST RUN.
</p>
</header>
<div className={styles.tabs} role="tablist" aria-label="Command center">
Expand Down
4 changes: 3 additions & 1 deletion website/components/Compare.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@ import styles from "./Compare.module.css";
const ROWS = [
["RETRIEVAL R@5", "95.2%", "81.4%", "73.8%", "78.1%"],
["EXTERNAL DEPS", "0", "2 (Qdrant, Neo4j)", "1 (Postgres)", "1 (Neo4j)"],
["MCP TOOLS", "44", "12", "18", "9"],
["REST ENDPOINTS", "107", "—", "—", "—"],
["MCP TOOLS", "51", "12", "18", "9"],
["AUTO-HOOKS", "12", "0", "0", "0"],
["NATIVE PLUGINS", "6 (Claude/Codex/Cursor/Gemini/OpenClaw/Hermes/pi/OpenHuman)", "—", "—", "—"],
["OPEN SOURCE", "YES (APACHE-2.0)", "YES", "YES", "YES"],
];

Expand Down
2 changes: 1 addition & 1 deletion website/components/Hero.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export function Hero() {
</p>
<div className={styles.cta}>
<a href="#install" className="btn btn--accent">
START IN 60 SECONDS
START IN 30 SECONDS
</a>
<a href="#live" className="btn btn--ghost">
SEE IT MOVE
Expand Down
27 changes: 17 additions & 10 deletions website/components/Install.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,28 @@ interface Cmd {

const SIMPLE: Cmd[] = [
{
label: "1. START THE MEMORY SERVER",
cmd: "npx @agentmemory/agentmemory",
hint: "RUNS ON :3111 · VIEWER ON :3113",
label: "1. INSTALL ONCE",
cmd: "npm install -g @agentmemory/agentmemory",
hint: "PUTS `agentmemory` ON YOUR PATH · STEPS 2/3 NEED THIS",
},
{
label: "2. SEE SEMANTIC RECALL INSTANTLY",
cmd: "npx @agentmemory/agentmemory demo",
hint: "SEEDS 3 SESSIONS · PROVES HYBRID SEARCH WORKS",
label: "2. START THE MEMORY SERVER",
cmd: "agentmemory",
hint: "RUNS ON :3111 · VIEWER ON :3113",
},
{
label: "3. OPEN THE LIVE VIEWER",
cmd: "open http://localhost:3113",
hint: "SESSIONS · MEMORIES · GRAPH · HEALTH",
label: "3. SEE SEMANTIC RECALL INSTANTLY",
cmd: "agentmemory demo",
hint: "SEEDS 3 SESSIONS · PROVES HYBRID SEARCH WORKS",
},
];

const NPX_FALLBACK: Cmd = {
label: "PREFER ZERO-INSTALL? USE NPX",
cmd: "npx @agentmemory/agentmemory",
hint: "REPLACES STEPS 1+2 · USES NPX CACHE — SEE README FOR CAVEAT",
};

function CopyBox({ label, cmd, hint }: Cmd) {
const [copied, setCopied] = useState(false);
const [text, setText] = useState(hint);
Expand Down Expand Up @@ -67,7 +73,7 @@ export function Install() {
<header className="section-head">
<span className="section-eyebrow">SHIP IT</span>
<h2 id="install-title" className="section-title">
THREE COMMANDS.<br />ANY AGENT.
ONE INSTALL.<br />ANY AGENT.
</h2>
<p className="section-lede">
RUNS ON YOUR MACHINE. DATA STAYS LOCAL. BRING YOUR CLAUDE SUBSCRIPTION
Expand All @@ -78,6 +84,7 @@ export function Install() {
{SIMPLE.map((c) => (
<CopyBox key={c.cmd} {...c} />
))}
<CopyBox {...NPX_FALLBACK} />
<AgentInstall />
</div>
<div className={styles.cta}>
Expand Down
6 changes: 3 additions & 3 deletions website/lib/generated-meta.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"version": "0.9.10",
"version": "0.9.15",
"mcpTools": 51,
"hooks": 12,
"restEndpoints": 121,
"testsPassing": 898,
"generatedAt": "2026-05-12T22:49:51.241Z"
"testsPassing": 975,
"generatedAt": "2026-05-15T17:39:28.184Z"
}