O registro oficial da memória de agentes v0.7.0 · pre-release · AGPL-3.0

O problema da memória dos agentes

A memória dos agentes guarda tudo. Verdade ou não.

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 AGPL-3.0. Auto-hospedado, local-first: sem conta, sem API key, sem cobrança.

Admitidogrounding 0.97
Escrita candidata
«O deploy usa PostgreSQL 16.»
fonte ⊢ fato — a nota de versão citada implica a afirmação.
status ADMITIDO · salvo com proveniência.
§01 O portão de admissão

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»; depois, ativada por padrão desde a v0.5.0, uma verificação de implicação fonte⊢fato recusa qualquer afirmação que a fonte citada não sustente de 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. — e uma pesquisa independente de 2026 sobre agentes always-on (arXiv 2606.30306) observa que o campo se concentra muito mais em acumular e recuperar o estado do agente do que em governá-lo — exatamente a lacuna do write-admission.

Ilustrativo — o portão em três veredictos

Admitido0.97
Escrita · implicada
«O deploy usa PostgreSQL 16.»
ADMITIDO · salvo com proveniência
Rebaixado0.41
Escrita · sem respaldo
«A migração está feita e tudo funciona.»
REBAIXADO · mantido, marcado como baixa confiança
Recusado0.08
Escrita · contradita
«O limite da API é 10.000 req/s.»
RECUSADO · a fonte diz 1.000 — não salvo

Proveniência em cada leitura

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. explain() devolve um TrustReport completo — proveniência, verificações e qualquer conflito, declarado ou com abstenção motivada.

memory.py · a escrita passa pelo portão, a leitura devolve a proveniência

from verimem 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
§02 Evidências — medidas, não proclamadas
MétricaResultadoPara constar
Entailment do portão de escrita AUROC 0.971 Fonte⊢fato, independente do juiz (SNLI). O moat do caminho de escrita.
QA end-to-end · HaluMem, pipeline completa 0.66–0.68 Nossa extração → store com gate → resposta: sete execuções completas consecutivas se agrupam em 0.66–0.68 (média 0.667, n=3 limpas) contra o 0.672 auto-reportado do MemOS — paridade, não vitória, e é assim que dizemos. O juiz é Claude, não GPT-4; arquivos raw no repo.
Generalização cross-user 0.716 A mesma receita com um usuário nunca visto (n=169): 0.716. A receita não está ajustada aos dados de um único usuário.
Abstenção memory-boundary 1.000 × 7 runs Recusa-se a inventar quando o store não sustenta uma resposta — 1.000 em sete execuções end-to-end consecutivas. O eixo que os concorrentes não medem.
Buraco multilíngue do gate — fechado 8/10 → 0/10 Reproduzido de testes ao vivo: a mesma alegação hype sem respaldo passava limpa em 8 de 10 idiomas (o screen léxico era só EN/IT). Corrigido com um dual-check semântico que usa o próprio embedder multilíngue como detector, depois endurecido por uma review adversarial que falsificou o primeiro claim de "0 FP" em frases held-out: perguntas, negações e discurso reportado agora são excluídos por guardas determinísticas, by design. Pós-fix no write path real: hype sinalizado em 10/10 idiomas, falsos positivos held-out 0/14 — script de calibração, achados da review e arquivos raw no repo.
Resolução de conflitos de memória 0.15 → 0.82 Uma atualização contraditória vence 5,5× mais vezes após o fix; retiradas erradas reduzidas 99 → 7 com o floor de precisão (0 cross-atributo). Veredicto do critic adversarial: claim_holds.
Taxa de alucinação (um dial) 0.233 → 0.111 −52% como interruptor (ENGRAM_GROUNDING_GATE), mantendo as respostas corretas. Você escolhe recall-first ou trust-first — em QA e no caminho de escrita.
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). Isto é recall@k, não exatidão QA de ponta a ponta.
Latência · concorrência 38ms / 166–237ms Escrita 38ms p50 com o portão completo; leitura 166–237ms com história + TrustReport a 5k fatos. 500 processos concorrentes sobre um único store SQLite, 0 erros (workers leves).
Suíte de testes 7.761 no verde Auto-executados, reproduzíveis a partir do repo. Sem ranking de terceiros. Um teste smoke ao vivo contra o provedor LLM depende do ambiente (requer provedor hosted) e fica fora da contagem.
TrustMem-Bench · eixos de trust Verimem 60/60 Nosso benchmark de trust determinístico — sem LLM, sem rede: seis eixos, um comando. Verimem passa 60/60; mem0 OSS cobre 40/60 (0/10 em ausência, esquecimento, procedência). Uma baseline raw-store de propósito — convidamos os concorrentes a executá-lo.
VeriBench · o padrão de confiança determinístico · self-run O benchmark aberto para memória confiável — mede o que recall@k não vê, porque uma pontuação simétrica não distingue uma resposta errada e confiante de um honesto "não sei". No eixo causal, um store só-trust que corroborou uma correlação espúria fica negativo até em λ=1 (proveniência ≠ causalidade). No eixo adversarial — conluio mais um sleeper confiável — só uma política de dois canais (corroboração independente e resultado) permanece positiva; cada canal sozinho cai diante de um ataque. Sem modelos, um comando, spec no repo — concorrentes convidados a executá-lo. Resultados completos, protocolo e head-to-head →
Source trust em corpus REAL cartel 0.90 → 0.20 · 3/3 seeds HaluEval held-out, critérios pré-registrados antes da primeira execução: um cartel de 4 identidades que se auto-confirma a 0.90 na contagem naive de ≥2 fontes é demolido para 0.20 por independência + deconfounding na auditoria; fontes honestas sobem a 0.95, as respostas alucinadas do cartel somem do recall (→ 0.0). Curva de robustez (18 pontos): respostas erradas escritas por enganadores = 0/18 em todo nível de ruído; o resíduo são erros honestos — doença per-claim, declarada, não escondida.
Botão SLA · opera no risco declarado TCE ≤ 0.011 · risco 1,1% @ 73% coverage Um AUROC forte diz que as pontuações discriminam; não diz que o botão λ opera no risco declarado (Oxford 2603.21172). Medido held-out com calibração ajustada só em dev: pontuações raw ordenam quase-oráculo (E-AURC 0.0008) mas prometem um risco diferente do entregue; após uma calibração isotônica pura cada alvo λ declarado é cumprido — TCE ≤ 0.011 em λ ∈ {0.5–9}, risco observado 1,1% com 73% de coverage. Trade-off declarado: a calibração achata o ranking fino — raw para ordenar, calibrado para operar.

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.

