{"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\/en\/2026\/09\/alternativas-claude-mem-go-rust-c\/","title":{"rendered":"Claude-Mem alternatives in Go, Rust, and 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>The terminal agent is great until the session ends. In the next one, it rediscovers the same bug, rereads the same README, and asks again if the API uses JWT. The <a href=\"https:\/\/github.com\/thedotmack\/claude-mem\">claude-mem<\/a> solve this one \u2014 captures what the agent did, compresses it, and returns the right chunk at SessionStart. Only it's TypeScript, Node, Bun, and a separate worker. If your machine already runs on a single binary in <a href=\"\/en\/2026\/09\/a-historia-da-linguagem-go\/\">Go<\/a>, <a href=\"\/en\/2026\/09\/a-historia-da-linguagem-rust\/\">Rust<\/a> or C, you can have the same idea without the JS stack.<\/p>\n<p><!-- more --><\/p>\n<p>This post maps the native alternatives that actually exist today: session memory (decisions, bugs, conventions) and code memory (who calls who). They're not clones. Some speak MCP over stdio, others use HTTP, install hooks, or become SQLite extensions. The map of terminal agents continues at <a href=\"\/en\/2026\/09\/assistentes-de-ia-no-terminal-linux\/\">AI assistants on the Linux terminal<\/a>; the fit of claude-mem into the vibe coding flow is at <a href=\"\/en\/2026\/09\/vibe-coding-linux-skills-ia-cli\/\">Vibe coding on Linux<\/a>.<\/p>\n<h2>What Claude-Mem does \u2014 and what the alternatives try to copy<\/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=\"\/en\/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>Quick table<\/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: three binaries, three ways to remember<\/h2>\n<h3>mnemo \u2014 the most direct clone<\/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 one brain for multiple agents<\/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=\"\/en\/2026\/09\/engram-memoria-persistente-para-agentes-no-linux\/\">Engram: persistent memory for agents on Linux<\/a>.<\/p>\n<h3>Goldie \u2014 one pool, multiple agents<\/h3>\n<p><a href=\"https:\/\/github.com\/srfrog\/goldie-mcp\">Goldie<\/a> (MIT) troca o <code data-no-translation=\"\">MEMORY.md<\/code> por arquivo de um SQLite compartilhado. Ferramentas no vocabul\u00e1rio certo: <code data-no-translation=\"\">remember<\/code>, <code data-no-translation=\"\">recall<\/code>, <code data-no-translation=\"\">update_memory<\/code>, <code data-no-translation=\"\">forget<\/code>. Mem\u00f3rias tipadas (<code data-no-translation=\"\">user<\/code>, <code data-no-translation=\"\">feedback<\/code>, <code data-no-translation=\"\">project<\/code>, <code data-no-translation=\"\">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: from single binary to memory server<\/h2>\n<h3>ai-memory \u2014 versioned wiki and handoff<\/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 the Engram in 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> and <code data-no-translation=\"\">\/plugin install leteo@leteo<\/code>. N\u00e3o registre plugin <em>and<\/em> <code data-no-translation=\"\">leteo setup --hooks<\/code> ao mesmo tempo: cada evento dispara duas vezes.<\/p>\n<h3>Subcog \u2014 true hybrid search<\/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 graph + code in the same binary<\/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>a<\/em> processo lembrando entidades do projeto <em>and<\/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 local notebook, no 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 when memory is a service<\/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: SQLite extension and repository graph<\/h2>\n<h3>sqlite-memory \u2014 memory as 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=\"\/en\/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 the other memory<\/h3>\n<p><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=\"\/en\/2026\/09\/vibe-coding-linux-skills-ia-cli\/\">AI skills in the 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++: the clone isn't ready yet<\/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>and<\/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=\"\/en\/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>Closing<\/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\/en\/wp-json\/wp\/v2\/posts\/981","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/comments?post=981"}],"version-history":[{"count":4,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/981\/revisions"}],"predecessor-version":[{"id":1462,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/posts\/981\/revisions\/1462"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/media?parent=981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/categories?post=981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/en\/wp-json\/wp\/v2\/tags?post=981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}