You forget — AgentMem remembers. 🧠

Simple memory API for AI agents. Pay with USDC or Stripe.
30 seconds to first API call. No signup, no friction.

✨ NEW Pay with USDC on Base. No signup, no API key. Learn more ↓

30 seconds to first API call — that's 60x faster than self-hosted solutions. No Docker. No git. No OpenAI keys. Just curl and go.

💡 Token-efficient by design: Fetch summaries first, full content on demand. Save 65,000+ tokens/day vs loading everything into context.
🎁 Store 10,000 keys FREE
No credit card. No catch. Just email → API key → start storing.
Worth $50/mo elsewhere. Yours free forever.
✅ Never expires ✅ No usage limits ✅ Upgrade anytime
🚀 Get Your Free API Key (10,000 credits)
✅ No credit card • ✅ 30 seconds to first API call
Enter your email → API key sent instantly → Start storing
or try the playground first (no signup)
Why AgentMem? At a Glance
30-second setup
No Docker, no config, just PUT your data
Pay as you go
$0.01/10k ops, USDC or card
Cloud-native
Works from any device, any language
Fast & reliable
Avg 107ms latency, 99.9% uptime
No lock-in
Standard HTTP API, export anytime
Simple API
Three endpoints: PUT, GET, DELETE. That's it.
💡 Memory that works everywhere your agent does — not just on one machine
⚠️ Demo Mode: This uses a shared namespace. Don't store real data. Get your own API key ↑
🎮 Live Playground — no signup required
// Results will appear here // This uses a shared demo namespace — your data may be overwritten

💡 This is a real API call. Connect wallet or get API key for your own namespace.

What to Store (By Type)

AgentMem is for context that spans sessions. Use these types to organize your memory.

Type Icon Examples When to Use
fact 📌 API endpoint changed, server IP, user's email Durable truths that don't change often
decision 🟤 Use Redis for cache, Cloudflare Pages for hosting Architecture choices, strategic decisions
preference 💚 Prefer TypeScript, use tabs not spaces, email format User settings, style choices, defaults
policy 🚨 Never store passwords, always ask before delete Critical rules, security constraints
gotcha 🔴 CLI auth broken use browser, API timeout is 30s Pitfalls, bugs, workarounds to remember
✅ Store This
  • 💚 User preferences
    e.g. "I prefer TypeScript over JavaScript"
  • 📌 Ongoing context
    e.g. "Currently launching AgentMem v1.0"
  • 🟤 Decisions made
    e.g. "Use Cloudflare Pages for hosting"
  • 📌 Entity tracking
    e.g. Names, accounts, project IDs, API tokens
  • 🚨 Facts worth remembering
    e.g. "Email is [email protected]"
❌ Skip This
  • × Temporary state
    e.g. "API request loading..." (session-only)
  • × Secrets & credentials
    Use environment variables instead
  • × Large blobs
    Images, videos → use object storage (S3/R2)
  • × High-frequency counters
    e.g. Real-time analytics → use Redis/ClickHouse
  • × Full conversation logs
    Use vector search for RAG instead
💡 Rule of Thumb
If it needs to survive a restart → AgentMem
If it's session-only → Context window
If it's structured analytics → Database

Built for agents

Everything your AI needs. Nothing it doesn't.

Dead Simple

Three endpoints. PUT, GET, DELETE. No SDK required. Just HTTP.

🔗

x402 Payments NEW

Pay with USDC on Base. No signup, no API key. Your wallet is your identity.

Global Edge

Cloudflare's network. Sub-50ms latency worldwide.

Agent Native

Built for AI agents. Works with OpenClaw, AutoGPT, LangChain, CrewAI.

Usage Tracking

Monitor storage and operations via /v1/status. No surprise bills.

📦

No Lock-In

Export all your data as JSON via GET /v1/export. Switch providers anytime.

Why AgentMem?

Other memory solutions have 6 layers, 5 dependencies, and PhD-level setup.
We have 3 endpoints. That's it.

🔴 Other Memory Solutions
┌────────────────────────────┐
│ 6-LAYER ARCHITECTURE │
├────────────────────────────┤
│ HOT RAM (SESSION-STATE) │
│ WARM STORE (LanceDB) │
│ COLD STORE (Git-Notes) │
│ CURATED ARCHIVE (files) │
│ CLOUD BACKUP (API) │
│ AUTO-EXTRACTION (Mem0) │
└────────────────────────────┘
  • ❌ 6 dependencies to install
  • ❌ 5+ setup steps (Git, LanceDB, etc.)
  • ❌ Vector embeddings = $$$
  • ❌ Local-only or complex sync
