Fair Source · Self-host in 1 command

Agents call the LLM only for what they've never seen.

Memflex gives AI agents reflexes + verified memory. Everything seen before answers in ~50ms at ₹0 — in any language.

73.3% served from memory0ms repeat latency14+ languages
Get started in 5 minHow it works
memflex — live
73.3%asks served from memory (30-ask bench)
~0msrepeat latency (vs 7–10s cloud LLM)
₹0cost per memory answer
0LLM calls on a memory hit — guaranteed

Don't take our word for it — try it.

Ask anything twice on the live playground — first the LLM thinks, then memory answers free. Samples included.

Open the playground
Drop-in

One line. Any framework.

Point your existing OpenAI or Claude client at Memflex. Same API, plus reflex_source on every answer.

from reflex.plug import openai_client

chat = openai_client()  # -> your Memflex server
r = chat.chat.completions.create(
    model="claude/claude-sonnet-4-5",
    messages=[{"role": "user", "content": "When will my refund arrive?"}],
    user="u123",
)
print(r.choices[0].message.content)  # your language, answered in-kind (try German or Spanish too)
print(r.reflex_source, r.reflex_confidence)  # reflex 0.9
# 1st time: "source": "llm" — thinks, then memorizes
curl -X POST http://localhost:8000/ask \
  -H 'Content-Type: application/json' \
  -d '{"user_id":"u123","message":"Wo ist meine Rückerstattung?",
       "llm":"mock/mock-echo"}'

# 2nd time: "source": "reflex" — memory, ~0ms, ₹0
import OpenAI from "openai";

const chat = new OpenAI({ baseURL: "http://localhost:8000/v1", apiKey: "x" });
const r = await chat.chat.completions.create({
  model: "ollama-cloud/gpt-oss:20b",
  messages: [{ role: "user", content: "Where is my order?" }],
});
// r.reflex_source === "reflex" — zero LLM call
Why it works

System 1 for agents, System 2 on standby.

Check memory first

Every request is embedded and scored in <10ms: similarity × track-record × recency − corrections. Above 0.85 → instant answer, zero LLM calls.

Think only on novelty

First-seen situations go to your LLM (OpenAI, Claude, Gemini, Ollama, DeepSeek…), then distill into a reflex with confidence + TTL. Next identical request is free.

Never trust blindly

Stale memories re-verify, wrong ones die after a few 👎, volatile answers expire in 1 day. How it works →

Use cases

Where it wins. With receipts.

Repeat + stable + high-volume. Each card shows a real shape of answer — try them on the playground.

Support bots

60–80% of tickets are repeats. Second identical ask costs nothing.

LLM · 1st“When will my refund arrive?”REFLEX 0.90 · 2ndsame answer · 1ms · ₹0

Triage & routing

Classify once, route forever — as typed JSON your code can branch on.

LLM · 1st“REFUND-2211 status?”REFLEX · always{"refund_status": "processing"}

Voice & live chat

7-second pauses kill realtime. Memory answers in milliseconds.

LLM · 1st“Where's my order?” · 8.2sREFLEX · 2ndsame answer · 0ms

Tool-agents

Planner + tools run once; the composed answer is memorized.

LLM+tools · 1stcompute_refund_eta() firedREFLEX · 2ndzero tools · zero LLM

Approval gates

Auto-approve the calibrated band, escalate the rest.

LLM · 1stconf 0.80 → humanREFLEX · laterconf 0.93 → auto-approve

Extraction & forms

Same schema, same fields, every time — no per-row LLM tax.

LLM · 1storder → {id, status}REFLEX · 1000thsame schema · ₹0
Every language

Every language. No favorites.

Same-language repeats work everywhere — English, Hindi, German, Tamil, Japanese, Arabic and more. Spelling variants converge via tiny language plugins; a new one is a 5-minute dict.

When will my refund arrive?Wo ist meine Rückerstattung?¿Dónde está mi entrega?Quand mon remboursement arrivera-t-il ?எனது பணம் திரும்ப எப்போது வரும்?返金はいつ届きますか?متى سيصل استرداد أموالي؟我的退款什么时候到?
Landscape

Cache ≠ memory. And nobody verifies.

Portkey gates semantic cache behind Enterprise. Mem0 still runs the LLM on every request. GPTCache never learned confidence. Full comparison →

₹0

per repeat answer. Portkey charges per token forever; Jev charges per billion.

1 command

self-host: SQLite file, no vector DB, no external services. Data never leaves.

0 hallucinations

served from memory — nothing is generated on a hit. Wrong memories self-bury.

Open core

Free to run. Fair to build on.

Server is Fair Source (free for nearly all uses, Apache in 2 years). Thin client is Apache-2.0 forever. Pricing →

Start self-hostingStar on GitHub
FAQ

Asked by every agent builder.

Will memory make my LLM hallucinate?

No — hits serve stored answers verbatim; nothing is generated. Serving is gated by calibrated confidence, wrong memories die after a few thumbs-downs, and volatile answers expire in a day. How trust works →

Which languages work?

Every language. Repeats match in Hindi, German, Tamil, Japanese, Arabic and more; spelling variants converge via tiny plugins. A new language is a 5-minute dict. Multilingual →

How is this different from Mem0 or GPTCache?

Mem0 stores facts but still runs the LLM on every request. GPTCache caches with no confidence or verification. Memflex answers repeats with zero calls and verifies what it remembers. Full comparison →

Do I need an API key to start?

No. The built-in mock runs the full loop keyless. Plug OpenAI, Claude, Gemini, Ollama or DeepSeek keys when you want real inference.

Where does my data live?

In one SQLite file on your machine. Nothing leaves unless you configure an upstream LLM. Delete any memory anytime.

What does it cost?

Self-hosting is free forever; memory answers cost ₹0 by design. A managed tier comes later. Pricing →

Day-1 refund was "processing", day-2 it's done — will Memflex lie?

No. Time-varying answers (status, ETA, "processing") auto-expire in 1 day. Expired memory is never served — the next ask goes back to the LLM for a fresh verdict and re-learns into the same record.

What if I just type "refund??" the next day?

You get the same answer. Bare follow-ups expand from your last message, so shorthand resolves to the same conversation — same situation key, same answer.

Won't the database fill up?

No. Repeats update the same record instead of adding rows — 1 lakh asks of 100 intents is ~100 rows, a few MB. Growth follows variety of questions, not traffic volume.

Does that mean extra infra or storage cost?

No. The whole memory is one SQLite file (a few MB), no vector-DB server needed. Compare that against the ~70% LLM bill it removes.

What do memory answers look like?

Three kinds: the exact stored answer, templates with per-request variables ({name} filled from your request context), or typed JSON via output schemas — all with zero LLM calls.

Can I control how long a memory lives?

Yes. Set TTL per ask, per saved reflex, or edit it anytime from the console's Memory tab (1–365 days). Volatile facts default to 1 day, stable FAQs to 30.

Does it work with voice agents?

Yes — LiveKit connects via standard OpenAI-protocol streaming (base_url + caller identity), and repeats stream back from memory in milliseconds, which is exactly what turn-taking needs.

Contact us

Building agents? Talk to us.

Design partnerships, enterprise questions, language requests, or just show us what you built — we reply.

Email

contact@memflex.dev
Partnerships, enterprise, press.

GitHub

github.com/memflex
Issues, ideas, pull requests.