Engram

Servidor MCP auto-hospedado + painel que dá aos agentes memória compartilhada através de uma pasta de markdown com suporte a git.

Documentação

Engram logo

Engram

O segundo cérebro que seus agentes de IA leem e escrevem.

Engram demo — a home dashboard with recent activity and a Claude Code agent querying the vault

▶ Assista ao vídeo completo (tempo real, qualidade total)

↗ Experimente a demonstração ao vivo — sem cadastro. Pesquise preço de retenção e veja a nota aposentada ser retida.

Engram - Agent memory that knows what's still true | Product Hunt


Engram é um servidor MCP + painel auto-hospedado que dá ao Claude Code, Cursor, Hermes e a qualquer agente do Model Context Protocol memória compartilhada e de longo prazo que eles leem e escrevem — por meio de uma pasta simples, com suporte a git, de markdown que você possui. Construído para o caso em que a memória de um único agente nunca alcança: uma equipe executando vários agentes contra um único cérebro.

Agentes autônomos esquecem tudo entre sessões — e pior, não conseguem dizer se o que lembram ainda é verdade. Um agente puxa um README antigo, um preço aposentado, um documento de API que você mudou há meses, e o cita com total confiança, porque a busca por palavras-chave e vetores classifica por semelhança, não por verdade. Engram torna "isso ainda é verdade?" uma propriedade escrita de primeira classe: marque um fato como substituído ou expirado e a busca o retém — e diz ao agente o que foi ignorado e por quê. Tokens de leitura/escrita por agente e um trilho de auditoria git de quem-escreveu-o-quê mantêm a sanidade quando os escritores são uma frota, não apenas você.

Ao contrário de um armazenamento de memória sem cabeça, você pode ver acontecer. Um painel rápido permite pesquisar seu cérebro, ver exatamente o que cada agente e colega mudou (com diffs por arquivo), voltar para notas recentes e curar tudo — enquanto os agentes leem e escrevem no mesmo cofre por um único endpoint MCP. Sem banco de dados: seus arquivos .md são a fonte da verdade, o git é o armazenamento durável, e um índice em memória alimenta a busca de texto completo + um grafo de conhecimento de wikilinks.

Deploy on Railway Deploy to Render

CI License: MIT Docker

Opinativo sobre como armazena memória — markdown com suporte a git, sem banco de dados, agentes escrevem (não apenas leem), auto-hospedado. Não opinativo sobre o que você mantém nele — qualquer cofre markdown, qualquer estrutura de pastas, qualquer cliente MCP. Aponte-o para um repositório novo ou seu cofre Obsidian existente: sem etapa de importação, sem aprisionamento.


Para que serve · Como se compara · Recursos · Funciona com · Início rápido · Ferramentas MCP · Implantar · FAQ · Contribuindo


Para que serve

  • Memória compartilhada para uma equipe executando vários agentes — um cofre, muitos agentes lendo e escrevendo simultaneamente, com tokens de leitura/escrita por agente e um trilho de auditoria git de quem mudou o quê.
  • Memória que sabe o que ainda é verdade — aposente um preço, um termo ou um documento de API alterado e seus agentes param de citá-lo; eles são informados do que foi ignorado e por quê. A falha que a memória de um único agente nunca corrige.
  • Memória de longo prazo para Claude Code e outros agentes de codificação — pare de reexplicar seu projeto a cada sessão.
  • Um segundo cérebro auto-hospedado e compatível com Obsidian exposto via MCP — suas notas, seu servidor, seu repositório git.
  • Memória que você pode ver, não uma caixa preta — um painel para pesquisar, observar (com diffs) e curar o que seus agentes lembram.
  • RAG de markdown sem o banco de vetores — busca de texto completo + um grafo de links sobre arquivos legíveis por humanos.

Como se compara

A maioria das memórias de agente é construída para responder "o que eu armazenei sobre isso?" Engram é construído para responder "o que ainda é verdade sobre isso?" — uma pergunta diferente, e a que morde quando um agente cita um preço que você aposentou há meses.

EngramMemória de vetores
(mem0, Zep, …)
Memória de markdown
(Basic Memory, …)
RAG simples sobre documentos
Armazenamentoarquivos markdown, git é o banco de dadosembeddings em um banco de vetoresarquivos markdownembeddings em um banco de vetores
Classificaçãorelevância × autoridadesimilaridaderelevânciasimilaridade
Sabe que um fato está aposentadosuperseded_by + valid_until, aplicado na busca
Explica o que foi retidoexcluded[] com um motivo por nota
Aposenta + substitui atomicamentebrain_supersede, um commit
Recusa escritas contraditórias✅ no momento da escrita, não da leituran/a (somente leitura)
Trilho de auditoria✅ git, atribuição por escrita, diffs por arquivovariagit, se você fizer commit
Controle de acesso por agente✅ escopos de token de leitura / escritavaria
Interface humana✅ painel, busca, diffs, grafovaria
Executa emsua máquina, um contêinerprincipalmente SaaS hospedadosua máquinasua máquina