✅ AgentMem
┌────────────────────────────┐
│ DEAD SIMPLE API │
├────────────────────────────┤
│ │
│ PUT /kv/:key │
│ GET /kv/:key │
│ DELETE /kv/:key │
│ │
│ (that's the entire API) │
└────────────────────────────┘
  • ✅ Zero dependencies
  • ✅ One API key, 30 seconds setup
  • ✅ Pay-as-you-go (no embeddings)
  • ✅ Cloud-native (works everywhere)

Before & After

❌ Without AgentMem
  • • Agent forgets everything on restart
  • • User repeats preferences every session
  • • No memory across conversations
  • • Context window fills up fast
  • • Manual file management
✅ With AgentMem
  • • Agent remembers across sessions
  • • One-time preference setting
  • • Persistent context automatically
  • • Clean context window
  • • Zero maintenance

The Numbers Don't Lie

AgentMem vs Self-Hosted Memory Solutions

AgentMem Elite LTM Cognitive ChromaDB
Setup Time 30 seconds 30 minutes 15 minutes 20 minutes
Dependencies Zero Docker + LanceDB + Git Git + Voyage AI ChromaDB + Ollama
Infrastructure None Self-hosted Self-hosted Self-hosted
Cross-Device ✅ Built-in ❌ Manual sync ❌ Manual sync ❌ Local only
Learning Curve 2 minutes 30+ minutes 45+ minutes 30+ minutes
Monthly Cost $5 Server + dev time Voyage AI credits GPU/CPU usage
Maintenance Zero Backups, updates Memory hygiene Database tuning

The simplicity moat: We're the ONLY memory solution that's
zero-dependency, one-line setup, and crypto-native.

How It Works

Three lines of code. Zero setup.

┌─────────┐    PUT /kv/:key    ┌──────────┐   Encrypted   ┌──────────┐
│  Agent  │────────────────────▶│ AgentMem │───────────────▶│  Storage │
└─────────┘                     └──────────┘                └──────────┘
     │                               ▲
     │      GET /kv/:key            │
     └──────────────────────────────┘
      

Store a value

curl -X PUT https://api.agentmem.io/v1/kv/user_prefs \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d "dark_mode"

Retrieve it

curl https://api.agentmem.io/v1/kv/user_prefs \
  -H "Authorization: Bearer YOUR_API_KEY"

Delete it

curl -X DELETE https://api.agentmem.io/v1/kv/user_prefs \
  -H "Authorization: Bearer YOUR_API_KEY"
💡 What to store: User preferences, session state, cached API responses, agent configuration, task queues.
Skip: Large files (use S3), secrets (use a vault), temporary chat logs.

Or use the SDK

Install

npm install agentmem

Use

import { AgentMem } from 'agentmem';
const mem = new AgentMem(API_KEY);
await mem.put('key', 'value');
const val = await mem.get('key');

npm version npm downloads

🧠 Mental Model: Three Layers of Memory

How memory should work in agent systems

⚡ Ephemeral
Session memory (chat history)
  • ✓ Fast access
  • ✓ Indexed for recall
  • ✗ Lost on compaction
  • ✗ Not durable
Use for: Current conversation context
📝 Operational
Daily logs (work-in-progress)
  • ✓ Append-only notes
  • ✓ Survives restarts
  • ✗ Not semantic search
  • ✗ High noise/signal
Use for: Commands run, changes made, blockers
🧠 Durable
AgentMem (long-term knowledge)
  • ✓ Survives compaction
  • ✓ Cross-device sync
  • ✓ Fast recall (PUT/GET)
  • ✓ High signal/noise
Use for: Preferences, decisions, facts

🎯 The Rule: If it must survive compaction, store it in AgentMem

Session memory is ephemeral. Daily logs are operational. AgentMem is your source of truth.

Example workflow:

  • User says "I prefer dark mode" → Store in AgentMem (PUT /kv/user_prefs)
  • Working on a bug → Log in daily/2026-02-05.md
  • Bug fixed, decision made → Update AgentMem (PUT /kv/decisions/2026-02-05-01)

💡 Inspired by: OpenClaw-Mem's three-layer architecture (ephemeral → operational → durable)

⚡ Performance & Reliability

Built for production. Measured, not promised.

~104ms
Average GET latency
Measured over 100 requests
~106ms
Average PUT latency
Measured over 50 requests
~107ms
Average DELETE latency
Measured over 50 requests

🚀 Why It's Fast

  • Cloud-native infrastructure: Cloudflare Workers + Durable Objects (edge computing)
  • Zero cold starts: Always-on Durable Objects maintain state
  • Simple API: No complex queries = predictable latency

📊 Uptime & Monitoring

  • 🟢 Health endpoint: GET /v1/health for service status
  • 📈 Analytics API: GET /v1/analytics for usage metrics
  • 🔍 Full audit trail: Every operation logged with timestamp

When to Use AgentMem

Your agent should call AgentMem when the user says...

User Says
Action
Example Key
"Remember this"
PUT immediately
user:note:20260203
"I prefer..."
PUT as preference
user:pref:theme
"What did I..."
GET relevant keys
user:history:*
"Forget that"
DELETE key
user:note:20260203
"Save my progress"
PUT session state
session:state
✅ Good to Store
  • • User preferences (theme, language)
  • • Decisions made ("chose plan X")
  • • Important context ("works at Y")
  • • Session state / progress
  • • Cached API responses
  • • Task queues / workflows
❌ Skip These
  • • Secrets / API keys (use a vault)
  • • Large files >1MB (use S3)
  • • Temporary chat logs
  • • Debugging / verbose logs
  • • Duplicate data
  • • Data that changes every second
NEW Bootstrap Endpoint

Get all your agent's context in a single API call. Perfect for session startup.

curl https://api.agentmem.io/v1/bootstrap \
  -H "Authorization: Bearer YOUR_API_KEY"

# Returns: identity + all memories + stats in ONE call

When NOT to Use AgentMem

These are common misuses. Avoid them to keep your memory fast and clean.

Storing Chat Transcripts

Don't dump full conversation logs into AgentMem. They bloat context windows and rarely get retrieved.

❌ Bad:
PUT chat:transcript:20260203 = "User: Hi\nAgent: Hello\n..."
✅ Good:
PUT user:decision:plan = "Chose Pro plan on 2026-02-03"

Using It as a Logging System

AgentMem is for knowledge that persists across sessions, not debugging logs or transient state.

❌ Bad:
PUT debug:api_call_1234 = "Status 200, latency 45ms"
✅ Good:
PUT workflow:last_run = "2026-02-03T14:30:00Z"

Storing Secrets or Credentials

Never store API keys, passwords, or tokens. Use a proper secrets vault (Doppler, 1Password, AWS Secrets Manager).

❌ Bad:
PUT api:openai_key = "sk-..."
✅ Good:
PUT config:openai = {"model": "gpt-4", "max_tokens": 1000}

Treating It as a File System

Don't store large files, images, or binary data. Use S3, Cloudflare R2, or similar object storage.

❌ Bad:
PUT file:avatar = "<5MB base64 blob>"
✅ Good:
PUT user:avatar_url = "https://s3.amazonaws.com/..."

Writing Duplicate Data

Don't overwrite the same key repeatedly without checking if it changed. Wastes API calls and burns your quota.

❌ Bad:
PUT user:theme = "dark" // every request, even if unchanged
✅ Good:
if (theme !== lastTheme) PUT user:theme = theme

Best Practices

Follow these patterns to get the most out of AgentMem

Use Structured Key Names

Namespace your keys to organize memories by type. Makes retrieval faster and prevents collisions.

Recommended patterns:
user:pref:theme decision:plan_choice:20260203 episodic:2026_02_03:event_name semantic:topic:fact_name procedural:workflow:step_name

Fetch on Demand, Not Up Front

Don't load all memories at startup. Fetch only what's relevant to the current task.

❌ Bad: Load everything
keys = GET /v1/keys; for k in keys: GET /v1/keys/{k}
✅ Good: Progressive disclosure
1. GET /v1/bootstrap (identity + core context) 2. Only fetch user:* keys when user asks a question

Mark Critical Memories

Use key prefixes to signal importance. Helps agents prioritize what to load first.

critical:rule:no_personal_data high:decision:architecture_choice normal:fact:topic_name low:temp:cache_entry

Smart Retrieval Strategy

Load memories in order of importance: critical rules first, contextual facts second, nice-to-haves last.

1. GET critical:* (always load these) 2. GET high:decision:* (if user asks about decisions) 3. GET user:pref:* (when user interacts) 4. Skip low:* unless explicitly needed

Consolidate Old Memories

Periodically merge related memories, archive outdated ones, and delete duplicates to keep your store clean.

Weekly cleanup checklist:
• Merge duplicate facts into one canonical key • DELETE episodic:* older than 30 days (if not needed) • Archive low:* to external storage if unused
⚠️

What NOT to Store in AgentMem

Not everything belongs in long-term memory. Here's what to skip:

❌ Don't Store
• Ephemeral chat logs
• Secrets & credentials
• Temporary task state
• Large files (>1MB)
• High-frequency data
✅ Store Instead
• User preferences
• Session state (cross-device)
• Configuration
• Learned patterns
• Important facts

🔄 Memory Protocol

When to call AgentMem during your agent's lifecycle

🚀

On Session Start

1. GET /v1/bootstrap → Load identity + critical context 2. GET /v1/keys?prefix=critical: → Load never-forget rules 3. GET /v1/keys?prefix=user:pref: → Load user preferences

Why: Initialize with essential context so the agent doesn't ask for preferences every time.

💬

During Conversation

User says "Remember this" → PUT /v1/user:note:{timestamp} User says "I prefer X" → PUT /v1/user:pref:{topic} User asks "What did I..." → GET /v1/keys?prefix=episodic: User says "Forget that" → DELETE /v1/{key}

Why: Store facts in real-time so they're available in future sessions.

After Task Completion

PUT /v1/decision:{topic}:{date} → "User chose plan B over A" PUT /v1/lesson:{topic} → "Approach X worked better than Y" PUT /v1/episodic:{date}:{task} → "Completed migration successfully"

Why: Capture decisions and learnings for future reference ("Why did we pick this?").

After Failures

PUT /v1/mistake:{topic} → "API call failed because X" PUT /v1/lesson:{topic} → "Always check Y before doing Z"

Why: Don't repeat mistakes. Learn from failures.

🛑

On Session End

1. Extract durable facts from conversation → PUT /v1/semantic:{topic} 2. Record any lessons learned → PUT /v1/lesson:{topic} 3. Update entity information (if tracking) → PUT /v1/entity:{name}

Why: Consolidate ephemeral chat into durable memories.

📋 Copy-Paste for AGENTS.md / HEARTBEAT.md

## Memory Protocol (AgentMem)

On session start:
1. GET /v1/bootstrap (identity + core context)
2. GET /v1/keys?prefix=critical: (never-forget rules)
3. GET /v1/keys?prefix=user:pref: (user preferences)

During conversation:
- User says "remember this" → PUT immediately
- User says "I prefer X" → PUT as user:pref:{topic}
- User asks "what did I..." → GET episodic:*

On session end:
1. Extract durable facts → PUT semantic:{topic}
2. Record lessons learned → PUT lesson:{topic}
3. Consolidate decisions → PUT decision:{topic}

🎯 When to Call AgentMem

Trigger words and patterns that signal memory operations

User Says Action
"Remember this" PUT /v1/kv/note-{timestamp}
"Don't forget X" PUT /v1/kv/important-{topic}
"I prefer..." PUT /v1/kv/user-prefs
"Store this config" PUT /v1/kv/config
"What did I..." GET /v1/kv/{topic}
"Forget about X" DELETE /v1/kv/{topic}

General Rule:

If it's worth remembering for >1 hour, store it in AgentMem. Use session memory for temporary state.

🎯 Retrieval Best Practices

How to retrieve memories efficiently without bloating your context window

Core Principle: Precision over Quantity

Don't dump all memories into context. Retrieve selectively — load only what's needed for the current task. Fewer tokens = faster responses + lower costs.

1

Start Broad with Prefix Search

GET /v1/keys?prefix=user:pref: → Returns ["user:pref:theme", "user:pref:language"]

Why: List all keys in a namespace first. Pick the 1-3 most relevant keys before fetching values.

💡 Pro tip: Use hierarchical prefixes (user:pref:ui:theme) to narrow down quickly.
2

Fetch Only What You Need

❌ Bad: GET all keys and dump into context ✅ Good: GET user:pref:theme → "dark" (only 4 bytes)

Why: Most tasks only need 1-3 memories. Load the minimum required data.

💡 Pro tip: For decisions, just load the conclusion (decision:{topic}), not the entire reasoning chain.
3

Cache in Session Memory

On session start: GET /v1/bootstrap → cache identity + core prefs During session: Refer to cached values, don't re-fetch

Why: Reduce API calls. Load critical context once at session start, reuse throughout.

💡 Pro tip: Use /v1/bootstrap to load identity + all critical context in ONE call.
4

Don't Guess — Ask First

❌ Bad: Fetch episodic:* and scan all events ✅ Good: "Do you remember when you last...?" → targeted GET

Why: If you don't know what to retrieve, ask the user instead of scanning everything.

5

Prune Outdated Memories

DELETE /v1/session:2026-01-01 → Remove old session data after 30 days

Why: Dead keys clutter your namespace. Periodically delete stale data (old sessions, expired cache, etc.).

💡 Pro tip: Use timestamp-based keys (cache:{date}) so you can DELETE by prefix when they expire.

⚡ Quick Reference

✅ Do This
  • • Load critical context on session start
  • • Use prefix search before fetching
  • • Cache frequently-used values
  • • Fetch minimal data per request
  • • Delete stale keys periodically
❌ Avoid This
  • • Fetching all keys every turn
  • • Loading values you won't use
  • • Re-fetching cached data
  • • Scanning full namespaces
  • • Hoarding dead keys forever

💻 CLI Helper Script

Make AgentMem easier to use from the command line

For easier usage, create ~/bin/agentmem:

#!/bin/bash
# AgentMem CLI Helper
KEY="${AGENTMEM_KEY:?Set AGENTMEM_KEY env var}"
ACTION=$1
KEYNAME=$2
shift 2

case $ACTION in
  put)
    echo "$*" | curl -X PUT "https://api.agentmem.io/v1/kv/$KEYNAME" \
      -H "Authorization: Bearer $KEY" \
      -H "Content-Type: application/text" \
      --data-binary @-
    ;;
  get)
    curl -s "https://api.agentmem.io/v1/kv/$KEYNAME" \
      -H "Authorization: Bearer $KEY"
    ;;
  delete)
    curl -X DELETE "https://api.agentmem.io/v1/kv/$KEYNAME" \
      -H "Authorization: Bearer $KEY"
    ;;
  *)
    echo "Usage: agentmem [put|get|delete] <key> [value]"
    exit 1
    ;;