§03 A diferença — uma combinação honesta

01Gate de admissão na escrita

Admite, rebaixa ou recusa cada escrita por entailment da fonte. Nenhum concorrente aqui entrega um — e desde julho é multilíngue: o mesmo screen semântico em 10 idiomas, calibrado a 0 falsos positivos.

02Proveniência + TrustReport

Cada fato retorna status + grounding_score; update() substitui, history() permanece auditável; explain() entrega o dossiê completo de "como você sabe?".

03Bi-temporal + time-travel

Dois relógios (quando aprendido vs quando verdadeiro), resposta-com-histórico ("mudou de X para Y em Z"), time-travel as_of e recall profundo de fatos dormentes — não só valid_until.

04Gateway self-host para equipes

verimem gateway serve: API HTTP multi-tenant na sua própria máquina — chaves hasheadas, stores isolados por tenant, rate limiting, backups a quente, provisioning remoto. Seus dados nunca saem da sua infraestrutura.

05Odômetro de confiança + dashboard

Contadores persistentes do que o gate realmente FEZ — escritas admitidas, em quarentena, recusadas, abstenções honestas — por store e por tenant, com uma página /dashboard sem dependências. Ações observáveis, não claims de marketing.

06Memória documental com citações exatas

Indexa PDF / DOCX / HTML / EPUB; os trechos voltam com arquivo, versão e offsets de caracteres, e podem ser promovidos a memória através do gate.

07Import consent-first

Comece do seu export do ChatGPT / Claude: as conversas são listadas primeiro, filtráveis por título, data ou projeto — nada é ingerido sem uma seleção explícita.

08Esquecimento GDPR que se mantém

delete(purge_history=True) colapsa a cadeia inteira — dados apagados não ressurgem de history, as_of ou do recall profundo.

09MCP-nativo + SDK TypeScript

Ferramentas de memória no início da sessão em Claude Code, Cursor, Cline, Zed — mais um cliente TypeScript tipado e sem dependências para o gateway, contract-tested contra o servidor vivo.

10Roda na sua assinatura

Modo MCP hosted: sem API key, sem billing por token — o LLM do host faz o trabalho. Roda air-gapped (verimem airgap verifica zero egress).

11Conhecimento derivado, com gate

O anel de composição deriva fatos NOVOS dos verificados e os passa pelo MESMO gate de admissão de qualquer escritor — sobreviventes entram assinados (escritas do motor nunca testemunham por si), rastreados (retratáveis se um pai cair) e rotulados com o check exato aprovado: proven / unbeaten(bound) / refuted(contraexemplo). "Aguentou até 10^6" e "provado" nunca se confundem.

12Guardião na leitura + sondas ativas

Uma leitura não apenas se abstém — quando o store guarda uma verdade melhor garantida sobre o mesmo sujeito, CORRIGE, citando os dois fatos (um fato refutado nunca é servido). E o store sonda A SI MESMO: constrói a query que refutaria um fato — contraevidência independente propõe o rótulo refuted, sobreviver faz crescer seu bound unbeaten. Falsificação que você não precisa esperar.

