01Portão de admissão na escrita
Admite, rebaixa ou recusa cada escrita por implicação da fonte. Nenhum concorrente aqui tem um.
O problema da memória dos agentes
A Verimem é uma camada de memória persistente cujo add() faz cada escrita passar por um portão de admissão anti-confabulação — a fonte realmente implica o fato? — e cujo search() devolve proveniência em cada leitura. Um hipocampo com um tabelião à porta.
✓ 100% gratuito e open source — licença MIT. Auto-hospedado, local-first: sem conta, sem API key, sem cobrança.
As outras camadas de memória guardam o que quer que o extrator produza. A Verimem não.
Na escrita, um fato candidato é admitido, rebaixado ou recusado — conforme a fonte citada realmente o implique. Um filtro léxico barato, sem LLM, rebaixa primeiro as afirmações sem respaldo do tipo «funciona / verificado / feito»; o modo mais estrito adiciona uma verificação de implicação fonte⊢fato. Medido em SNLI atinge AUROC 0.971, e esse número é independente do juiz.
Uma revisão estruturada de mem0, Zep, Letta, Cognee e MemOS constatou que nenhum deles traz um portão de admissão na escrita. Esse portão — mais a proveniência que cada leitura traz de volta — é o ponto todo.
Ilustrativo — o portão em três veredictos
As leituras não devolvem só texto — devolvem de cada fato o seu status e o grounding_score do momento da escrita, para o seu código condicionar por confiança em vez de confiar às cegas. E update() nunca destrói o fato antigo: ele o substitui, deixando um rastro history() auditável.
memory.py · a escrita passa pelo portão, a leitura devolve a proveniência
from engram import Memory
mem = Memory() # local SQLite, offline
mem.add("The deployment uses PostgreSQL 16.") # write goes THROUGH the gate
for hit in mem.search("which database?"): # read returns provenance
print(hit["text"], hit["status"], hit["grounding_score"])
# -> The deployment uses PostgreSQL 16. ADMITTED 0.97 | Métrica | Resultado | Para constar |
|---|---|---|
| Entailment do portão de escrita | AUROC 0.971 | Fonte⊢fato, independente do juiz (SNLI). O moat do caminho de escrita. |
| Alucinação a jusante | 95.9% → 12.2% | −83,7 pp; McNemar p≈6e-44, replicado em 2 seeds. Funciona convertendo a confabulação em abstenção (omissão 3%→85%), não elevando a correção — e este braço é acoplado ao juiz. |
| Over-rejection de fatos limpos | 30–39% | O custo honesto no limiar estrito. O portão local destilado (v2) admite 0,924 dos fatos limpos, fechando isso em grande parte. |
| Retrieval recall@5 · LongMemEval-s | 0.8745 | 500 completo, sem juiz, mesmo embedder e5, zero APIs externas. Fusion ON vs 0.8525 OFF (+2,2 pp). Um n=300 anterior dava 0.909 — otimista; o número sobre 500 completo é o honesto. Isto é recall@k, não exatidão QA de ponta a ponta. |
| Retrieval em italiano | MRR +52% | 0.466 → 0.710 ao trocar para o embedder e5, com zero regressão no inglês. |
| Detecção de contradições · HaluMem | TPR 0.66 / FPR 0.0125 | Após a correção da supersessão temporal. |
| Suíte de testes | 5.830 no verde | 764 arquivos de teste, ~84k linhas. Auto-executados, reproduzíveis a partir do repo. |
Cada número aqui é auto-executado e reproduzível a partir do repositório — não é uma colocação em ranking de terceiros. Os números de retrieval são recall@k, não a exatidão QA de ponta a ponta que Mem0 e Zep destacam, então não são diretamente comparáveis.
Admite, rebaixa ou recusa cada escrita por implicação da fonte. Nenhum concorrente aqui tem um.
Cada fato devolve status + grounding_score; update() substitui, history() continua auditável.
valid_until com expiração firme — uma memória que sabe quando um fato deixou de ser verdade.
Modo MCP hosted: sem API key, sem cobrança por token — o LLM do host faz o trabalho.
Uma tela anti prompt-injection na escrita — italiano incluído, não só inglês.
228 ferramentas de memória no início da sessão em Claude Code, Cursor, Cline, Continue, Zed.
| Sistema | Portão de escrita | Proveniência na leitura | Abordagem | Maturidade |
|---|---|---|---|---|
| Mem0 | ✗ | ✗ | Vetor plano + resumo LLM | Consolidado, amplamente adotado |
| Zep / Graphiti | ✗ | parcial (temporal) | Grafo de conhecimento temporal | Comercial, maduro |
| HippoRAG | ✗ | ✗ | OpenIE + PageRank | Pesquisa |
| Verimem | ✓ | ✓ | Fusion recall + portão + consolidação no sono | Novíssimo · 0 adoção ainda |
Os placares e a adoção dos concorrentes variam por fonte e ao longo do tempo; as duas colunas em que nos apoiamos — um portão de escrita e proveniência na leitura — vêm de uma revisão estruturada, não de uma tabela de marketing.
Um lançamento público novíssimo. Ninguém depende dele ainda — nós inclusive, além do uso diário do maintainer.
Por ora instala-se a partir da fonte / git. Um pacote engram-memory é um alvo pós-v0.4.0.
Cada número é reproduzível a partir do repo, mas nenhum é auditado por terceiros. Trate-os como reproduzíveis, não certificados.
Usuário único e local. O scoping multi-tenant existe na camada de fatos; um store hospedado / distribuído não.
O motor entidade+PageRank está vivo sobre dados reais mas o extrator é regex determinístico, executado como backfill — ainda não conectado ao caminho de escrita ao vivo.
Uma revisão adversária achou inflada a primeira demo de condicionamento na resposta. Só o moat do caminho de escrita se sustenta com a própria evidência — então é tudo o que afirmamos.
① Python — a partir da fonte
pip install "git+https://github.com/aureliocpr-ctrl/verimem.git" Fornece o comando engram e o SDK from engram import Memory. SQLite local, offline, portão ativo por padrão.
github.com/aureliocpr-ctrl/verimem ↗ · MIT · README · BENCHMARKS.md
② Como servidor MCP — Claude Code, Cursor, Cline, Zed
{
"mcpServers": {
"engram": {
"command": "engram",
"args": ["mcp"],
"env": { "ENGRAM_HOSTED": "1" }
}
}
} Reinicie o seu host; as ferramentas de memória ficam chamáveis com zero API key. O motor é distribuído hoje como engram — a renomeação para Verimem está em andamento.