esac

Install:

chmod +x ~/bin/agentmem
export AGENTMEM_KEY="your_api_key_here"

Usage:

agentmem put user-prefs "dark mode preferred" agentmem get user-prefs agentmem delete user-prefs

🎯 Auto-Capture Triggers

Natural language patterns that should trigger memory storage

Silent operation: When users say these phrases, store immediately and continue — don't announce "I'll remember that!" Just do it.

❤️

User Preferences

💬 "I prefer..."
💬 "I like / I hate..."
💬 "My favorite..."
💬 "Always / Never do X"
💬 "I want / I don't want..."
Example: PUT /v1/user:pref:communication → {"style": "direct, no fluff"}
🪪

Identity & Facts

💬 "My name is..."
💬 "I live in..."
💬 "My X is Y"
💬 "Call me..."
💬 "I work at / I'm a..."
Example: PUT /v1/user:identity → {"name": "Alex", "timezone": "PST"}
🧠

Explicit Memory Commands

💬 "Remember this..."
💬 "Don't forget..."
💬 "Keep this in mind..."
💬 "For next time..."
💬 "Note that..."
Example: PUT /v1/user:note:2026-02-05 → {"text": "API keys in 1Password"}

Decisions & Choices

💬 "We decided to..."
💬 "I chose X over Y because..."
💬 "Let's go with..."
💬 "The plan is..."
💬 "We're going with..."
Example: PUT /v1/decision:tech-stack → {"choice": "PostgreSQL", "reason": "team expertise"}
💡

