Produto
O que mais dá para fazer
Handoffs e busca são o uso do dia a dia. Estas são as outras coisas que uma memória que mora em um servidor só consegue fazer por você, de passar trabalho entre projetos a manter a memória de um cliente separada da de outro.
Um agente pede algo ao agente de outro projeto
Dois repositórios que conversam por uma API, cada um com seu próprio agente e sua própria memória. O agente do frontend conhece o protocolo. Em vez de ler o repositório inteiro da API, ele escreve um pedido completo e deixa na inbox daquele projeto.

Como fica na prática
No repositório do frontend
> Pede para o agente em default/api adicionar um endpoint /v1/export que faça stream de NDJSON, mantendo o middleware de auth atual, e manda pelo ai-memory.
O agente chama memory_message_send com um corpo autocontido. O pedido precisa se sustentar sozinho, porque quem lê não enxerga este projeto.
Mais tarde, no repositório da API
📬 ai-memory: 1 mensagem de outro projeto esperando na inbox deste projeto.
> Confere minha inbox do ai-memory.
O agente chama memory_message_pop, recebe o pedido com quem mandou, e trabalha a partir dele. Um segundo pop não retorna nada.
# Mande a partir do projeto atual
ai-memory message send --to-workspace default --to-project api \
--subject "export endpoint" "Add a /v1/export endpoint that streams NDJSON…"
# No outro projeto: liste sem consumir, ou assuma a mais antiga
ai-memory message list
ai-memory message pop
# Mude de ideia antes de ela ser assumida
ai-memory message cancel --id <message-id>
Endereçada a um projeto
A mensagem vai para um workspace e um projeto, e qualquer sessão desse projeto pode assumi-la. Depois de assumida, ela sai da fila, como um handoff.
Nada entra no contexto sozinho
O aviso no início da sessão traz só uma contagem. O texto da mensagem só chega ao agente por um pop deliberado, cercado e marcado como não confiável, com o remetente mostrado fora da cerca.
Falha fechado
O projeto de destino precisa existir, então um erro de digitação é rejeitado em vez de cair numa inbox que ninguém lê. Cada inbox guarda no máximo 256 mensagens pendentes.
Cancelável, auditada
Quem mandou pode cancelar a mensagem até ela ser assumida. Segredos são removidos no envio, o corpo tem limite de tamanho, e em um servidor compartilhado toda mensagem registra quem mandou.
Separe clientes, mono-repos e trabalho pessoal
A memória é arquivada por workspace e projeto. Um checkout com um remote git é arquivado por esse remote, então o mesmo repositório clonado duas vezes compartilha uma memória, e uma pasta sem remote usa o próprio nome. Um arquivo pequeno muda o resto.

Um workspace por cliente
Coloque
.ai-memory.tomlem~/work/client-a/e todo repositório abaixo dele cai nesse workspace. Nada do cliente A aparece enquanto você trabalha para o cliente B.Um mono-repo como um projeto só
Um marcador que define o project fixa todos os subdiretórios nele, então os pacotes compartilham uma memória só. Sem o project, cada pacote fica com a sua.
Git worktrees
Worktrees vinculados resolvem para o repositório principal, então um branch com checkout em outro lugar mantém a mesma memória.
Dois agentes em um projeto
O ponteiro de projeto atual é isolado por chamador, então Claude Code e Codex podem rodar lado a lado no mesmo diretório sem confundir um ao outro.
Um laptop, dois empregadores
Registre cada servidor com
ai-memory server adde nomeie ele no marcador comserver = "team-b". Hooks dessa árvore vão para lá e para lugar nenhum mais, e um nome que não resolve não manda nada.Fixe uma identidade
identity = "acme/platform"arquiva um checkout sob essa chave onde quer que ele esteja, mesmo sem remote.
# Todo repositório abaixo deste diretório cai no workspace client-a
workspace = "client-a"
Regras que chegam a toda sessão
Diga ao agente para lembrar de algo para sempre e isso vira uma página na wiki. As regras ficam arquivadas separadas dos fatos, e o briefing da sessão pode colocá-las na frente do agente antes do primeiro prompt.
Diga uma vez
“Lembre: antes de mexer no código de pagamento, leia as notas de PCI.” O agente grava uma página durável. Peça como regra global e ela vale para todos os seus projetos.
O briefing leva as regras junto
Com
inject_on_session_start = trueno arquivo marcador do projeto, as páginas fixadas, as regras e os slots entram no início do contexto de toda sessão nova.O lint sugere promover
Quando uma regra parece durável o bastante, o
memory_lintsugere copiá-la para oCLAUDE.mdou oAGENTS.md. O ai-memory nunca edita esses arquivos por conta própria.Os registros de decisão continuam seus
O ai-memory nunca escreve no seu repositório. Mantenha um diretório de ADRs e liste ele em
[capture] ignore_paths, para a wiki não guardar uma cópia desatualizada.
# Coloca páginas fixadas, regras e slots no início de toda sessão
[briefing]
inject_on_session_start = true
Notas que expiram, e feedback que reordena
Lembre disso até sexta
Uma página gravada com
expires_atsome da busca depois dessa data. Ela continua lá para uma busca que peça páginas expiradas.Essa página estava errada
O
memory_feedbackregistra útil, não útil, desatualizada ou errada em uma página. Desatualizada e errada rebaixam a página nos próximos rankings e aceleram o envelhecimento dela. Feedback nunca apaga nada.Mova uma sessão
Uma sessão capturada no projeto errado, depois de um
cdpara um diretório de rascunho, pode ser reanexada comai-memory move-session. As observações e a página dela vão junto.Recupere o que a compactação levou
Quando o Claude Code ou o Codex compactam o contexto, um hook grava antes uma página de sessão nova, então o que foi compactado pode ser recuperado.
Leia no navegador, leve para onde quiser
Uma interface web somente leitura
Suba o servidor com
--enable-webe as páginas de todos os projetos ficam navegáveis, agrupadas em conceitos, decisões, gotchas e sessões, com uma API JSON em/api/v1.Um formato aberto
Cada projeto é um bundle Open Knowledge Format. O
ai-memory export-okfempacota tudo para qualquer ferramenta que leia OKF, e os arquivos são markdown puro para todo o resto.Skills para o seu agente
O
ai-memory install-mcptambém instala um trecho curto de roteamento e Agent Skills gerenciadas, então o agente sabe qual ferramenta responde “a gente já discutiu isso?” e qual manda mensagem.
Tarefas que o launcher assume
ai-memory run abre o agente através do servidor de memória. Ele também mantém o binário atualizado, fecha as sessões e avisa antes de desativar qualquer coisa.