A linha que importa é a terceira. A busca por similaridade não consegue distinguir uma contradição de um duplicado — um preço aposentado e um ativo são textualmente idênticos, então o aposentado muitas vezes supera o ativo por ser mais longo e detalhado. Isso não pode ser corrigido no momento da leitura, por isso Engram registra a aposentadoria quando ela acontece.

Engram dashboard showing a note marked locked, superseding an earlier pricing note, with backlinks

Este par exato está incluído em sample-vault/. Execute bun dev, pesquise preço acme, e veja a nota aposentada ser retida com um motivo.

Categorias, não auditorias recurso por recurso de produtos específicos, e precisas até onde sei em julho de 2026. Se algo aqui deturpar uma ferramenta que você mantém, abra um PR — corrigirei.

Recursos

  • Servidor MCP — 15 ferramentas brain_* em um único endpoint HTTP autenticado por bearer (POST /api/mcp, JSON-RPC HTTP streamable). Conecte qualquer cliente MCP a uma única URL. Escopos de token por agente: um token somente leitura nunca vê nem as ferramentas de escrita.
  • Painel humano — uma página inicial focada em busca, árvore de arquivos, visualizador de notas com callouts do Obsidian, wikilinks e backlinks, editor Preview / Edit / Split com salvamento automático, busca ⌘K + navegação por teclado na página, "voltar para" recentes, e um grafo de conhecimento com força direcionada.
  • Busca ciente de autoridade — a classificação sabe relevância, não verdade, então uma nota substituída repete suas palavras de consulta tanto quanto a ativa. Cada resultado carrega uma autoridade (authoritativecurrentprovisionalsupersededarchived) derivada da pasta e do frontmatter da nota — para que seus agentes citem o documento bloqueado, não o morto. RAG de markdown que não devolve a resposta de ontem.
  • Validade temporal + rejeição explicável — marque um fato como superseded_by outra nota ou dê a ele uma data de valid_until, e a busca o retém por padrão (mesmo se for locked) — e então entrega ao agente uma lista excluded do que foi ignorado, cada um com um motivo ("expired 2026-06-01"). Um brain_supersede atômico aposenta o fato antigo e vincula o novo em um único commit, para que adicionar-e-aposentar não possa divergir. Essa é a diferença entre um agente que lembra e um que sabe o que é ainda verdade.
  • Guardas de contradição no momento da escrita — a classificação por autoridade corrige a leitura; estas impedem o cofre de aceitar a contradição em primeiro lugar. Engram se recusa a criar uma segunda nota ativa sobre um assunto que uma nota ativa já cobre (o bug acme-pricing-2026.md-ao-lado-de-acme-pricing.md) e aponta o agente para brain_supersede em vez disso; recusa-se a sobrescrever uma nota que o chamador não leu; e avisa quando um status: não é uma palavra que o modelo de classificação conhece, para que um erro de digitação não possa silenciosamente remover a autoridade de uma nota.
  • Trilho de auditoria + controle de acesso — cada escrita é atribuída no git ao token ou humano que a fez, com diffs por arquivo expansíveis no feed de atividade. Dê a um agente um token somente leitura e ele nunca vê nem as ferramentas de escrita; um token de escrita pode criar, editar, mover e arquivar.
  • O Curador (opcional) — o harness de agente integrado do Engram sobre seu cofre. Converse com suas notas (respostas fundamentadas, citações com wikilinks). Ou entregue a brain_capture um despejo bruto — uma nota de reunião, um transcrição de voz — e um loop agêntico pesquisa o que já existe, então arquiva, mescla ou arquiva e retorna um manifesto do que tocou. Ele lê antes de sobrescrever e nunca exclui. Opus / Sonnet / Haiku, sua chave.
  • Nativo de markdown.md simples + frontmatter YAML + [[wikilinks]]. Coloque um cofre Obsidian existente e ele simplesmente funciona.
  • Com suporte a git — commit e push automáticos opcionais de cada mudança. Histórico completo, sem aprisionamento, seus dados vivem no seu repositório.
  • Sem banco de dados — os arquivos são a fonte da verdade; um índice MiniSearch em memória + um grafo de wikilinks portado alimentam busca e backlinks. Nada para provisionar.
  • Multi-workspace — conecte vários repositórios de cofre (URL + token ou OAuth do GitHub), renomeie, alterne o ativo ou remova-os — tudo pela interface.
  • Auto-hospedado — um contêiner Docker. Railway / Render / Fly / qualquer host com volume. Não serverless (precisa de um volume persistente, um observador de arquivos e um índice de longa duração).
  • Autenticação de equipe — SSO do Google + lista de permissões de e-mail para o painel; tokens bearer por agente — ou OAuth para conectores personalizados do Claude.ai — para MCP, criados/revogados na interface. Segredos criptografados em repouso.
  • Configuração em tempo de execução — alterne git-sync e o Curador direto da página inicial; gerencie autor de commit, chaves, e OAuth em Configurações — sem reimplantar.