Lessons & Learnings

💬 "X worked better than Y"
💬 "Next time, do Z first"
💬 "Don't do X because..."
💬 "What worked: ..."
💬 "What failed: ..."
Example: PUT /v1/lesson:deployment → {"learned": "Always run migrations before code"}
🗑️

Deletion Triggers

💬 "Forget that..."
💬 "Delete X from memory"
💬 "Don't remember..."
💬 "Remove that note"
💬 "Clear my X"
Example: DELETE /v1/{key} (use prefix search to find the right key)

📋 Python Implementation Example

import re
import requests

TRIGGER_PATTERNS = {
    'preference': r'I (prefer|like|want|hate)',
    'identity': r'My (name|timezone|email) is',
    'explicit': r'(remember|don\'t forget|note that)',
    'decision': r'(we decided|I chose|let\'s go with)',
    'lesson': r'(worked better|next time|what failed)',
    'delete': r'(forget that|delete|remove|clear)'
}

def detect_trigger(user_message):
    for category, pattern in TRIGGER_PATTERNS.items():
        if re.search(pattern, user_message, re.IGNORECASE):
            return category
    return None

def auto_capture(user_message, api_key):
    trigger = detect_trigger(user_message)
    if not trigger:
        return  # No trigger, skip
    
    # Extract key/value (simplified - use NER in production)
    key = f"{trigger}:{int(time.time())}"
    value = {"text": user_message, "category": trigger}
    
    # Store silently
    requests.put(
        f"https://api.agentmem.io/v1/{key}",
        headers={"Authorization": f"Bearer {api_key}"},
        json=value
    )

✅ Best Practices for Auto-Capture

1. Silent operation: Never announce "I'll remember that!" — just store and continue
2. Extract entities: Use NER (spaCy, Hugging Face) to extract structured data from natural language
3. Deduplicate: Check if similar keys exist before creating new ones
4. Namespace properly: Use prefixes like user:pref:, decision:, etc.
5. Timestamp everything: Add timestamps to keys for chronological sorting

🎯 What Can You Build?

Real-world use cases from the agent economy

🤖

Personal Assistant Memory

Remember user preferences, past decisions, and ongoing tasks. Your agent gets smarter over time, not goldfish-brained every conversation.

user:pref:communication_style user:decision:tech_stack user:task:project_status
🧠

Multi-Agent Knowledge Sharing

Share context across specialized agents. One agent learns, all agents benefit. Perfect for agent swarms and delegation workflows.

team:learnings:deployment_patterns team:rules:code_standards team:facts:api_endpoints
💬

Customer Context Persistence

Customer support agents that remember prior tickets, preferences, and history. No more "let me look that up" — instant context retrieval.

customer:123:history customer:123:preferences customer:123:last_interaction
⚙️

Agentic Workflow State

Pause and resume complex workflows. Your agent can checkpoint progress, survive restarts, and pick up where it left off.

workflow:deploy:step workflow:deploy:state workflow:deploy:rollback_point

All use cases share one pattern: Your agent stores context while working, retrieves it when needed. Simple.

🔗 Integration with Existing Tools

AgentMem complements your current setup — it doesn't replace it

📝

vs MEMORY.md

Use AgentMem for: Structured key-value data (preferences, config, session state)
Use MEMORY.md for: Long-form notes, journal entries, human-readable logs

🔍