13Assinatura de proveniência

Um HMAC infalsificável de QUEM fala viaja dentro do ref de proveniência de cada escrita, complementando o gate de entailment sobre O QUE merece admissão. Autenticidade do conteúdo e autenticidade do canal — as duas metades que nenhum filtro de conteúdo determinístico sozinho pode certificar contra um adversário adaptativo. Opt-in; a auditoria reporta cobertura e nomeia os infratores.

SistemaPortão de escritaProveniência na leituraAbordagemMaturidade
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.

§04 O que a Verimem NÃO é
para constar
  • 0 adoção.

    Um lançamento novíssimo. Ninguém depende dele ainda — nós inclusive, além do uso diário do maintainer.

  • No PyPI · repo público.

    pip install verimem — v0.7.0 no PyPI (AGPL-3.0); o repo público está no GitHub, com a primeira CI verde. Ainda assim, novíssimo.

  • Guardas source-trust — reproduzidas em corpus real, ainda opt-in.

    A independência de proveniência e o deconfounding na auditoria agora se sustentam em um corpus real held-out (HaluEval, critérios pré-registrados, 3/3 seeds): um cartel de consenso fabricado que se auto-confirma a 0.90 na contagem naive é demolido para 0.20, fontes honestas sobem a 0.95, e suas respostas alucinadas somem do recall. Limite honesto, medido: sob ruído honesto pesado (fontes confiáveis errando ~15%+) a separação degrada — o resíduo é 100% erros honestos, doença per-claim, não um ataque. As flags seguem default OFF: a evidência informa a virada, a virada é decisão de produto.

  • Escopo: proveniência, não causalidade.

    Cada TrustReport agora o declara — Verimem certifica quem afirmou um fato, quão independentemente foi corroborado e quão fresco é, não que seja causalmente verdadeiro. Uma pergunta do(X) exige um fato intervencional; um observacional corroborado não pode respondê-la.

  • Benchmarks próprios.

    Cada número é reproduzível a partir do repo, mas nenhum é auditado por terceiros. O número QA vs MemOS usa um juiz Claude (não GPT-4) sobre n=2 usuários. Trate-os como reproduzíveis, não certificados.

  • Paridade end-to-end — auto-julgada.

    A pipeline completa (nossa extração → QA) se agrupa em 0.66–0.68 ao longo de sete execuções consecutivas (média 0.667 em n=3 stores limpos) contra o 0.672 do MemOS, e mantém 0.716 com um usuário nunca visto. O caveat permanece: o juiz é Claude, não GPT-4, sem auditoria de terceiros. Dizemos paridade, não "vence".

  • Self-host sim — cloud gerenciado não.

    O gateway multi-tenant (stores isolados por tenant, chaves hasheadas, backups, metering) é real e testado — na sua infraestrutura. Um serviço cloud gerenciado ainda não existe.

  • Grafo de entidades: tipado, opt-in, jovem.

    A extração de entidades conversacionais (tier tipado) está shipped mas desligada por padrão; o raciocínio multi-hop sobre o grafo é o eixo medido mais fraco (0.39–0.44) e a frente de trabalho atual.

§05 Instalar

① Python — a partir da fonte

pip install verimem

Fornece o comando verimem e o SDK from verimem import Memoryadd() / search() / history() / explain(). SQLite local, offline, portão ativo por padrão.

github.com/aureliocpr-ctrl/verimem ↗ · AGPL-3.0 · README · BENCHMARKS.md

② Como servidor MCP — Claude Code, Cursor, Cline, Zed

{
  "mcpServers": {
    "verimem": {
      "command": "verimem",
      "args": ["mcp"],
      "env": { "ENGRAM_HOSTED": "1" }
    }
  }
}

Reinicie o seu host; as ferramentas de memória ficam chamáveis com zero API key — o LLM do host faz o trabalho.

③ Gateway self-host para equipes

verimem gateway keys create --tenant acme
verimem gateway serve   # 127.0.0.1:8377 · /ui

verimem gateway keys create --tenant acme e depois verimem gateway serve — API HTTP multi-tenant com stores isolados por tenant, rate limiting e backups a quente. Abra /ui para o odômetro de confiança; há um cliente TypeScript tipado no repo.

④ Vê-la a trabalhar — a consola de confiança

verimem console   # your store · odometer · graph · live

verimem console abre o seu repositório local no navegador — odómetro de confiança, grafo de conhecimento em que cada conclusão carrega a sua cadeia de custódia, registo de afirmações bloqueadas, ao vivo via SSE. O gateway de equipa serve a mesma consola em /ui; os agentes leem o estado completo em /v1/snapshot.