Funciona com

Qualquer cliente que fale o Model Context Protocol — um endpoint, autenticação por token bearer. Mais usados primeiro:

  • Claude Code — o CLI de codificação agêntica da Anthropic
  • Codex — o agente de codificação da OpenAI (CLI + IDE)
  • Hermes — runtime de agente autônomo sempre ativo
  • openclaw — agente de codificação de código aberto
  • Cursor — editor de código com IA
  • Cline — agente do VS Code
  • Windsurf — IDE agêntica
  • Claude Desktop — o aplicativo de desktop da Anthropic
  • …e qualquer outro cliente MCP — Continue, Goose, Zed, Amp e o resto

Se fala MCP, pode ler e escrever no Engram como memória compartilhada.

Início rápido

Quer testar primeiro? Há uma demonstração ao vivo — aberta, sem cadastro, reinicia algumas vezes por dia. Quebre à vontade.

bun install
bun dev            # http://localhost:3000 — runs against ./sample-vault

Aponte-o para seu próprio cofre:

VAULT_DIR=/path/to/your/obsidian-or-markdown/vault bun dev

Duas maneiras de executar

  • Modo hospedado (equipe): o painel + servidor MCP HTTP acima — auto-hospede uma vez, muitos agentes e colegas se conectam via POST /api/mcp. Este é o modo principal.

  • Modo local (stdio): um servidor MCP stdio simples sobre uma pasta, sem HTTP/auth/git — para uma única máquina, Claude Desktop / Cursor, ou a introspecção Docker de um registro:

    bun run mcp:stdio /path/to/your/vault      # defaults to ./sample-vault
    

    Mesmas ferramentas brain_*. Construído a partir de Dockerfile.mcp.

Cada modo é fornecido como sua própria imagem, e eles não são intercambiáveis:

ImagemModoUse para
ghcr.io/rwnalds/engram-appHTTP — painel + /api/mcpRailway, Render, Fly, qualquer host. Este é o que você implanta.
ghcr.io/rwnalds/engramstdio — JSON-RPC em stdin/stdoutClaude Desktop, Cursor, registros MCP. Nunca abre uma porta.
Implantar a imagem stdio como um serviço web é o único erro que vale a pena destacar: ela só consegue retornar 502, porque não há nada escutando. Agora ela se recusa a iniciar em um PaaS e informa isso a você.

Ferramentas MCP

Os agentes só veem o vault ativo — nenhuma ferramenta de repo, workspace ou GitHub é exposta. Um token com escopo read vê apenas as ferramentas de leitura. brain_capture aparece apenas quando o Curator está full.

Ferramentas
Leiturabrain_search · brain_read · brain_list · brain_recent · brain_tree · brain_backlinks · brain_graph · brain_schema
Escrita (precisa de um token com escopo write)brain_write · brain_edit · brain_append · brain_move · brain_supersede · brain_create_folder · brain_delete

Conecte um agente (a página Connect do dashboard mostra o comando e o token exatos):

claude mcp add --transport http engram https://<host>/api/mcp \
  --header "Authorization: Bearer <token>"

Implantação

Roda em qualquer lugar onde você possa executar um contêiner Docker com um volume persistente — Railway, Render, Fly ou sua própria máquina. Serverless (Vercel) não funciona: o Engram mantém um volume, um observador de arquivos e um índice em memória que uma função serverless não consegue manter ativo.

  1. Implante este repo (raiz Dockerfile), monte um volume em /data, defina ENGRAM_DATA_DIR=/data.
  2. Conecte seu(s) repo(s) de vault no dashboard (Workspaces) — por URL + token, ou GitHub OAuth.
  3. Entre com o Google, crie tokens MCP na página Connect e aponte seus agentes para a URL.

A maior parte da configuração em tempo de execução (git-sync, captura por IA, GitHub OAuth, nome do app) é editável na página Settings — apenas variáveis de bootstrap de auth/infra ficam no host. Configuração completa: DEPLOY.md.

  • Railway: New Project → Deploy from GitHub repo → adicione um Volume em /data.
  • Render: um clique via o render.yaml incluído (Docker + um disco /data).

Implantando a partir de uma imagem pré-construída em vez do repo? Use ghcr.io/rwnalds/engram-app:latest — não engram:latest, que é o servidor stdio e não consegue responder HTTP. Defina o healthcheck para /api/health.

Perguntas frequentes