vs LanceDB / Vector DBs

Use AgentMem for: Simple facts, configuration, exact-match lookups
Use Vector DBs for: Semantic search, similarity matching, large corpora

🌿

vs Git Notes

Use AgentMem for: Live data that changes frequently (session state, prefs)
Use Git for: Versioned history, audit trails, collaborative editing

vs Redis

Use AgentMem for: Persistent storage that survives restarts
Use Redis for: High-speed cache, pub/sub, ephemeral data (<1 hour)

Rule of Thumb:

If it needs to survive restarts → AgentMem
If it's <1 hour lifespan → Session memory

FAQ

How is this different from a database?

AgentMem is key-value only. No SQL, no schemas, no migrations, no setup. Just PUT and GET. Perfect for agent memory that doesn't need relational queries.

What happens if I hit my key limit?

Writes fail with a 402 error. Your existing data stays accessible. Upgrade or delete old keys to continue writing.

Can I upgrade or downgrade?

Yes! Change your plan anytime via the Stripe portal or crypto payment. Prorated billing for paid plans.

Is my data encrypted?

Yes. Encrypted at rest (AES-256) and in transit (TLS 1.3). Only you have access to your keys.

What's the SLA and uptime?

99.9% uptime target. Built on Cloudflare Workers (globally distributed, edge-deployed worldwide).

Can I export my data?

Yes! GET /v1/export returns all your keys as JSON. You can switch providers anytime.

How does crypto payment work?

Pay with USDC on Base (Ethereum L2). Connect your wallet, approve the payment, and your API key activates instantly. No email, no signup.

What if I lose my API key?

For Stripe users: Log in via your email link. For crypto users: Your wallet address is your account — check the blockchain for your payment tx, then contact support.

⚠️ Limitations & Roadmap

Honest about what we don't do (yet)

🚧 What AgentMem v1.0 Doesn't Do

  • No semantic search: You can GET by key prefix, but no vector embeddings or similarity search (yet). Use client-side filtering for now.
  • No built-in search API: GET /v1/keys returns all keys, then you filter client-side. Fast enough for <10k keys.
  • No relational queries: It's key-value only. No JOINs, no complex queries. Simple by design.
  • No automatic backups: Use GET /v1/export to download your data manually (GDPR-compliant).
  • No multi-user collaboration: One API key = one namespace. Share keys carefully.

🚀 Coming Soon (Based on Demand)

HIGH PRIORITY
Semantic search: Vector embeddings for similarity search (e.g., "find memories about deployment")
v1.1
Query API: GET /v1/search?q=term for server-side filtering
v1.2
Scheduled backups: Optional auto-export to S3/Cloudflare R2
v1.3
Real-time webhooks: Notify your agent when keys change (pub/sub pattern)
v2.0
Multi-agent namespaces: Shared memory with permission controls

Vote on features: Open an issue on GitHub or email [email protected]. We ship based on user demand.

🚫 Anti-Patterns (What NOT to Store)

Learn from others' mistakes

  • Don't store transient API errors
    Bad: {"error": "503 Service Unavailable"}
    Why: Errors are temporary. If you need to track failures, store patterns, not raw errors.
  • Don't store massive payloads (>1MB)
    Bad: Storing entire API responses, large JSON blobs, base64-encoded images
    Why: AgentMem is for memory, not file storage. Use S3/R2 for large data, store references in AgentMem.
  • Don't use AgentMem as a database
    Bad: Relational data with JOINs, complex queries, transactional data
    Why: AgentMem is key-value only. For structured data, use Postgres/MySQL. Store summaries in AgentMem.
  • Don't store secrets in plain text
    Bad: {"github_token": "ghp_abc123..."}
    Why: Use environment variables or proper secret managers. AgentMem is for context, not credentials.

Rule of thumb: If it would still be useful next week, it's worth storing. If it's only relevant right now, skip it.

💰 Token Efficiency Calculator

See how much you save with on-demand memory

❌ Without AgentMem

📝 Load full context every session
💾 3,500 tokens per session start
🔄 20 sessions/day
📊 70,000 tokens/day
💸 ~$10.50/month
at $0.005/1k tokens (GPT-4 input)

✅ With AgentMem

🔍 Fetch only what you need
💾 200 tokens per session start
🔄 20 sessions/day
📊 4,000 tokens/day
💸 ~$0.60/month
at $0.005/1k tokens (GPT-4 input)
💰 $9.90/month saved
That's 94% token reduction — pay for AgentMem ($5/mo) and still save money

The math: Traditional memory loads 3,500 tokens of context (6% relevant, 94% noise). AgentMem lets you fetch only the 200 tokens you need on-demand. That's 17.5× more efficient.

🔄 Memory Lifecycle

Understand where AgentMem fits in your agent's memory architecture

🧠
Working Memory
RAM / Context Window
Transient, compacted
☁️
AgentMem
Cloud Storage
Durable, searchable
💾
Local Backup
S3 / R2 / Disk
Optional archive
🧠
Working Memory (RAM)
Your agent's current context window. Fast but transient — gets compacted/cleared between sessions. Use for short-term thinking.
☁️
AgentMem (Cloud)
Durable memory that survives sessions. Fetch on-demand, not always loaded. Use for facts, preferences, decisions that need to persist.
💾
Local Backup (Optional)
Long-term archive for compliance or disaster recovery. Use GET /v1/export to download your data anytime (GDPR-compliant).

Key principle: Working memory is for thinking. AgentMem is for remembering. Local backup is for never losing data.

🏷️ Metadata & Tagging Guide

Structure your memories for powerful retrieval

AgentMem is key-value only — no built-in tagging. But you can use key prefixes and JSON metadata to create your own tagging system.

Key Prefix Strategy

# Organize by type
user:preferences:language
user:preferences:timezone
project:agentmem:api_key
project:agentmem:last_deploy

# Query by prefix
GET /v1/keys?prefix=user:preferences:
→ Returns all user preferences

GET /v1/keys?prefix=project:
→ Returns all project-related memories

JSON Metadata Pattern

