{"id":1464,"date":"2026-09-08T17:45:08","date_gmt":"2026-09-08T20:45:08","guid":{"rendered":"https:\/\/www.linuxpro.com.br\/?p=1464"},"modified":"2026-09-09T01:43:46","modified_gmt":"2026-09-09T04:43:46","slug":"ai-memory-instalar-configurar-agentes-linux","status":"publish","type":"post","link":"https:\/\/www.linuxpro.com.br\/es\/2026\/09\/ai-memory-instalar-configurar-agentes-linux\/","title":{"rendered":"ai-memory: instala memoria persistente para agentes en Linux"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full\" src=\"\/wp-content\/uploads\/2026\/09\/ai-memory-programador-cli-v2.webp\" alt=\"Mascote LinuxPro programando com IA em uma cadeira gamer, entre IDE, terminal Linux e mem\u00f3ria persistente\" width=\"1440\" height=\"810\" \/><\/p>\n<p>Trocar de Claude Code para Codex, OpenCode, Cursor ou Grok no meio de uma tarefa normalmente custa contexto: \u00e9 preciso explicar de novo a arquitetura, as tentativas que falharam e o pr\u00f3ximo passo. O <a href=\"https:\/\/github.com\/akitaonrails\/ai-memory\">ai-memory<\/a> resolve esse problema com mem\u00f3ria persistente compartilhada entre agentes. Este guia instala a vers\u00e3o nativa no Linux, cria um servi\u00e7o <code>systemd --user<\/code>, liga MCP e hooks nos clientes suportados e mostra onde os dados ficam. A vers\u00e3o 2.0 tamb\u00e9m tornou a mem\u00f3ria mais port\u00e1til e preparada para uso concorrente.<\/p>\n<h2>O que o ai-memory guarda \u2014 e o que n\u00e3o guarda<\/h2>\n<p>O ai-memory \u00e9 um servidor de mem\u00f3ria de longo prazo para agentes de programa\u00e7\u00e3o. Os hooks registram eventos da sess\u00e3o; o servidor consolida esse material em p\u00e1ginas Markdown e permite recuperar contexto e handoffs pelo MCP. A fonte de verdade \u00e9 uma wiki em arquivos <code>.md<\/code>; o SQLite \u00e9 um \u00edndice derivado. Isso torna a mem\u00f3ria inspecion\u00e1vel, version\u00e1vel e recuper\u00e1vel sem depender de um banco vetorial opaco.<\/p>\n<p>O caminho padr\u00e3o n\u00e3o exige chave de API nem chamadas a LLM: captura, busca textual e handoff continuam dispon\u00edveis. Na primeira execu\u00e7\u00e3o do servidor, o ai-memory baixa o modelo local <code>all-MiniLM-L6-v2<\/code> para embeddings; ele n\u00e3o precisa de chave de API. Uma LLM \u00e9 opcional para recursos de consolida\u00e7\u00e3o e recupera\u00e7\u00e3o. Para desligar embeddings locais, defina <code>embedding_provider = \"none\"<\/code> na configura\u00e7\u00e3o. Antes de ativar hooks, avalie o que pode entrar no hist\u00f3rico do projeto. Para \u00e1reas sens\u00edveis, use uma pol\u00edtica de captura e mantenha a inst\u00e2ncia apenas no loopback.<\/p>\n<h2>O que mudou na linha 2.x<\/h2>\n<p>O an\u00fancio da <a href=\"https:\/\/akitaonrails.com\/2026\/09\/02\/ai-memory-2-0-melhor-sistema-memoria-agentes-e-times\/\">ai-memory 2.0<\/a> ajuda a entender por que este n\u00e3o \u00e9 apenas um gerenciador de resumos. A wiki passou a usar o Open Knowledge Format (OKF): p\u00e1ginas Markdown com metadados padronizados. Em outras palavras, a mem\u00f3ria continua leg\u00edvel fora do servidor \u2014 voc\u00ea pode inspecion\u00e1-la, version\u00e1-la no Git ou lev\u00e1-la para outra ferramenta compat\u00edvel.<\/p>\n<p>Ao migrar uma instala\u00e7\u00e3o 1.x, a 2.0 cria e verifica um backup do diret\u00f3rio de dados antes de alterar o formato. N\u00e3o descarte esse backup at\u00e9 conferir a wiki e as consultas ap\u00f3s a atualiza\u00e7\u00e3o. Os embeddings locais continuam sendo o caminho padr\u00e3o: n\u00e3o exigem chave de API nem enviam o conte\u00fado da mem\u00f3ria a um provedor externo.<\/p>\n<p>A outra mudan\u00e7a pr\u00e1tica \u00e9 a concorr\u00eancia. Claude Code, Codex, OpenCode e outros harnesses podem trabalhar no mesmo checkout sem compartilhar um ponteiro global de \u201cprojeto atual\u201d. As escritas passam por uma fila \u00fanica e p\u00e1ginas recebem vers\u00f5es, para que uma atualiza\u00e7\u00e3o posterior n\u00e3o apague silenciosamente a anterior. Em uma instala\u00e7\u00e3o compartilhada, as p\u00e1ginas podem servir ao time inteiro; handoffs, por\u00e9m, continuam pessoais e s\u00f3 podem ser aceitos uma vez pelo dono da sess\u00e3o.<\/p>\n<p>Isso n\u00e3o significa que uma conversa j\u00e1 aberta seja interrompida para receber uma anota\u00e7\u00e3o nova: ela a ver\u00e1 na pr\u00f3xima consulta ou numa sess\u00e3o seguinte. Para equipes, mantenha autentica\u00e7\u00e3o e HTTPS antes de expor o servi\u00e7o fora da m\u00e1quina local.<\/p>\n<h2>Pr\u00e9-requisitos e escolha da instala\u00e7\u00e3o<\/h2>\n<p>O projeto oferece bin\u00e1rios Linux para <code>x86_64<\/code> e <code>aarch64<\/code>. A alternativa recomendada pelo pr\u00f3prio projeto para instala\u00e7\u00f5es nativas \u00e9 <code>mise use -g github:akitaonrails\/ai-memory<\/code>; abaixo usaremos o tarball da release para deixar vers\u00e3o, checksum, bin\u00e1rio e hooks expl\u00edcitos.<\/p>\n<p>N\u00e3o use <code>cargo install ai-memory<\/code>: esse nome j\u00e1 pertence a outro crate no crates.io. Para compilar, use o workspace do reposit\u00f3rio; para operar normalmente, prefira um bin\u00e1rio da <a href=\"https:\/\/github.com\/akitaonrails\/ai-memory\/releases\/tag\/v2.1.1\">release v2.1.1<\/a>.<\/p>\n<pre><code class=\"language-bash\">command -v curl sha256sum tar systemctl\nuname -m\nmkdir -p ~\/.local\/bin ~\/.config\/ai-memory ~\/.local\/share\/ai-memory<\/code><\/pre>\n<h2>Baixando e verificando o bin\u00e1rio nativo<\/h2>\n<p>Baixe sempre o arquivo <code>.sha256<\/code> publicado junto ao tarball e interrompa a instala\u00e7\u00e3o se a soma n\u00e3o conferir. O bloco abaixo seleciona a arquitetura, usa a release v2.1.1 e preserva os hooks que v\u00eam no pacote.<\/p>\n<pre><code class=\"language-bash\">set -euo pipefail\n\nVER=2.1.1\ncase \"$(uname -m)\" in\n  x86_64)  ARQ=ai-memory-linux-x86_64.tar.gz ;;\n  aarch64|arm64) ARQ=ai-memory-linux-aarch64.tar.gz ;;\n  *) echo \"Arquitetura sem bin\u00e1rio publicado: $(uname -m)\" &gt;&amp;2; exit 1 ;;\nesac\n\nBASE=\"https:\/\/github.com\/akitaonrails\/ai-memory\/releases\/download\/v${VER}\"\nTMP=$(mktemp -d)\ntrap 'rm -rf \"$TMP\"' EXIT\n\ncurl -fL \"$BASE\/$ARQ\" -o \"$TMP\/$ARQ\"\ncurl -fL \"$BASE\/$ARQ.sha256\" -o \"$TMP\/$ARQ.sha256\"\n(\n  cd \"$TMP\"\n  sha256sum -c \"$ARQ.sha256\"\n  mkdir release\n  tar -xzf \"$ARQ\" -C release\n)\n\ninstall -m 0755 \"$TMP\/release\/ai-memory\" \"$HOME\/.local\/bin\/ai-memory\"\ninstall -d \"$HOME\/.local\/share\/ai-memory\/release-$VER\"\ncp -a \"$TMP\/release\/hooks\" \"$HOME\/.local\/share\/ai-memory\/release-$VER\/\"\n\nexport PATH=\"$HOME\/.local\/bin:$PATH\"\nai-memory --version<\/code><\/pre>\n<p>Se <code>ai-memory<\/code> n\u00e3o aparecer em um terminal novo, acrescente <code>export PATH=\"$HOME\/.local\/bin:$PATH\"<\/code> ao arquivo de inicializa\u00e7\u00e3o do shell, como <code>~\/.bashrc<\/code> ou <code>~\/.zshrc<\/code>.<\/p>\n<h2>Inicializando a base local<\/h2>\n<p>Vamos manter a configura\u00e7\u00e3o em <code>~\/.config\/ai-memory\/config.toml<\/code> e os dados em <code>~\/.local\/share\/ai-memory<\/code>, o padr\u00e3o esperado em uma instala\u00e7\u00e3o de usu\u00e1rio no Linux.<\/p>\n<pre><code class=\"language-bash\">ai-memory \n  --data-dir \"$HOME\/.local\/share\/ai-memory\" \n  --config \"$HOME\/.config\/ai-memory\/config.toml\" \n  init<\/code><\/pre>\n<p>Ap\u00f3s o primeiro uso, a wiki fica em <code>~\/.local\/share\/ai-memory\/wiki\/<\/code>, o \u00edndice SQLite em <code>~\/.local\/share\/ai-memory\/db\/memory.sqlite<\/code> e os modelos locais em <code>~\/.local\/share\/ai-memory\/models\/<\/code>. A wiki \u00e9 a fonte de verdade das p\u00e1ginas, mas sess\u00f5es, observa\u00e7\u00f5es, handoffs e auditoria tamb\u00e9m vivem no banco. Para uma c\u00f3pia completa, use o comando de backup do pr\u00f3prio ai-memory:<\/p>\n<pre><code class=\"language-bash\">mkdir -p \"$HOME\/backups\/ai-memory\"\nai-memory backup --to \"$HOME\/backups\/ai-memory\/ai-memory-$(date +%Y%m%d-%H%M).tar.gz\"<\/code><\/pre>\n<h2>Subindo o servidor com systemd do usu\u00e1rio<\/h2>\n<p>O servidor MCP precisa ficar rodando para que os CLIs e hooks falem com ele. Este servi\u00e7o de usu\u00e1rio escuta somente em <code>127.0.0.1:49374<\/code>: n\u00e3o publique essa porta na rede.<\/p>\n<pre><code class=\"language-bash\">cat &gt; ~\/.config\/systemd\/user\/ai-memory.service &lt;&lt;'UNIT'\n[Unit]\nDescription=ai-memory local MCP and lifecycle server\nAfter=network.target\n\n[Service]\nType=simple\nWorkingDirectory=%h\nExecStart=%h\/.local\/bin\/ai-memory --data-dir %h\/.local\/share\/ai-memory --config %h\/.config\/ai-memory\/config.toml serve --transport http --bind 127.0.0.1:49374\nRestart=on-failure\nRestartSec=5\nNoNewPrivileges=true\nPrivateTmp=true\n\n[Install]\nWantedBy=default.target\nUNIT\n\nsystemctl --user daemon-reload\nsystemctl --user enable --now ai-memory.service\nsystemctl --user status ai-memory.service --no-pager<\/code><\/pre>\n<p>Em uma m\u00e1quina que deve manter o servi\u00e7o ativo mesmo sem login gr\u00e1fico, habilite linger uma \u00fanica vez:<\/p>\n<pre><code class=\"language-bash\">loginctl enable-linger \"$USER\"<\/code><\/pre>\n<p>Confira o processo e os logs quando algo n\u00e3o responder:<\/p>\n<pre><code class=\"language-bash\">systemctl --user is-active ai-memory.service\njournalctl --user -u ai-memory.service -n 80 --no-pager\nai-memory status<\/code><\/pre>\n<h2>Usando ChatGPT\/Codex como provedor LLM<\/h2>\n<p>Sem provedor, o ai-memory continua capturando sess\u00f5es, buscando na wiki e criando resumos determin\u00edsticos. Um LLM acrescenta consolida\u00e7\u00e3o mais rica, lint e melhorias em segundo plano. Para usar a assinatura ChatGPT Plus, Pro ou Codex, selecione <code>openai-oauth<\/code>: ele usa o backend ChatGPT\/Codex por OAuth, n\u00e3o precisa de <code>OPENAI_API_KEY<\/code> e guarda o token renov\u00e1vel em <code>~\/.local\/share\/ai-memory\/auth.json<\/code>.<\/p>\n<p>Para consolida\u00e7\u00e3o, um modelo econ\u00f4mico \u00e9 suficiente. O exemplo fixa <code>gpt-5.6-luna<\/code> com <code>medium<\/code>: \u00e9 o ponto de partida mais equilibrado quando as sess\u00f5es envolvem decis\u00f5es t\u00e9cnicas, tentativas que falharam e pr\u00f3ximos passos. Crie um drop-in do systemd, em vez de editar a unidade principal:<\/p>\n<pre><code class=\"language-bash\">mkdir -p ~\/.config\/systemd\/user\/ai-memory.service.d\n\ncat &gt; ~\/.config\/systemd\/user\/ai-memory.service.d\/llm-openai-oauth.conf &lt;&lt;'EOF'\n[Service]\nEnvironment=AI_MEMORY_LLM_PROVIDER=openai-oauth\nEnvironment=AI_MEMORY_LLM_MODEL=gpt-5.6-luna\nEnvironment=AI_MEMORY_LLM_REASONING_EFFORT=medium\nEnvironment=AI_MEMORY_CONSOLIDATE_ON_SESSION_END=true\nEOF\n\nsystemctl --user daemon-reload<\/code><\/pre>\n<p>O \u00faltimo par\u00e2metro agenda a consolida\u00e7\u00e3o com LLM depois de um encerramento de sess\u00e3o; a captura e o handoff n\u00e3o ficam bloqueados esperando a resposta do modelo. O <a href=\"https:\/\/developers.openai.com\/api\/docs\/models\/gpt-5.6-luna\">GPT-5.6 Luna<\/a> \u00e9 voltado a cargas de alto volume e sens\u00edveis a custo e aceita <code>none<\/code>, <code>low<\/code>, <code>medium<\/code>, <code>high<\/code>, <code>xhigh<\/code> e <code>max<\/code>. Portanto, <code>none<\/code> \u00e9 uma configura\u00e7\u00e3o v\u00e1lida \u2014 mas n\u00e3o \u00e9 a \u00fanica op\u00e7\u00e3o, nem a melhor escolha padr\u00e3o para consolidar sess\u00f5es t\u00e9cnicas.<\/p>\n<h3>Qual effort escolher para o ai-memory?<\/h3>\n<p>Comece com <code>medium<\/code> se o objetivo \u00e9 preservar decis\u00f5es, causas de falhas e pend\u00eancias de uma sess\u00e3o. Ele tende a produzir uma consolida\u00e7\u00e3o mais \u00fatil que um simples resumo, sem elevar o custo e a lat\u00eancia tanto quanto os n\u00edveis mais altos.<\/p>\n<table>\n<thead>\n<tr>\n<th>Effort<\/th>\n<th>Quando usar no ai-memory<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>none<\/code><\/td>\n<td>Extra\u00e7\u00e3o ou resumo muito simples, quando a menor lat\u00eancia \u00e9 prioridade.<\/td>\n<\/tr>\n<tr>\n<td><code>low<\/code><\/td>\n<td>Boa op\u00e7\u00e3o para equilibrar velocidade e qualidade em sess\u00f5es rotineiras.<\/td>\n<\/tr>\n<tr>\n<td><code>medium<\/code><\/td>\n<td>Recomendado como ponto de partida para consolida\u00e7\u00e3o de sess\u00f5es t\u00e9cnicas e handoffs.<\/td>\n<\/tr>\n<tr>\n<td><code>high<\/code><\/td>\n<td>Teste apenas para sess\u00f5es excepcionalmente complexas, se <code>medium<\/code> estiver deixando decis\u00f5es importantes de fora.<\/td>\n<\/tr>\n<tr>\n<td><code>xhigh<\/code> e <code>max<\/code><\/td>\n<td>Raramente necess\u00e1rios para a consolida\u00e7\u00e3o autom\u00e1tica; aumente somente ap\u00f3s avaliar ganho real de qualidade.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Em outras palavras: use <code>low<\/code> quando quiser privilegiar velocidade; use <code>medium<\/code> para o uso di\u00e1rio de projetos com c\u00f3digo, infraestrutura e troubleshooting. S\u00f3 suba para <code>high<\/code> se os handoffs e p\u00e1ginas consolidadas comprovadamente ainda estiverem superficiais.<\/p>\n<h3>Login OAuth e teste<\/h3>\n<p>Fa\u00e7a o login interativo no mesmo usu\u00e1rio que executa o servi\u00e7o. O comando mostra uma URL e um c\u00f3digo tempor\u00e1rio: abra a URL, entre na sua conta ChatGPT\/Codex e informe o c\u00f3digo. N\u00e3o copie o arquivo <code>auth.json<\/code>, nem cole tokens em arquivos de configura\u00e7\u00e3o.<\/p>\n<pre><code class=\"language-bash\">ai-memory auth login openai-oauth\n\n# depois de autorizar no navegador:\nsystemctl --user restart ai-memory.service\nai-memory auth status\nai-memory llm-test \n  --provider openai-oauth \n  --model gpt-5.6-luna \n  --prompt 'Responda somente: OK'<\/code><\/pre>\n<p>O teste deve devolver <code>OK<\/code>. Se o login expirar ou for revogado, repita <code>ai-memory auth login openai-oauth<\/code>; para trocar de conta, execute antes <code>ai-memory auth logout openai-oauth<\/code>. Consulte a <a href=\"https:\/\/github.com\/akitaonrails\/ai-memory\/blob\/main\/docs\/llm-providers.md\">documenta\u00e7\u00e3o de provedores do ai-memory<\/a> para Anthropic, OpenAI por API, Gemini, Copilot e endpoints compat\u00edveis com OpenAI.<\/p>\n<h2>Registrando MCP e hooks nos agentes<\/h2>\n<p>O MCP d\u00e1 ao agente ferramentas como consulta de mem\u00f3ria e aceita\u00e7\u00e3o de handoff. Os hooks fazem a captura autom\u00e1tica do ciclo de vida. Os dois s\u00e3o necess\u00e1rios para a experi\u00eancia completa. Os comandos abaixo fazem merge das entradas pertencentes ao ai-memory, sem exigir edi\u00e7\u00e3o manual dos JSON e TOML dos clientes.<\/p>\n<p>Defina o diret\u00f3rio de hooks extra\u00eddo na instala\u00e7\u00e3o e execute a dupla de comandos para cada cliente instalado:<\/p>\n<pre><code class=\"language-bash\">export PATH=\"$HOME\/.local\/bin:$PATH\"\nHOOKS_DIR=\"$HOME\/.local\/share\/ai-memory\/release-2.1.1\/hooks\"\n\n# Claude Code\nai-memory install-mcp --client claude-code --apply\nai-memory install-hooks --agent claude-code --hooks-dir \"$HOOKS_DIR\" --apply --project-strategy repo-root\n\n# OpenAI Codex\nai-memory install-mcp --client codex --apply\nai-memory install-hooks --agent codex --hooks-dir \"$HOOKS_DIR\" --apply --project-strategy repo-root\n\n# OpenCode\nai-memory install-mcp --client open-code --apply\nai-memory install-hooks --agent open-code --apply --project-strategy repo-root\n\n# Cursor Agent CLI\nai-memory install-mcp --client cursor --apply\nai-memory install-hooks --agent cursor --hooks-dir \"$HOOKS_DIR\" --apply --project-strategy repo-root\n\n# Grok Build CLI\nai-memory install-mcp --client grok --apply\nai-memory install-hooks --agent grok --hooks-dir \"$HOOKS_DIR\" --apply --project-strategy repo-root<\/code><\/pre>\n<p>Reinicie os clientes depois do merge. No Codex, aprove os hooks quando o cliente pedir confirma\u00e7\u00e3o. O OpenCode carrega os hooks como um plugin TypeScript em <code>~\/.config\/opencode\/plugins\/<\/code>, por isso tamb\u00e9m precisa ser reiniciado. No Grok, o stdout do evento <code>SessionStart<\/code> n\u00e3o \u00e9 inserido no contexto; ao retomar trabalho, pe\u00e7a ao agente para chamar <code>memory_handoff_accept<\/code>. No Codex CLI 0.145.0 ou mais novo, o evento <code>SessionEnd<\/code> entrega o handoff automaticamente. Em vers\u00f5es antigas \u2014 ou quando esse evento n\u00e3o estiver dispon\u00edvel \u2014 o evento Stop n\u00e3o encerra a sess\u00e3o: execute <code>ai-memory finalize-session --agent codex<\/code> ao concluir uma tarefa importante.<\/p>\n<h2>Escopo por reposit\u00f3rio e regras de privacidade<\/h2>\n<p>Sem configura\u00e7\u00e3o, o projeto \u00e9 identificado pelo nome do diret\u00f3rio corrente. O par\u00e2metro <code>--project-strategy repo-root<\/code> usado acima evita que um <code>cd<\/code> para um subdiret\u00f3rio crie uma mem\u00f3ria separada. Para declarar o escopo no pr\u00f3prio reposit\u00f3rio, crie <code>.ai-memory.toml<\/code> na raiz:<\/p>\n<pre><code class=\"language-toml\">workspace = \"pessoal\"\nproject = \"site-linuxpro\"\n\n[briefing]\ninject_on_session_start = \"true\"\nmax_chars = 4000\n\n[capture]\nignore_paths = [\"private\/**\", \"~\/.ssh\/**\"]<\/code><\/pre>\n<p>Os valores de <code>workspace<\/code> e <code>project<\/code> aceitam letras min\u00fasculas ASCII, d\u00edgitos, ponto, h\u00edfen e sublinhado. A se\u00e7\u00e3o <code>capture<\/code> evita registrar eventos reconhecidos de ferramentas de arquivo sob os caminhos indicados; n\u00e3o \u00e9 uma solu\u00e7\u00e3o completa de DLP para comandos de shell ou conte\u00fado que voc\u00ea mesmo escrever no prompt. Para m\u00e1xima cautela, instale os hooks em modo allowlist e coloque o marcador somente nos reposit\u00f3rios que devem ser capturados:<\/p>\n<pre><code class=\"language-bash\">ai-memory install-hooks --agent claude-code --hooks-dir \"$HOOKS_DIR\" --apply --capture-mode allowlist<\/code><\/pre>\n<h2>Consultando a mem\u00f3ria e entregando contexto<\/h2>\n<p>Depois de trabalhar normalmente pelo agente, use o MCP para pedir uma busca sobre decis\u00f5es, arquivos ou tentativas anteriores. Ao encerrar, finalize a sess\u00e3o quando necess\u00e1rio; o pr\u00f3ximo agente deve aceitar o handoff pendente em vez de come\u00e7ar do zero.<\/p>\n<pre><code class=\"language-bash\"># \u00datil principalmente ap\u00f3s uma sess\u00e3o do Codex:\nai-memory finalize-session\n\n# Diagn\u00f3stico e manuten\u00e7\u00e3o local\nai-memory status\nai-memory lint<\/code><\/pre>\n<p>Dentro de Claude, Codex, OpenCode, Cursor Agent CLI ou Grok, uma instru\u00e7\u00e3o simples basta: \u201cbusque na mem\u00f3ria decis\u00f5es sobre autentica\u00e7\u00e3o deste projeto\u201d ou \u201caceite o handoff pendente\u201d. O agente usa as ferramentas MCP registradas; n\u00e3o \u00e9 preciso copiar a wiki para a conversa.<\/p>\n<h2>Acesso remoto: n\u00e3o exponha a porta crua<\/h2>\n<p>O exemplo deste artigo \u00e9 local e n\u00e3o usa autentica\u00e7\u00e3o porque o bind \u00e9 exclusivo de loopback. Para atender outra m\u00e1quina, configure token bearer, <code>allowed_hosts<\/code> e HTTPS por um proxy reverso antes de alterar o bind. Autentica\u00e7\u00e3o n\u00e3o cifra o tr\u00e1fego. O projeto mant\u00e9m um <a href=\"https:\/\/github.com\/akitaonrails\/ai-memory\/blob\/v2.1.1\/docs\/https-via-proxy.md\">guia de proxy HTTPS<\/a> com exemplos para Caddy e Cloudflare Tunnel.<\/p>\n<h2>Atualiza\u00e7\u00f5es e recupera\u00e7\u00e3o<\/h2>\n<p>Para atualizar uma instala\u00e7\u00e3o por tarball, baixe a nova release, valide o checksum, substitua o bin\u00e1rio, atualize o diret\u00f3rio de hooks e reinicie o servi\u00e7o. Depois, rode novamente <code>install-hooks --apply<\/code> para cada agente. Ao cruzar a fronteira para a linha 2.x, deixe a migra\u00e7\u00e3o criar e verificar seu backup antes de tocar nos dados. N\u00e3o apague <code>wiki\/<\/code> nem <code>db\/<\/code> durante esse processo.<\/p>\n<pre><code class=\"language-bash\">systemctl --user restart ai-memory.service\nsystemctl --user status ai-memory.service --no-pager<\/code><\/pre>\n<p>Se houver problema ap\u00f3s uma atualiza\u00e7\u00e3o, restaure o arquivo gerado por <code>ai-memory backup<\/code> e examine <code>journalctl --user -u ai-memory.service<\/code>. Esse backup inclui a wiki e o estado SQLite necess\u00e1rio para preservar tamb\u00e9m sess\u00f5es, observa\u00e7\u00f5es e handoffs.<\/p>\n<h2>Cr\u00e9dito ao autor e licen\u00e7a<\/h2>\n<p>O ai-memory \u00e9 criado e mantido por <a href=\"https:\/\/github.com\/akitaonrails\">F\u00e1bio Akita<\/a>, autor do reposit\u00f3rio <a href=\"https:\/\/github.com\/akitaonrails\/ai-memory\">akitaonrails\/ai-memory<\/a>. O arquivo <a href=\"https:\/\/github.com\/akitaonrails\/ai-memory\/blob\/v2.1.1\/LICENSE\">LICENSE<\/a> da release identifica \u201cCopyright (c) 2026 Fabio Akita\u201d e disponibiliza o projeto sob a licen\u00e7a MIT. Obrigado ao F\u00e1bio por disponibilizar uma alternativa aberta, local e interoper\u00e1vel para mem\u00f3ria de agentes.<\/p>\n<p>Com o servi\u00e7o local, MCP e hooks instalados, voc\u00ea pode alternar de agente sem abandonar o hist\u00f3rico t\u00e9cnico do projeto. Para comparar outras op\u00e7\u00f5es, veja tamb\u00e9m <a href=\"\/2026\/09\/alternativas-claude-mem-go-rust-c\/\">as alternativas ao Claude-Mem em Go, Rust e C<\/a> e o artigo sobre <a href=\"\/2026\/09\/engram-memoria-persistente-para-agentes-no-linux\/\">mem\u00f3ria persistente para agentes no Linux<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Trocar de Claude Code para Codex, OpenCode, Cursor ou Grok no meio de uma tarefa normalmente custa contexto: \u00e9 preciso explicar de novo a arquitetura, as tentativas que falharam e o pr\u00f3ximo passo. O ai-memory resolve esse problema com mem\u00f3ria persistente compartilhada entre agentes. Este guia instala a vers\u00e3o nativa no Linux, cria um servi\u00e7o &#8230; <a title=\"ai-memory: instala memoria persistente para agentes en Linux\" class=\"read-more\" href=\"https:\/\/www.linuxpro.com.br\/es\/2026\/09\/ai-memory-instalar-configurar-agentes-linux\/\" aria-label=\"Read more about ai-memory: instale mem\u00f3ria persistente para agentes no Linux\">Read more<\/a><\/p>","protected":false},"author":0,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[115,2],"tags":[394,426,116,311,427,158],"class_list":["post-1464","post","type-post","status-publish","format-standard","hentry","category-ia","category-linux","tag-agentes","tag-ai-memory","tag-ia","tag-mcp","tag-memoria-persistente","tag-rust"],"_links":{"self":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/1464","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"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/comments?post=1464"}],"version-history":[{"count":11,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/1464\/revisions"}],"predecessor-version":[{"id":1493,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/1464\/revisions\/1493"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/media?parent=1464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/categories?post=1464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/tags?post=1464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}