Como dou memória de longo prazo ao Claude Code? Implante o Engram, conecte um vault markdown e claude mcp add o endpoint. As ferramentas brain_* permitem que o Claude Code pesquise, leia e escreva notas persistentes entre sessões.

Vários agentes de IA podem compartilhar uma base de conhecimento? Sim. Cada agente aponta para a mesma URL MCP e lê/grava no mesmo vault ativo — essa é a ideia. Dê a cada agente seu próprio bearer token, read ou write — um token somente leitura não pode alterar suas notas.

Como faço para impedir um agente de citar fatos desatualizados? Aposente o fato e a busca para de exibi-lo. Quando um valor muda, chame brain_supersede(old, new) — um commit atômico marca a nota antiga como superseded_by a nova, e ela fica oculta da busca por padrão (mesmo que seja locked). Ou defina valid_until: 2026-12-31 em uma nota e ela expira sozinha. Correspondências aposentadas não desaparecem silenciosamente: brain_search as retorna em uma lista excluded com um motivo ("expired 2026-06-01"), para que o agente possa dizer o que ignorou e por quê em vez de citar.

O que impede um agente de simplesmente adicionar uma segunda nota contraditória? O Engram recusa a gravação. Ao ser informado de que "o preço agora é X", um agente que não consegue sobrescrever uma nota que nunca leu vai alegremente adicionar acme-pricing-2026.md ao lado de acme-pricing.md — nada é corrompido, e você agora tem duas notas ativas discordando sobre um número. Essa gravação é rejeitada com um ponteiro para brain_supersede, que aposenta a nota antiga e adiciona a nova em um único commit. Passe allow_conflict: true quando ambas as notas realmente pertencem.

Como sei o que um agente alterou? Cada gravação é commitada no git atribuída ao token ou humano por trás dela, e o feed de atividade do dashboard mostra diffs por arquivo — uma trilha de auditoria integrada para agentes autônomos.

Funciona com meu vault do Obsidian? Sim. Ele lê markdown simples com frontmatter e [[wikilinks]], e renderiza callouts e backlinks no estilo Obsidian. Sem etapa de importação.

Preciso de um banco de dados vetorial? Não. O Engram usa busca de texto completo (MiniSearch) mais um grafo de wikilinks sobre markdown legível por humanos — sem serviço de embeddings, sem vector store para executar.

Posso conversar com minhas notas? Sim — ative o Curator opcional, um agente de chat que pesquisa e lê seu vault para responder com citações de wikilinks (Opus / Sonnet / Haiku). Ele é somente leitura no chat, então ajuda você a pensar sem alterar nada, e roda com sua própria chave da Anthropic.

Posso ver o que meus agentes alteraram? Sim — a visualização Activity lê o histórico git do seu vault e mostra cada alteração (agentes e colegas igualmente), expansível para diffs por arquivo. Como é apenas git, você obtém a trilha de auditoria completa de graça.

Meus dados ficam presos? Não. São apenas arquivos .md em um repo git que você possui. Desligue o Engram e você ainda terá todas as notas e seu histórico completo.

Onde ele roda / é self-hosted? Você o hospeda. Um contêiner Docker em Railway / Render / Fly / qualquer VM com um volume. Suas chaves, seus dados.

Contribuindo

Issues e PRs são bem-vindos — especialmente onde o modelo de validade falha com um vault estruturado de forma diferente do meu.

  • CONTRIBUTING.md — configuração, convenções e o checklist pré-PR.
  • docs/curator.md — como funciona o loop do agente Curator opcional.
  • SECURITY.md — por favor, relate vulnerabilidades em particular, não como uma issue.
bun install && bun dev
bun test          # the ranking/authority suite, incl. the stale-truth fixtures

Se o Engram é útil para você, dar uma estrela no repo genuinamente ajuda outras pessoas a encontrá-lo.

Stack

Next.js 16 (App Router) · React 19 · TypeScript · Tailwind v4 · shadcn/ui · bun · MiniSearch · d3-force · MCP SDK. Licença MIT.


Palavras-chave: servidor MCP · Model Context Protocol · segundo cérebro para agentes de IA · memória de agente · memória de longo prazo para Claude Code · memória compartilhada para agentes de IA · base de conhecimento self-hosted · compatível com Obsidian · markdown · grafo de conhecimento · wikilinks · PKM · Zettelkasten · notas com backup em git · memória de agente Hermes · memória Cursor · RAG sem banco de dados vetorial · converse com suas notas markdown · feed de atividade de agente com backup em git · trilha de auditoria para agentes de IA · busca ciente de autoridade · tokens MCP somente leitura vs escrita · controle de acesso de agentes · notas auto-organizáveis · captura de notas por agentes · IA que arquiva suas notas · validade temporal · memória obsoleta · agentes citando fatos desatualizados · substituir · expiração de notas · memória compartilhada para uma equipe de agentes · alternativa ao Basic Memory · alternativa ao mem0.