{
  "key": "decision:2026-02-05:use-agentmem",
  "value": {
    "type": "decision",
    "priority": "high",
    "category": "architecture",
    "decision": "Use AgentMem for persistent memory",
    "reason": "Simple API, cloud-native, pay-as-you-go",
    "updated": "2026-02-05T03:58:00Z",
    "tags": ["memory", "architecture", "cloud"]
  }
}

Recommended Tag Taxonomy

🔴 Gotchas
Pitfalls to avoid
🔵 How-To
Technical explanations
🟢 Changes
What was deployed
🟣 Insights
Learnings, discoveries
🟠 Decisions
Architecture choices
⚖️ Tradeoffs
Deliberate compromises

💡 Client-Side Filtering

Since AgentMem doesn't have built-in search (yet), fetch keys by prefix and filter client-side:

# Fetch all memories
memories = api.get('/v1/keys?prefix=memory:')

# Filter by tag in JSON value
high_priority = [m for m in memories 
                 if m['value']['priority'] == 'high']

# Filter by date
recent = [m for m in memories 
          if m['value']['updated'] > '2026-02-01']

🔒 Security & Privacy

Your data, your control

🔐
End-to-End Encryption (HTTPS)
All data in transit is encrypted via TLS 1.3. Your API key is the only credential — keep it safe.
🚫
No Training on Your Data
Your memories are yours. We never use them to train models or share them with third parties.
🗑️
GDPR-Compliant Deletion
Use DELETE /v1/keys?prefix=* to wipe all data. Export first with GET /v1/export.
🌍
Data Sovereignty
Hosted on Cloudflare Workers (global edge network). Data stored in Cloudflare's distributed KV store. No single data center.
🔑
Selective Access Control
One API key = one namespace. Share keys carefully. Multi-agent namespaces coming in v2.0 (shared read, gated write).

Security roadmap: SOC 2 compliance (Q2 2026), client-side encryption (Q3 2026), multi-region replication (Q4 2026). Vote on priorities via email.

☁️ Why Cloud vs Local?

AgentMem is cloud-first by design — here's why that matters

🌍

Multi-Device Sync

Access your memories from anywhere — laptop, phone, cloud server. Local-only solutions lock you to one machine.

✅ Cloud: Instant sync across devices
❌ Local: Manual sync with git/rsync

Zero Setup

30 seconds from signup to first API call. No Docker, no config files, no dependency hell.

✅ Cloud: Email → API key → curl
❌ Local: 5-15min Docker + embeddings + config
💾

Automatic Backups

Your data is replicated across Cloudflare's global network. No manual backups, no data loss from disk failures.

✅ Cloud: Auto-replicated, always safe
❌ Local: Manual backups or lose everything
💰

Pay Per Use

10,000 free keys, then $5/mo for 1M. Local solutions need dedicated servers, even when idle.

✅ Cloud: $0-$5/mo (scales with usage)
❌ Local: $10-$20/mo server costs (always on)
🔧

Zero Maintenance

We handle updates, scaling, monitoring. You focus on building agents, not managing infrastructure.

✅ Cloud: We handle it
❌ Local: You're on your own
🔐

Privacy + Convenience

HTTPS encryption, GDPR compliance, no training on your data. Get privacy without running your own infrastructure.

✅ Cloud: Encrypted + compliant by default
❌ Local: You configure security yourself

When to choose local: If you have strict data residency requirements, or need complete air-gap isolation, local-first solutions like elite-longterm-memory or openclaw-mem are better fits. AgentMem prioritizes speed + convenience + multi-device access over maximum control.

Simple pricing

Pay with card or crypto — your choice

🛡️ 7-Day Money-Back Guarantee — Not satisfied? Full refund, no questions asked.
Free
$0/mo

For getting started

  • Store 10,000 memories free
  • 1,000 API calls/month
  • All features included
Scale
Usage

Beyond limits

  • $0.50/GB additional
  • $0.10/10k operations
  • Unlimited scale
Pay-per-use
$0.0001/op

No commitment

  • Pay per operation
  • No signup required
  • Wallet = Identity
Pro Pack
$20 USDC

500,000 credits

  • Credits never expire
  • $0.00004 per op
  • 1 GB storage

Documentation & Integrations

🔧 Error Handling & Troubleshooting

Common errors and how to fix them — fast

Still stuck? All API errors include "hint" and "docs" fields. Check the error response first — it usually tells you how to fix it.

🔒

401 Unauthorized

{"error": "Invalid API key", "hint": "Check Authorization header format"}

Cause: Missing or incorrect API key.

✅ Fix:
curl -H "Authorization: Bearer YOUR_API_KEY" \ https://api.agentmem.io/v1/test-key
Forgot your key? Request a new one via email.

404 Not Found

{"error": "Key not found", "hint": "Check key name for typos"}

Cause: Key doesn't exist, or you're GETting before PUTting.

✅ Fix:
1. Check key spelling (keys are case-sensitive)
2. Use GET /v1/keys?prefix=your:prefix to list all keys
3. Ensure you PUT the key before trying to GET it
🚦

429 Too Many Requests

{"error": "Rate limit exceeded", "hint": "Wait 60s or upgrade plan"}

Cause: Too many API calls in a short time window.

✅ Fix:
1. Implement exponential backoff (retry after 1s, 2s, 4s...)
2. Batch requests: Use GET /v1/keys?prefix=* instead of individual GETs
3. Upgrade plan: Pro tier has 10x higher limits
📦

413 Payload Too Large

{"error": "Value exceeds max size (1MB)", "hint": "Split into smaller chunks"}

Cause: Single value exceeds 1MB limit.

✅ Fix:
// Split large values into chunks PUT /v1/data:part1 → {...} PUT /v1/data:part2 → {...} PUT /v1/data:index → ["data:part1", "data:part2"]
⏱️

Connection Timeout

Error: ETIMEDOUT / Read timed out

Cause: Network issue or API temporarily unavailable.

✅ Fix:
// Implement retry logic with exponential backoff max_retries = 3 for attempt in range(max_retries): time.sleep(2 ** attempt) # 1s, 2s, 4s
Check status.agentmem.io for service status.
🩺

Health Check & Diagnostics

Test your API connection and key validity:

