{"id":981,"date":"2026-09-08T00:18:34","date_gmt":"2026-09-08T03:18:34","guid":{"rendered":"https:\/\/www.linuxpro.com.br\/2026\/09\/alternativas-claude-mem-go-rust-c\/"},"modified":"2026-09-08T17:17:38","modified_gmt":"2026-09-08T20:17:38","slug":"alternativas-claude-mem-go-rust-c","status":"publish","type":"post","link":"https:\/\/www.linuxpro.com.br\/es\/2026\/09\/alternativas-claude-mem-go-rust-c\/","title":{"rendered":"Alternativas ao Claude-Mem em Go, Rust e C"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" alt=\"Mascote do LinuxPro encaixando um cartucho de mem\u00f3ria no SQLite, com o gopher do Go, o Ferris e o cubo do C\" src=\"\/wp-content\/uploads\/2026\/09\/alternativas-claude-mem-go-rust-c-v3.webp\" width=\"1486\" height=\"856\" \/><\/p>\n<p class=\"translation-block\">O agente de terminal \u00e9 \u00f3timo at\u00e9 a sess\u00e3o acabar. Na seguinte, ele redescobre o mesmo bug, rel\u00ea o mesmo README e pergunta de novo se a API usa JWT. O <a href=\"https:\/\/github.com\/thedotmack\/claude-mem\">claude-mem<\/a> resolve isso \u2014 captura o que o agente fez, comprime e devolve o peda\u00e7o certo no SessionStart. S\u00f3 que ele \u00e9 TypeScript, Node, Bun e um worker \u00e0 parte. Se a sua m\u00e1quina j\u00e1 vive de bin\u00e1rio \u00fanico em <a href=\"\/es\/2026\/09\/a-historia-da-linguagem-go\/\">Go<\/a>, <a href=\"\/es\/2026\/09\/a-historia-da-linguagem-rust\/\">Rust<\/a> ou C, d\u00e1 para ter a mesma ideia sem a pilha JS.<\/p>\n<p><!-- more --><\/p>\n<p>Este post mapeia as alternativas nativas que realmente existem hoje: mem\u00f3ria de sess\u00e3o (decis\u00f5es, bugs, conven\u00e7\u00f5es) e mem\u00f3ria do c\u00f3digo (quem chama quem). N\u00e3o s\u00e3o clones. Alguns falam MCP por stdio, outros usam HTTP, instalam hooks ou viram extens\u00e3o do SQLite. O mapa dos agentes no terminal continua em <a href=\"\/es\/2026\/09\/assistentes-de-ia-no-terminal-linux\/\">Assistentes de IA no terminal Linux<\/a>; o encaixe do claude-mem no fluxo de vibe coding est\u00e1 em <a href=\"\/es\/2026\/09\/vibe-coding-linux-skills-ia-cli\/\">Vibe coding no Linux<\/a>.<\/p>\n<h2>O que o Claude-Mem faz \u2014 e o que as alternativas tentam copiar<\/h2>\n<p>O reposit\u00f3rio ainda \u00e9 <code data-no-translation=\"\">thedotmack\/claude-mem<\/code>, licen\u00e7a Apache-2.0. Em 2026 o produto tamb\u00e9m se chama <strong>Grok Mem<\/strong>; o pacote npm continua <code data-no-translation=\"\">claude-mem<\/code>. A pe\u00e7a que importa para comparar:<\/p>\n<ul>\n<li>hooks de ciclo de vida (<code data-no-translation=\"\">SessionStart<\/code>, <code data-no-translation=\"\">PostToolUse<\/code>, <code data-no-translation=\"\">PreCompact<\/code>, <code data-no-translation=\"\">Stop<\/code>);<\/li>\n<li>SQLite + busca (FTS5 e vetor);<\/li>\n<li>MCP para o agente consultar a mem\u00f3ria sob demanda;<\/li>\n<li>inje\u00e7\u00e3o de contexto no come\u00e7o da sess\u00e3o, sem voc\u00ea pedir \u201clembra o que combinamos\u201d.<\/li>\n<\/ul>\n<p>Quem troca o stack quer, no fundo, essas quatro coisas num bin\u00e1rio local, com o banco num arquivo que voc\u00ea controla. Embeddings, quando existem, apontam para <a href=\"\/es\/2026\/09\/rodando-ia-local-no-linux-com-ollama\/\">Ollama<\/a> ou para um modelo embutido \u2014 nada precisa sair da m\u00e1quina.<\/p>\n<h2>Tabela r\u00e1pida<\/h2>\n<table>\n<thead>\n<tr>\n<th>Projeto<\/th>\n<th>Linguagem<\/th>\n<th>Banco<\/th>\n<th>MCP<\/th>\n<th>Perfil<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><a href=\"https:\/\/github.com\/kyungw00k\/mnemo\">mnemo<\/a><\/td>\n<td>Go<\/td>\n<td>SQLite (pgvector opcional)<\/td>\n<td>stdio \/ SSE<\/td>\n<td>O mais pr\u00f3ximo do Claude-Mem em Go<\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/github.com\/Gentleman-Programming\/engram\">Engram<\/a><\/td>\n<td>Go<\/td>\n<td>SQLite + FTS5<\/td>\n<td>sim<\/td>\n<td>Mem\u00f3ria multi-agente, CLI, TUI, HTTP<\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/github.com\/srfrog\/goldie-mcp\">Goldie<\/a><\/td>\n<td>Go<\/td>\n<td>SQLite + vetor<\/td>\n<td>sim<\/td>\n<td>Pool compartilhado entre agentes<\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/github.com\/akitaonrails\/ai-memory\">ai-memory<\/a><\/td>\n<td>Rust<\/td>\n<td>Wiki Markdown + SQLite<\/td>\n<td>sim (HTTP)<\/td>\n<td>Servidor local, hooks e handoff entre agentes<\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/github.com\/asanabrial\/leteo\">Leteo<\/a><\/td>\n<td>Rust<\/td>\n<td>SQLite<\/td>\n<td>22 tools<\/td>\n<td>Bin\u00e1rio \u00fanico + hooks, derivado do Engram<\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/github.com\/zircote\/subcog\">Subcog<\/a><\/td>\n<td>Rust<\/td>\n<td>SQLite + FTS5 + HNSW<\/td>\n<td>sim<\/td>\n<td>Busca h\u00edbrida + knowledge graph<\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/github.com\/corporatepiyush\/mcp-memory\">mcp-memory<\/a><\/td>\n<td>Rust<\/td>\n<td>SQLite<\/td>\n<td>sim<\/td>\n<td>Grafo + vetor + indexa\u00e7\u00e3o de c\u00f3digo<\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/github.com\/DioNanos\/mcp-memory-rs\">mcp-memory-rs<\/a><\/td>\n<td>Rust<\/td>\n<td>JSON + SQLite FTS5<\/td>\n<td>sim<\/td>\n<td>Local-first, versionado, sem embedding<\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/github.com\/tokarix\/memory-server\">memory-server<\/a><\/td>\n<td>Rust<\/td>\n<td>PostgreSQL + pgvector<\/td>\n<td>sim<\/td>\n<td>Servi\u00e7o centralizado + Ollama<\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/github.com\/sqliteai\/sqlite-memory\">sqlite-memory<\/a><\/td>\n<td>C<\/td>\n<td>SQLite<\/td>\n<td>via sqlmem \/ sqlite-mcp<\/td>\n<td>Extens\u00e3o, Markdown + busca h\u00edbrida<\/td>\n<\/tr>\n<tr>\n<td><a href=\"https:\/\/github.com\/DeusData\/codebase-memory-mcp\">codebase-memory-mcp<\/a><\/td>\n<td>C<\/td>\n<td>SQLite<\/td>\n<td>sim<\/td>\n<td>Grafo do c\u00f3digo, n\u00e3o da conversa<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Go: tr\u00eas bin\u00e1rios, tr\u00eas jeitos de lembrar<\/h2>\n<h3>mnemo \u2014 o clone mais direto<\/h3>\n<p><a href=\"https:\/\/github.com\/kyungw00k\/mnemo\">mnemo<\/a> (MIT, Go 1.23+) \u00e9 um servidor MCP de mem\u00f3ria com um \u00fanico bin\u00e1rio. Banco padr\u00e3o em <code data-no-translation=\"\">~\/.mnemo\/memory.db<\/code>. Detecta Claude Code, OpenCode e Codex na primeira execu\u00e7\u00e3o e se registra sozinho. Tem dashboard em <code data-no-translation=\"\">http:\/\/localhost:8765<\/code>.<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">go install github.com\/kyungw00k\/mnemo\/cmd\/mnemo@latest\n\n# hooks do Claude Code (ou deixe o auto-install)\nmnemo hook install --dry-run\nmnemo hook install\n\nmnemo dashboard<\/code><\/pre>\n<p>Os hooks cobrem o ciclo que o Claude-Mem popularizou: <code data-no-translation=\"\">SessionStart<\/code> injeta decis\u00f5es recentes, <code data-no-translation=\"\">PreCompact<\/code> grava um snapshot, <code data-no-translation=\"\">PostToolUse<\/code> anota resultado de <code data-no-translation=\"\">Bash<\/code>, <code data-no-translation=\"\">Stop<\/code> fecha a sess\u00e3o. Embeddings falam com qualquer endpoint OpenAI-compatible \u2014 Ollama no default (<code data-no-translation=\"\">nomic-embed-text<\/code>, 768 dimens\u00f5es). PostgreSQL + pgvector entram se voc\u00ea trocar o <code data-no-translation=\"\">DB_URL<\/code>.<\/p>\n<p>\u00c9 a op\u00e7\u00e3o mais parecida com o original em Go. O projeto ainda \u00e9 novo; trate como ferramenta \u00fatil, n\u00e3o como produto maduro de anos.<\/p>\n<h3>Engram \u2014 um c\u00e9rebro para v\u00e1rios agentes<\/h3>\n<p><a href=\"https:\/\/github.com\/Gentleman-Programming\/engram\">Engram<\/a> (MIT) nasceu inspirado no claude-mem, mas \u00e9 agent-agnostic: um bin\u00e1rio Go, um SQLite com FTS5 em <code data-no-translation=\"\">~\/.engram\/engram.db<\/code>, MCP, HTTP, CLI e TUI. Sem Node, sem Python, sem Docker para rodar.<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\"># Claude Code\nclaude plugin marketplace add Gentleman-Programming\/engram\nclaude plugin install engram\n\n# Codex, OpenCode, Antigravity, Cursor\u2026\nengram setup codex\nengram setup opencode\nengram setup antigravity-cli\n\nengram tui<\/code><\/pre>\n<p>O contrato com o agente \u00e9 expl\u00edcito: oriente-se com <code data-no-translation=\"\">mem_context<\/code> \/ <code data-no-translation=\"\">mem_search<\/code> antes de repetir trabalho; grave s\u00f3 o que dura (<code data-no-translation=\"\">mem_save<\/code>); feche a sess\u00e3o com <code data-no-translation=\"\">mem_session_summary<\/code>. N\u00e3o \u00e9 lixeira de transcript. O README de produ\u00e7\u00e3o pede o bin\u00e1rio das <a href=\"https:\/\/github.com\/Gentleman-Programming\/engram\/releases\">GitHub Releases<\/a>; o Homebrew cobre a linha est\u00e1vel.<\/p>\n<p>Se Claude Code, Codex e o CLI do Google precisam lembrar a <em>mesma<\/em> decis\u00e3o, comece por aqui. O passo a passo de instala\u00e7\u00e3o, MCP, nome de projeto e systemd est\u00e1 em <a href=\"\/es\/2026\/09\/engram-memoria-persistente-para-agentes-no-linux\/\">Engram: mem\u00f3ria persistente para agentes no Linux<\/a>.<\/p>\n<h3>Goldie \u2014 um pool, v\u00e1rios agentes<\/h3>\n<p class=\"translation-block\"><a href=\"https:\/\/github.com\/srfrog\/goldie-mcp\">Goldie<\/a> (MIT) troca o <code>MEMORY.md<\/code> por arquivo de um SQLite compartilhado. Ferramentas no vocabul\u00e1rio certo: <code>remember<\/code>, <code>recall<\/code>, <code>update_memory<\/code>, <code>forget<\/code>. Mem\u00f3rias tipadas (<code>user<\/code>, <code>feedback<\/code>, <code>project<\/code>, <code>reference<\/code>\u2026), grafo de conceitos, embeddings locais via MiniLM (ONNX Runtime) ou Ollama.<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\"># Linux amd64 \u2014 pegue o bin\u00e1rio da release\ncurl -LO https:\/\/github.com\/srfrog\/goldie-mcp\/releases\/latest\/download\/goldie-mcp-linux-amd64\nchmod +x goldie-mcp-linux-amd64\nmv goldie-mcp-linux-amd64 ~\/.local\/bin\/goldie-mcp\n\n# MiniLM precisa do ONNX Runtime\nsudo apt install libonnxruntime-dev   # Debian\/Ubuntu\n\n# ou pule o ONNX e use Ollama\nollama pull nomic-embed-text\nclaude mcp add -s user -e GOLDIE_DB_PATH=~\/.local\/share\/goldie\/index.db goldie goldie-mcp -- -b ollama<\/code><\/pre>\n<p>O \u201cescopo\u201d \u00e9 o arquivo. Dois agentes no mesmo <code data-no-translation=\"\">GOLDIE_DB_PATH<\/code> compartilham a mem\u00f3ria. N\u00e3o escreva de duas m\u00e1quinas ao mesmo tempo se o <code data-no-translation=\"\">.db<\/code> estiver no Syncthing \u2014 o README \u00e9 honesto sobre isso.<\/p>\n<h2>Rust: do bin\u00e1rio \u00fanico ao servidor de mem\u00f3ria<\/h2>\n<h3>ai-memory \u2014 wiki versionada e passagem de bast\u00e3o<\/h3>\n<p><a href=\"https:\/\/github.com\/akitaonrails\/ai-memory\">ai-memory<\/a> (MIT, Rust) \u00e9 a op\u00e7\u00e3o mais estruturada desta parte da lista. Em vez de cada agente escrever direto no banco, um servidor \u00e9 o \u00fanico escritor: ele recebe observa\u00e7\u00f5es sanitizadas pelos hooks, mant\u00e9m uma wiki Markdown versionada em Git como fonte da verdade e usa SQLite como \u00edndice derivado (FTS5, entidades e vetores opcionais).<\/p>\n<p>O fluxo \u00e9 <em>capturar \u2192 consolidar \u2192 recuperar \u2192 entregar<\/em>. No fim da sess\u00e3o, as observa\u00e7\u00f5es podem virar p\u00e1ginas leg\u00edveis da wiki; na pr\u00f3xima, o agente recebe um handoff limitado e pode buscar o hist\u00f3rico. Captura, busca e handoff funcionam sem chave nem chamada de LLM; configurar um provedor apenas acrescenta consolida\u00e7\u00e3o e busca sem\u00e2ntica. \u00c9 uma diferen\u00e7a importante em rela\u00e7\u00e3o ao Engram e ao Leteo: ai-memory \u00e9 um servi\u00e7o local via HTTP\/MCP, n\u00e3o s\u00f3 um processo que abre um SQLite.<\/p>\n<p>O caminho documentado para Linux \u00e9 Docker ou Podman. Quem j\u00e1 usa <code data-no-translation=\"\">mise<\/code> pode baixar o bin\u00e1rio de release com checksum, sem instalar Rust:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">mise use -g github:akitaonrails\/ai-memory\n\n# uma vez: cria o estado local; depois sobe MCP + API + hooks HTTP\nai-memory init\nai-memory serve --transport http --bind 127.0.0.1:49374\n\n# em outro terminal, registre MCP e hooks para o cliente escolhido\nai-memory install-mcp --client claude-code --apply\nai-memory install-hooks --agent claude-code --apply\n\n# para o Codex, troque claude-code por codex nos dois comandos<\/code><\/pre>\n<p>Claude Code, Codex, OpenCode, Gemini CLI, Grok Build e v\u00e1rios outros clientes t\u00eam integra\u00e7\u00e3o de primeira parte. Em uma m\u00e1quina s\u00f3, o servidor escuta no loopback; para uma equipe ou homelab, ele pode ficar num host compartilhado com autentica\u00e7\u00e3o e HTTPS. Escolha ai-memory quando a prioridade for a transi\u00e7\u00e3o expl\u00edcita entre Claude, Codex e outros agentes \u2014 ou quando quiser inspecionar e versionar a mem\u00f3ria como Markdown. Para um SQLite direto e um setup menor, Engram e Leteo continuam mais simples.<\/p>\n<h3>Leteo \u2014 o Engram em Rust<\/h3>\n<p><a href=\"https:\/\/github.com\/asanabrial\/leteo\">Leteo<\/a> (MIT) \u00e9 um produto independente em Rust derivado do fluxo e da implementa\u00e7\u00e3o MIT do Engram. Um bin\u00e1rio, SQLite em <code data-no-translation=\"\">~\/.leteo\/leteo.db<\/code>, sem API key, sem servidor. Importa o banco do Engram com <code data-no-translation=\"\">leteo import --from-engram<\/code>.<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">curl -fsSL https:\/\/raw.githubusercontent.com\/asanabrial\/leteo\/main\/scripts\/install.sh | sh\nleteo tui\nleteo setup claude-code --hooks\nleteo setup codex<\/code><\/pre>\n<p>Os arquivos das releases Linux pedem glibc 2.34 \u2014 Debian 12, Ubuntu 22.04, RHEL 9 ou mais novo. Plugin do Claude Code: <code data-no-translation=\"\">\/plugin marketplace add asanabrial\/leteo<\/code> e <code data-no-translation=\"\">\/plugin install leteo@leteo<\/code>. N\u00e3o registre plugin <em>e<\/em> <code data-no-translation=\"\">leteo setup --hooks<\/code> ao mesmo tempo: cada evento dispara duas vezes.<\/p>\n<h3>Subcog \u2014 busca h\u00edbrida de verdade<\/h3>\n<p><a href=\"https:\/\/github.com\/zircote\/subcog\">Subcog<\/a> (MIT, Rust 1.88+) empilha tr\u00eas camadas: SQLite como fonte da verdade, FTS5 (BM25) e vetores HNSW via usearch. Embeddings com <code data-no-translation=\"\">all-MiniLM-L6-v2<\/code> pelo fastembed, 384 dimens\u00f5es, sem chamar API. Fus\u00e3o RRF. Knowledge graph com entidades e rela\u00e7\u00f5es.<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">cargo install subcog\n# ou: brew install zircote\/tap\/subcog\n\nsubcog capture --namespace decisions \"Use PostgreSQL por causa do ACID\"\nsubcog recall \"decis\u00e3o de banco\"\nsubcog serve<\/code><\/pre>\n<p>Hooks do Claude Code: <code data-no-translation=\"\">SessionStart<\/code>, <code data-no-translation=\"\">UserPromptSubmit<\/code>, <code data-no-translation=\"\">PostToolUse<\/code>, <code data-no-translation=\"\">PreCompact<\/code>, <code data-no-translation=\"\">Stop<\/code>. \u00c9 a op\u00e7\u00e3o se \u201clembrar\u201d precisa ser busca sem\u00e2ntica, n\u00e3o s\u00f3 grep no SQLite.<\/p>\n<h3>mcp-memory \u2014 grafo + c\u00f3digo no mesmo bin\u00e1rio<\/h3>\n<p><a href=\"https:\/\/github.com\/corporatepiyush\/mcp-memory\">mcp-memory<\/a> (Apache-2.0) junta knowledge graph, FTS5, vetor (usearch HNSW) e indexa\u00e7\u00e3o tree-sitter em Rust, Python, JS\/TS, Go, Java, C, C++, Ruby e PHP. Tools entram por categoria: nada \u00e9 exposto at\u00e9 voc\u00ea passar <code data-no-translation=\"\">--enable-graph-read<\/code> \/ <code data-no-translation=\"\">--enable-code<\/code> \/ <code data-no-translation=\"\">--enable-all<\/code>.<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">cargo install mcp-memory\nmcp-memory --transport stdio --enable-all<\/code><\/pre>\n<p>\u00datil quando voc\u00ea quer <em>un<\/em> processo lembrando entidades do projeto <em>e<\/em> o mapa de s\u00edmbolos. N\u00e3o substitui o codebase-memory-mcp em escala de kernel, mas cabe num laptop sem daemon extra.<\/p>\n<h3>mcp-memory-rs \u2014 caderno local, sem ML<\/h3>\n<p><a href=\"https:\/\/github.com\/DioNanos\/mcp-memory-rs\">mcp-memory-rs<\/a> (Apache-2.0) guarda estado do agente em JSON por categoria, com \u00edndice SQLite FTS5. Cada escrita \u00e9 versionada. Sem download de modelo, sem embedding. Sync entre m\u00e1quinas \u00e9 passo expl\u00edcito (manifest Merkle + HTTP), nunca depend\u00eancia escondida.<\/p>\n<p>O default offline \u00e9 o ponto: Claude Code e Codex apontam para o mesmo bin\u00e1rio e o estado sobrevive \u00e0 troca de modelo. Para corpus (documentos chunkados) o autor aponta o companion <code data-no-translation=\"\">mcp-vl-msa-rs<\/code> \u2014 este aqui \u00e9 o caderno, n\u00e3o a biblioteca.<\/p>\n<h3>memory-server \u2014 quando a mem\u00f3ria \u00e9 um servi\u00e7o<\/h3>\n<p><a href=\"https:\/\/github.com\/tokarix\/memory-server\">memory-server<\/a> separa as pe\u00e7as: o agente fala MCP com <code data-no-translation=\"\">memory-mcp<\/code>, que chama <code data-no-translation=\"\">memoryd<\/code> por HTTP, que grava em PostgreSQL + pgvector e pede embedding ao Ollama (<code data-no-translation=\"\">bge-m3<\/code> no default).<\/p>\n<pre data-no-translation=\"\"><code class=\"language-text\" data-no-translation=\"\">agent  --stdio--&gt;  memory-mcp  --HTTP--&gt;  memoryd\n                                           |-- PostgreSQL + pgvector\n                                           +-- Ollama<\/code><\/pre>\n<p>Categorias fixas: <code data-no-translation=\"\">context<\/code>, <code data-no-translation=\"\">decision<\/code>, <code data-no-translation=\"\">error_fix<\/code>, <code data-no-translation=\"\">plan<\/code>, <code data-no-translation=\"\">rule<\/code>. Faz sentido quando laptop e servidor precisam do mesmo store \u2014 e voc\u00ea aceita operar Postgres 17 com pgvector. Para um \u00fanico usu\u00e1rio no notebook, \u00e9 tiro de canh\u00e3o.<\/p>\n<h2>C: extens\u00e3o SQLite e grafo do reposit\u00f3rio<\/h2>\n<h3>sqlite-memory \u2014 mem\u00f3ria como SQL<\/h3>\n<p><a href=\"https:\/\/github.com\/sqliteai\/sqlite-memory\">sqlite-memory<\/a> (MIT) \u00e9 extens\u00e3o C: Markdown como fonte da verdade, chunking consciente de heading, busca h\u00edbrida (vetor + FTS5), embeddings locais com <a href=\"\/es\/2026\/09\/llama-cpp-primeiros-passos\/\">llama.cpp<\/a>. Faz parte da fam\u00edlia SQLite AI (<code data-no-translation=\"\">sqlite-vector<\/code>, <code data-no-translation=\"\">sqlite-sync<\/code>, <code data-no-translation=\"\">sqlite-mcp<\/code>\u2026).<\/p>\n<pre data-no-translation=\"\"><code class=\"language-sql\" data-no-translation=\"\">.load .\/vector\n.load .\/memory\nSELECT memory_set_model('local', '\/path\/to\/nomic-embed-text-v1.5.Q8_0.gguf');\nSELECT memory_add_directory('\/path\/to\/docs', 'project-docs');\nSELECT path, snippet, ranking FROM memory_search\n WHERE query = 'como o agente persiste contexto';<\/code><\/pre>\n<p>O CLI em Go, <code data-no-translation=\"\">sqlmem<\/code>, embrulha isso em projeto (<code data-no-translation=\"\">sqlmem init<\/code>, <code data-no-translation=\"\">add<\/code>, <code data-no-translation=\"\">search<\/code>) e exp\u00f5e as tools via MCP. \u00c9 o caminho se voc\u00ea quer construir a sua camada, n\u00e3o instalar um produto pronto. Sync entre agentes usa CRDT do <code data-no-translation=\"\">sqlite-sync<\/code> \u2014 cada um trabalha offline e mescla depois.<\/p>\n<h3>codebase-memory-mcp \u2014 a outra mem\u00f3ria<\/h3>\n<p class=\"translation-block\"><a href=\"https:\/\/github.com\/DeusData\/codebase-memory-mcp\">codebase-memory-mcp<\/a> (MIT, C puro) <strong>n\u00e3o<\/strong> \u00e9 alternativa ao Claude-Mem. Indexa o reposit\u00f3rio num knowledge graph: fun\u00e7\u00f5es, classes, rotas HTTP, quem chama quem. Tree-sitter, 15 tools MCP, bin\u00e1rio nativo. O preprint est\u00e1 no arXiv <a href=\"https:\/\/arxiv.org\/abs\/2603.27277\">2603.27277<\/a>.<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">curl -fsSL https:\/\/raw.githubusercontent.com\/DeusData\/codebase-memory-mcp\/main\/install.sh | bash\n# reinicie o agente e pe\u00e7a: index this project<\/code><\/pre>\n<p>Perguntas que ele responde e o grep n\u00e3o: \u201cquem chama esta fun\u00e7\u00e3o?\u201d, \u201cqual o raio de explos\u00e3o deste diff?\u201d, \u201conde esta interface \u00e9 implementada?\u201d. Detalhes de uso no post de <a href=\"\/es\/2026\/09\/vibe-coding-linux-skills-ia-cli\/\">skills de IA en la CLI<\/a>. O caso feliz \u00e9 <em>os dois<\/em> no mesmo agente: um lembra a conversa, o outro lembra o c\u00f3digo.<\/p>\n<h2>C++: ainda n\u00e3o h\u00e1 o clone pronto<\/h2>\n<p>Entre os projetos desta lista, n\u00e3o aparece um equivalente maduro ao Claude-Mem cuja implementa\u00e7\u00e3o principal seja C++. O que existe em C++ entra como pe\u00e7a \u2014 <code data-no-translation=\"\">llama.cpp<\/code> para embedding, SQLite, \u00edndices vetoriais \u2014 n\u00e3o como produto de mem\u00f3ria de sess\u00e3o. O codebase-memory-mcp analisa C\/C++ muito bem; o bin\u00e1rio dele, por\u00e9m, \u00e9 C.<\/p>\n<h2>Por onde testar no Linux<\/h2>\n<p>Ordem pr\u00e1tica para Claude Code + Codex + o que mais estiver no <code data-no-translation=\"\">PATH<\/code>:<\/p>\n<ol>\n<li><strong>ai-memory (Rust)<\/strong> \u2014 quando o ponto principal \u00e9 handoff autom\u00e1tico entre Claude, Codex e outros agentes, com wiki Markdown versionada e um servidor local.<\/li>\n<li><strong>Engram (Go)<\/strong> \u2014 um banco, v\u00e1rios agentes, TUI para inspecionar o que foi gravado.<\/li>\n<li><strong>mnemo (Go)<\/strong> \u2014 se o que voc\u00ea quer \u00e9 o ciclo de hooks do Claude-Mem, sem trocar de filosofia.<\/li>\n<li><strong>Leteo (Rust)<\/strong> \u2014 o mesmo fluxo do Engram, bin\u00e1rio Rust, importa o <code data-no-translation=\"\">.db<\/code> dele.<\/li>\n<li><strong>Subcog (Rust)<\/strong> \u2014 quando a busca precisa de vetor + BM25 de verdade.<\/li>\n<li><strong>mcp-memory (Rust)<\/strong> \u2014 se quiser grafo + \u00edndice de c\u00f3digo no mesmo processo.<\/li>\n<li><strong>Goldie (Go)<\/strong> \u2014 pool compartilhado, vocabul\u00e1rio <code data-no-translation=\"\">remember<\/code>\/<code data-no-translation=\"\">recall<\/code>.<\/li>\n<li><strong>sqlite-memory (C)<\/strong> \u2014 se a ideia \u00e9 montar a sua camada em cima do SQLite.<\/li>\n<\/ol>\n<p>E, em paralelo, n\u00e3o no lugar: <strong>codebase-memory-mcp<\/strong>.<\/p>\n<pre data-no-translation=\"\"><code class=\"language-text\" data-no-translation=\"\">          Claude Code \/ Codex \/ OpenCode\n                       |\n              +--------+--------+\n              |                 |\n              v                 v\n     mem\u00f3ria de sess\u00e3o    mem\u00f3ria do c\u00f3digo\n     Engram \/ mnemo \/     codebase-memory-mcp\n     Leteo \/ Subcog              |\n              |                  v\n              v            knowledge graph\n         SQLite + FTS5         (tree-sitter)\n              |\n              +--------+--------+\n                       v\n              contexto persistente<\/code><\/pre>\n<p>Assim o agente da manh\u00e3 seguinte j\u00e1 sabe que a autentica\u00e7\u00e3o \u00e9 JWT com refresh, <em>e<\/em> consegue apontar o <code data-no-translation=\"\">handler.go<\/code> sem reler o repo.<\/p>\n<h2>O que n\u00e3o terceirizar<\/h2>\n<p>Mem\u00f3ria persistente n\u00e3o \u00e9 backup da verdade. O git continua sendo o registro; a hist\u00f3ria est\u00e1 em <a href=\"\/es\/2026\/09\/a-historia-do-git\/\">A hist\u00f3ria do Git<\/a>. O que vai para o SQLite \u00e9 decis\u00e3o, conven\u00e7\u00e3o, bug caro \u2014 n\u00e3o senha, n\u00e3o token, n\u00e3o dump de <code data-no-translation=\"\">journalctl<\/code>. Projetos s\u00e9rios t\u00eam tag <code data-no-translation=\"\">&lt;private&gt;<\/code> ou filtro de segredo; se o que voc\u00ea escolheu n\u00e3o tiver, n\u00e3o grave o que n\u00e3o pode vazar.<\/p>\n<p>E n\u00e3o instale tr\u00eas servidores de mem\u00f3ria no mesmo agente \u201cpara garantir\u201d. Eles competem pelo contexto. Um de sess\u00e3o + o grafo do c\u00f3digo j\u00e1 \u00e9 o teto \u00fatil.<\/p>\n<h2>Fechando<\/h2>\n<p>O Claude-Mem mostrou o formato: hook no ciclo de vida, estado local e MCP na consulta. Go e Rust j\u00e1 entregam isso em bin\u00e1rio \u00fanico; Rust tamb\u00e9m tem o caminho de servidor + wiki versionada do ai-memory. C entrega a extens\u00e3o e o grafo do c\u00f3digo. C++ ainda \u00e9 pe\u00e7a, n\u00e3o produto. Escolha pela pergunta que d\u00f3i hoje \u2014 \u201co agente esqueceu a decis\u00e3o\u201d, \u201cpreciso passar o trabalho para outro agente\u201d ou \u201co agente n\u00e3o acha a fun\u00e7\u00e3o\u201d \u2014 e coloque s\u00f3 a ferramenta que responde essa pergunta.<\/p>\n<p>Reposit\u00f3rios: <a href=\"https:\/\/github.com\/thedotmack\/claude-mem\">claude-mem<\/a> \u00b7 <a href=\"https:\/\/github.com\/kyungw00k\/mnemo\">mnemo<\/a> \u00b7 <a href=\"https:\/\/github.com\/Gentleman-Programming\/engram\">Engram<\/a> \u00b7 <a href=\"https:\/\/github.com\/akitaonrails\/ai-memory\">ai-memory<\/a> \u00b7 <a href=\"https:\/\/github.com\/srfrog\/goldie-mcp\">Goldie<\/a> \u00b7 <a href=\"https:\/\/github.com\/asanabrial\/leteo\">Leteo<\/a> \u00b7 <a href=\"https:\/\/github.com\/zircote\/subcog\">Subcog<\/a> \u00b7 <a href=\"https:\/\/github.com\/corporatepiyush\/mcp-memory\">mcp-memory<\/a> \u00b7 <a href=\"https:\/\/github.com\/DioNanos\/mcp-memory-rs\">mcp-memory-rs<\/a> \u00b7 <a href=\"https:\/\/github.com\/tokarix\/memory-server\">memory-server<\/a> \u00b7 <a href=\"https:\/\/github.com\/sqliteai\/sqlite-memory\">sqlite-memory<\/a> \u00b7 <a href=\"https:\/\/github.com\/DeusData\/codebase-memory-mcp\">codebase-memory-mcp<\/a>. Docs: <a href=\"https:\/\/docs.claude-mem.ai\/\">docs.claude-mem.ai<\/a> \u00b7 <a href=\"https:\/\/engram.gentlemanprogramming.com\/\">engram.gentlemanprogramming.com<\/a>.<\/p>\n<p style=\"font-size:.9em;opacity:.75\">Gopher do Go desenhado por Ren\u00e9e French (CC BY 3.0). Ferris, mascote extraoficial do Rust, por Karen Rustad T\u00f6lva.<\/p>","protected":false},"excerpt":{"rendered":"<p>O agente esquece a sess\u00e3o anterior. Claude-Mem resolve isso em Node; Go, Rust e C j\u00e1 entregam a mesma ideia em bin\u00e1rio \u00fanico \u2014 Engram, mnemo, Leteo, Subcog e sqlite-memory.<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[45,115,2],"tags":[394,408,31,116,311,158,407],"class_list":["post-981","post","type-post","status-publish","format-standard","hentry","category-desenv","category-ia","category-linux","tag-agentes","tag-claude-mem","tag-golang","tag-ia","tag-mcp","tag-rust","tag-sqlite"],"_links":{"self":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/981","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/comments?post=981"}],"version-history":[{"count":4,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/981\/revisions"}],"predecessor-version":[{"id":1462,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/981\/revisions\/1462"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/media?parent=981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/categories?post=981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/tags?post=981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}