Becomer: LLM-agnostic persistent memory API. Store and recall memories across GPT, Claude, Gemini, or any model — zero tokens per recall.

Created By
Becomer-net2 months ago
BECOMER gives any LLM persistent memory across sessions — without spending a single token on retrieval.
Overview

BECOMER — Memory API for AI Applications

PyPI License: MIT LongMemEval

Give your AI app persistent memory in 3 lines of code.

from becomer import Client
mem = Client("bk-your-api-key")
mem.store("User prefers dark mode and speaks French")
memories = mem.recall("user preferences")  # → ['User prefers dark mode...']

Get your free API key · Docs · Benchmarks · Examples


Why BECOMER

Most memory solutions bolt on a vector store and call it done. BECOMER uses a proprietary retrieval engine benchmarked against LongMemEval, the standard academic benchmark for long-term conversational memory.

BenchmarkBECOMERHindsight (next best)
LongMemEval (500 probes)94.4%91.4%

94.4% means when your user asks "what did I tell you about my diet last week?", the right memory surfaces. Not a vaguely related one. The right one.


Install

pip install becomer

Zero dependencies. Pure Python stdlib only.


Quick start

from becomer import Client

mem = Client("bk-your-api-key")

# Store anything worth remembering
mem.store("User is building a React app, prefers TypeScript")
mem.store("User's name is Sarah, she's a senior engineer at Stripe")

# Recall before each LLM call
context = mem.recall("what do I know about the user?")
# → ['User is building a React app, prefers TypeScript',
#    "User's name is Sarah, she's a senior engineer at Stripe"]

# Build your prompt with memory injected
system_prompt = "You are a helpful assistant.\n\nWhat you remember:\n" + "\n".join(context)

Three ways to integrate

1. Python SDK (this repo)

from becomer import Client
mem = Client("bk-your-api-key")
mem.store("...")
mem.recall("...")

2. MCP — works with Claude Desktop, Cursor, any MCP host

{
  "mcpServers": {
    "becomer": {
      "command": "python",
      "args": ["-m", "becomer"],
      "env": { "BECOMER_API_KEY": "bk-your-api-key" }
    }
  }
}

Claude will automatically store and recall memories across sessions. No code changes needed.

3. REST API — language-agnostic

# Store
curl -X POST https://becomer.net/v1/store \
  -H "Authorization: Bearer bk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{"content": "User prefers concise answers"}'

# Recall
curl -X POST https://becomer.net/v1/recall \
  -H "Authorization: Bearer bk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{"query": "user preferences", "top_k": 5}'

Multi-tenant (one key, many users)

Building a product where each of your users needs their own isolated memory? Pass user_id — no extra keys needed.

from becomer import Client

# One master key for your whole app
mem = Client("bk-your-master-key", user_id="user-alice")
mem.store("Alice prefers Python over JavaScript")

# Different user — completely isolated memory space
mem_bob = Client("bk-your-master-key", user_id="user-bob")
mem_bob.recall("programming preferences")  # → [] (can't see Alice's memories)

# Or override per-call
mem = Client("bk-your-master-key")
mem.store("Bob uses dark mode", user_id="user-bob")
mem.recall("preferences", user_id="user-alice")  # → Alice's memories only

MCP with per-user isolation:

{
  "mcpServers": {
    "becomer": {
      "command": "python",
      "args": ["-m", "becomer"],
      "env": {
        "BECOMER_API_KEY": "bk-your-master-key",
        "BECOMER_USER_ID": "alice-123"
      }
    }
  }
}

REST API:

curl -X POST https://becomer.net/v1/store \
  -H "Authorization: Bearer bk-your-master-key" \
  -H "Content-Type: application/json" \
  -d '{"content": "Alice prefers dark mode", "user_id": "alice-123"}'

user_id can be any string: a UUID, a username, an email — whatever your app uses internally. Memories across different user_id values are fully isolated. Billing counts against the master key.


LangChain

from langchain.memory import BaseMemory
from becomer import Client
from pydantic import Field

class BecomerMemory(BaseMemory):
    client: object = Field(default=None)
    memory_key: str = "history"

    def __init__(self, api_key: str, **kwargs):
        super().__init__(**kwargs)
        self.client = Client(api_key)

    @property
    def memory_variables(self):
        return [self.memory_key]

    def load_memory_variables(self, inputs):
        query = inputs.get("input", "")
        memories = self.client.recall(query)
        return {self.memory_key: "\n".join(memories)}

    def save_context(self, inputs, outputs):
        self.client.store(f"User: {inputs.get('input','')} | AI: {outputs.get('output','')}")

    def clear(self):
        self.client.forget()

# Usage
from langchain.chains import ConversationChain
from langchain_openai import ChatOpenAI

chain = ConversationChain(
    llm=ChatOpenAI(model="gpt-4o"),
    memory=BecomerMemory(api_key="bk-your-api-key")
)
chain.predict(input="My name is Sarah and I work at Stripe")
# Next session — Sarah is still remembered.

OpenAI / Anthropic direct

import openai
from becomer import Client

mem = Client("bk-your-api-key")

def chat(user_message: str) -> str:
    context = mem.recall(user_message)
    system = "You are a helpful assistant."
    if context:
        system += "\n\nWhat you remember about the user:\n" + "\n".join(f"- {m}" for m in context)

    response = openai.chat.completions.create(
        model="gpt-4o",
        messages=[
            {"role": "system", "content": system},
            {"role": "user", "content": user_message},
        ]
    )
    reply = response.choices[0].message.content
    mem.store(f"User said: {user_message}")
    return reply

API reference

MethodDescription
Client(api_key, user_id=None)Create a client. user_id namespaces all calls to a sub-user.
store(content, user_id=None)Store a memory
recall(query, top_k=5, user_id=None)Retrieve top-k relevant memories
forget(user_id=None)Delete all memories for this key (or sub-user)
sync(user_id=None)Consolidate working memory into long-term storage

Full REST API docs → becomer.net/docs.html


Examples

FileFramework
quickstart.pyPlain Python
openai_chat.pyOpenAI SDK
anthropic_chat.pyAnthropic SDK
langchain_memory.pyLangChain
langgraph_memory.pyLangGraph
llamaindex_memory.pyLlamaIndex
crewai_memory.pyCrewAI
autogen_memory.pyAutoGen
mcp.jsonMCP (Claude Desktop / Cursor)
mcp_multitenant.jsonMCP multi-tenant

Pricing

PlanCalls/monthPrice
Free1,000Free forever
Pro50,000₹1,140/mo

Get started free →


Built by

Obsidex Pvt Limited · Aravind Balaji, Founder · hello@becomer.net

Server Config

{
  "mcpServers": {
    "becomer": {
      "command": "python",
      "args": [
        "-m",
        "becomer"
      ],
      "env": {
        "BECOMER_API_KEY": "your-key"
      }
    }
  }
}
Project Info
Created At
2 months ago
Updated At
a month ago
Author Name
Becomer-net
Star
-
Language
-
License
-
Category
Tags

Recommend Servers

View All
Teardrop

11 days ago