curl -H "Authorization: Bearer YOUR_API_KEY" \ https://api.agentmem.io/v1/health
{"status": "ok", "latency_ms": 12, "tier": "free"}

Still having issues? Email [email protected] with your API key (last 4 chars) and error details. We respond within 24h.

⚡ Performance Benchmarks

Real numbers. Not marketing fluff.

10-20ms
GET Latency
p95
20-40ms
PUT Latency
p95
99.9%
Uptime
30-day avg

Why We're Faster

✅ AgentMem
  • • Simple key-value store
  • • Optimized Go backend
  • • Minimal overhead
  • • Direct disk access
⏱️ Competitors
  • • Vector embeddings (50-500ms)
  • • Complex queries
  • • Database joins
  • • Semantic search overhead
When speed matters: Real-time chat, workflow orchestration, session state. When you need fast, not fancy.

🔒 Privacy & Security

Your data. Your wallet. Your control.

🔐 Encrypted at Rest

All data encrypted with your API key. We can't read your memories — only you can.

🌍 Cross-Device

Cloud-hosted by design. Your agent has memory anywhere — laptop, phone, server.

💾 GDPR-Compliant

Export all your data anytime (GET /v1/export). Delete on demand. Full transparency.

👛 Wallet = Identity

Pay with USDC — no email, no signup forms, no KYC. Your wallet is your account.

What We Don't Do

  • No training on your data — Your memories stay yours
  • No third-party sharing — We don't sell, rent, or leak data
  • No analytics tracking — We don't know what you store (encrypted)
  • No vendor lock-in — Export anytime, host yourself if needed

Questions about security? [email protected]

💰 Token & Cost Savings

AgentMem saves tokens by fetching memories on-demand instead of loading everything at startup

❌ Before (No AgentMem)
  • 📄 Load all 3,500 tokens of MEMORY.md
  • 📄 Load all daily logs (500 tokens)
  • 📄 Load full conversation history (2,000 tokens)
  • Total: ~6,000 tokens loaded
  • Only ~200 tokens relevant (3% efficiency)
✅ After (With AgentMem)
  • 📋 Fetch bootstrap endpoint (~100 tokens)
  • 🔍 Search for relevant keys (50 tokens)
  • ✅ Fetch only needed memories (200 tokens)
  • Total: ~350 tokens loaded
  • All 350 tokens are relevant (100% efficiency)

💸 Cost Savings (gpt-4o example)

6,000
Tokens per request
(without AgentMem)
350
Tokens per request
(with AgentMem)
94%
Token reduction
(saved waste)

📊 Monthly Cost (1,000 agent requests/month)

Without AgentMem
$18.00
(6M tokens × $3/1M)
With AgentMem
$1.05
(350K tokens × $3/1M)
Savings
$16.95/mo
(pays for itself instantly)
💡 Real savings: AgentMem's $0.10/month storage cost is 160× cheaper than the token waste it eliminates

🔄 Memory Lifecycle

Where AgentMem fits in your agent's memory architecture

🧠
1. Working Memory
Conversation context, current task state, temporary variables
Lifespan: Session only
Lost after restart/compression
☁️
2. AgentMem (Durable)
User preferences, learned facts, decisions, important context
Lifespan: Permanent
Survives restarts, migrations, failures
💾
3. Local Archive
Daily logs, raw transcripts, long-term cold storage
Lifespan: Optional
For compliance, audit trails, backups

📊 Data Flow

1
Session start: Agent calls GET /v1/bootstrap → loads identity + core context into working memory
2
During conversation: Agent fetches specific memories on-demand (GET /v1/kv/:key) when user asks about a topic
3
After learning: Agent stores new facts/preferences (PUT /v1/kv/:key) immediately to AgentMem
4
Session end: (Optional) Archive full transcript to local storage, keep only durable insights in AgentMem
🎯 Key Principle
Working Memory = Transient. Cleared on restart/compression.
AgentMem = Durable. Survives everything.
Local Archive = Optional. For compliance, not retrieval.

📦 Switching from LanceDB/ChromaDB?

Migration in 3 steps. No data loss.

1

Export your existing data

Use your current DB's export tool. Save as JSON or CSV.

2

Bulk upload to AgentMem

Use the bulk upload script or loop through your data:

# Bash example
for key in $(jq -r '.[] | .key' data.json); do
  value=$(jq -r --arg k "$key" '.[] | select(.key==$k) | .value' data.json)
  curl -X PUT "https://api.agentmem.io/v1/kv/$key" \
    -H "Authorization: Bearer YOUR_KEY" \
    -d "$value"
done
3

Update your code

Replace your DB client with AgentMem SDK (npm install agentmem). Drop-in replacement for most use cases.

Need migration help? [email protected] (we respond fast)

🔄 Automation & Integration

Cron jobs, heartbeats, and framework examples

⏰ Periodic Memory Cleanup (OpenClaw Cron)

Set up a monthly cleanup job to prune old temporary keys and keep your namespace lean:

cron action=add job='{
  "name": "memory-cleanup",
  "schedule": { "kind": "cron", "expr": "0 4 1 * *" },
  "payload": {
    "kind": "agentTurn",
    "message": "Clean up AgentMem: 1) GET /v1/keys?prefix=temp: 2) DELETE keys older than 30d 3) Log completion"
  },
  "sessionTarget": "isolated"
}'

Runs monthly at 4 AM, removes stale temp:* keys, keeps your memory fresh.

💓 Heartbeat Integration (Proactive Context Loading)

Load critical memories during heartbeat polls to keep context fresh:

# In HEARTBEAT.md
## Memory Sync (every 30 min)
1. GET /v1/bootstrap (identity + core context)
2. If user:* keys updated_at > last_heartbeat:
   - Fetch new user:pref:* keys
   - Update local context
3. Log sync completion

Keeps your agent in sync with user preferences without explicit fetches.

🛠️ Framework Integration Examples

🦜 LangChain

from langchain.memory import ConversationBufferMemory
import requests