Atualização em um comando só
ai-memory upgradebaixa a release correspondente, confere o checksum, troca o binário e atualiza os hooks. Instalações via Docker, Homebrew, AUR e RPM mantêm o próprio caminho.Um aviso antes de tirar as travas de segurança
ai-jail no GitHubai-memory run --yoloavisa o que está prestes a desativar e, no Linux e no macOS com o ai-jail disponível, oferece para rodar a sessão de novo dentro do sandbox, com um checklist do que o jail pode ver.--jailentra direto, com valores padrão sensatos.Variáveis de ambiente para o harness
--env KEY=VALUEe--env-filechegam tanto ao agente que é aberto quanto à própria busca de sessão do ai-memory, então umCLAUDE_CONFIG_DIRpor conta não precisa de script wrapper.Sessões fecham ao sair
Agentes sem hook de fim de sessão (Command Code, Kiro CLI, Antigravity CLI) recebem o resumo e o handoff quando o launcher termina.
finalize-session --reopencobre uma conversa que continuou depois disso.Login na interface web
A wiki nativa tem páginas de login e de troca de senha para usuários com senha, e uma página só para o root aprovar ou rejeitar propostas pendentes do auto-improve entre projetos.
Stopwords no seu idioma
[search.fts] stopwordslista as palavras funcionais do seu idioma, para que o ranking full-text de uma wiki em português não seja distorcido pordeeque.
Perguntas e respostas
Um agente em um projeto consegue ler a memória de outro?
Não. A memória é arquivada por projeto, e as mensagens são a única travessia deliberada: um projeto só vê as mensagens endereçadas a ele ou enviadas por ele. O corpo da mensagem precisa ser autocontido porque quem lê não enxerga os arquivos de quem mandou.
Uma mensagem recebida é tratada como instrução?
Não. Uma mensagem retirada com pop vem cercada como entrada não confiável de outro projeto e traz um aviso dizendo isso. O agente avalia com você se aquilo é um pedido de tarefa, e o remetente aparece fora da cerca para você julgar a confiança antes.
O que acontece se duas sessões conferem a mesma inbox?
O primeiro pop assume a mensagem e o segundo não recebe nada. Uma mensagem é assumida exatamente uma vez, a mesma regra que os handoffs seguem.
Preciso configurar workspaces?
Não. Sem arquivo marcador, tudo cai em um workspace chamado default, com o remote git como projeto, ou o nome do diretório quando não existe um. Adicione o .ai-memory.toml só quando quiser separar clientes, tratar um mono-repo como um projeto só, manter a memória do trabalho separada da pessoal, ou usar um segundo servidor.
Dê memória aos seus agentes hoje.
Gratuito e open source sob a licença MIT. Sem conta e sem chave de API.