class AgentMemMemory(ConversationBufferMemory):
    def save_context(self, inputs, outputs):
        r = requests.put(
            f"https://api.agentmem.io/v1/chat:history",
            headers={"Authorization": f"Bearer {api_key}"},
            data=f"{inputs}\n{outputs}"
        )
    
    def load_memory_variables(self):
        r = requests.get(
            "https://api.agentmem.io/v1/chat:history",
            headers={"Authorization": f"Bearer {api_key}"}
        )
        return {"history": r.text}

🤖 AutoGPT

// In AutoGPT config.yaml:
memory:
  type: "agentmem"
  api_key: "your_api_key"
  base_url: "https://api.agentmem.io/v1"
  
# Agent will store goals, plans, learnings:
# - goals:current
# - plan:steps
# - learnings:mistakes
# - learnings:successes

⚡ OpenClaw

# Install skill: clawdhub install agentmem
# In AGENTS.md:
## Memory Persistence
Before responding, GET /v1/bootstrap for:
- user:pref:* (preferences)
- user:decision:* (past decisions)
- critical:rule:* (never-forget rules)

After learning something:
PUT /v1/learnings:{topic} "what I learned"

🌐 Raw HTTP (Any Framework)

# Bootstrap (get identity + core context)
curl -H "Authorization: Bearer $KEY" \
  https://api.agentmem.io/v1/bootstrap

# Store a preference
curl -X PUT \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: text/plain" \
  -d "dark mode" \
  https://api.agentmem.io/v1/user:pref:theme

Need a full integration guide? Open an issue on GitHub and we'll write it.

🔄 Migration Guide

Switching from local files, LanceDB, or other memory systems

📄

From MEMORY.md / Daily Logs

If you currently store memories in MEMORY.md or daily log files:

# 1. Extract key facts from MEMORY.md
grep "^- " MEMORY.md > facts.txt

# 2. Upload to AgentMem with structured keys
while read line; do
  key="semantic:$(echo $line | md5sum | cut -c1-8)"
  curl -X PUT "https://api.agentmem.io/v1/$key" \
    -H "Authorization: Bearer $API_KEY" \
    -d "$line"
done < facts.txt

# 3. Keep MEMORY.md as canonical source (for now)
# 4. Gradually shift to AgentMem as primary
⚠️ Don't delete local files immediately!

Keep local backups for 30 days while you validate AgentMem works for your workflow.

🔍

From LanceDB / Vector Memory

If you use vector search (LanceDB, ChromaDB, Pinecone):

# Python migration script
import lancedb
import requests

db = lancedb.connect("~/.agent-memory/lance")
table = db.open_table("memories")

API_KEY = "your_api_key"
BASE = "https://api.agentmem.io/v1"

# Export all vectors to AgentMem
for row in table.to_pandas().itertuples():
    key = f"semantic:{row.topic}:{row.id}"
    requests.put(f"{BASE}/{key}",
        headers={"Authorization": f"Bearer {API_KEY}"},
        data=row.text
    )

print("Migration complete! Test AgentMem, then archive LanceDB.")
💡 Note on Semantic Search

AgentMem doesn't have vector search yet (coming Q2 2026). For now, use prefix-based keys and bootstrap endpoint for retrieval. If you need vector search, keep LanceDB running in parallel until we ship it.

🌳

From Git Notes / Multi-Store Memory

If you use Git-backed memory stores (episodic, semantic, procedural):

# Sync episodic memories
for file in memory/episodes/*.md; do
  date=$(basename $file .md)
  curl -X PUT "https://api.agentmem.io/v1/episodic:$date" \
    -H "Authorization: Bearer $API_KEY" \
    --data-binary @$file
done

# Sync semantic graph
for entity in memory/graph/entities/*.md; do
  name=$(basename $entity .md)
  curl -X PUT "https://api.agentmem.io/v1/entity:$name" \
    -H "Authorization: Bearer $API_KEY" \
    --data-binary @$entity
done

# Sync procedural workflows
for workflow in memory/procedures/*.md; do
  name=$(basename $workflow .md)
  curl -X PUT "https://api.agentmem.io/v1/workflow:$name" \
    -H "Authorization: Bearer $API_KEY" \
    --data-binary @$workflow
done
🔀

Recommended: Hybrid Approach

You don't have to migrate everything. Use AgentMem for what it's best at:

✅ AgentMem For:
  • • User preferences
  • • Session state
  • • Cross-device sync
  • • Cached API responses
  • • Task queues
🔵 Keep Local For:
  • • Full conversation transcripts
  • • Large files / media
  • • Git audit trail
  • • Vector search (until we ship it)
  • • Private / sensitive data

Best practice: Use AgentMem as your "hot" memory (frequently accessed), and keep local files as your "cold" archive (rarely accessed, but permanent).

Troubleshooting

Common issues and quick fixes

🔑 401 Unauthorized

If you get a 401 error, check your Authorization header format:

Authorization: Bearer your_api_key_here

Common mistake: Missing "Bearer " prefix or extra whitespace.

🔍 404 Not Found

Keys must exist before you can GET them. Use PUT to create:

curl -X PUT https://api.agentmem.io/v1/my-key \
-H "Authorization: Bearer $KEY" \
-d '{"value": "..."}'

⏱️ 429 Rate Limited

Current limit: 10 requests/second per API key. Add a small delay between requests:

time.sleep(0.1) # Python
await new Promise(r => setTimeout(r, 100)) // JS

📦 400 Bad Request

Common causes:

  • Key contains invalid characters (use a-zA-Z0-9_- only)
  • Value exceeds 1MB size limit
  • Missing Content-Type header for binary data
Content-Type: application/json # for JSON
Content-Type: text/plain # for text

🌐 CORS / Browser Issues

If making requests from a browser:

  • AgentMem API supports CORS for all origins
  • Don't expose API keys in client-side code
  • Use a backend proxy for production apps

Check API Health

Verify the API is responding and check your account status:

curl https://api.agentmem.io/v1/bootstrap -H "Authorization: Bearer YOUR_KEY"

Returns account limits, usage stats, and operational status.

🔄 Migration Issues

If bulk migration fails:

  • Use batch uploads with delays to avoid rate limits
  • Verify each key before DELETE on old system
  • Keep old data until migration is verified

Ready to give your agent memory?

Get started in 30 seconds. Try the playground above — no signup needed.