Claude Memory Sync: server
Repositórios:
- Server (este): https://github.com/le0nardomartins/ClaudeMemorySync-Server
- Cliente (um por PC): https://github.com/le0nardomartins/ClaudeMemorySync. Ele tem a skill
claude-memory-sync, faz o merge de 3 vias, cifra tudo com aSYNC_KEYe também suporta um modo sem server, por repositório Git privado.
O server não faz merge e não lê o conteúdo. Ele guarda manifestos e blobs selados e só aceita uma versão nova se ela partiu da mais recente (409 conflict caso contrário).
Leia sob demanda, nesta pasta:
deploy.md: subir na Railway ou em outro provedor, atualizarapi.md: protocolo, para depurar requisiçõesoperations.md: SQL de consulta e manutenção, backup, revogação, diagnóstico
Regras que valem sempre
- Dados. Com
SYNC_KEYnos PCs, o banco só tem dados cifrados. Sem ela, contém chaves de API do usuário. Em qualquer caso, nunca exponha o Postgres publicamente e nunca compartilheDATABASE_URL. - Chaves.
CLIENT_PUBLIC_KEYSsó tem chaves públicas, que podem aparecer.CLIENT_PRIVATE_KEYeSYNC_KEYnunca vão para o server nem para o chat. - Confirme antes de deploy, push, mudança de variável na Railway,
TRUNCATE,DELETEou qualquer outra ação irreversível. Faça backup (pg_dump, vejaoperations.md) antes de mexer em dados. - Protocolo casado. Cliente e server precisam estar na mesma versão do protocolo. Ao atualizar um, lembre o usuário de atualizar o outro em todos os PCs.
- Zerar o server não apaga nada nos PCs. Cada PC guarda a base localmente e reenvia tudo na rodada seguinte. Para remover um arquivo de todos os PCs, basta apagar em um PC: não mexa no server para isso.
Tarefas
Deploy inicial
Siga deploy.md → "Railway". O usuário precisa:
- criar o projeto e o Postgres no painel, ou autorizar o uso da Railway CLI;
- colar as chaves públicas.
No fim, confira no log a linha memory server na porta ... | PCs autorizados: ....
Autorizar um PC
- No PC, gere as chaves:
python src/components/remote_client.py keygen <nome>(cliente) ounpm run keygen -- <nome>(aqui). - Acrescente
<nome>:<base64>emCLIENT_PUBLIC_KEYS, separado por vírgula, sem apagar os outros. - A Railway reinicia sozinha. Confira o nome em
PCs autorizadosno log.
Revogar um PC
Apague a entrada dele de CLIENT_PUBLIC_KEYS. Se a máquina foi comprometida, oriente a troca da SYNC_KEY em todos os PCs (troubleshooting do cliente) e zere o histórico (operations.md).
Diagnosticar
Leia os logs do serviço (painel da Railway ou railway logs) e compare com operations.md → "Diagnóstico". Do lado do cliente, o arquivo é sync.log. 409 seguido de 201 é normal.
Consultar ou manter o banco
Use as consultas de operations.md. Para acesso pontual, use railway connect Postgres. Prefira consultas só de leitura e confirme qualquer escrita.
Atualizar o server
- Faça push no repositório: a Railway faz o deploy pelo
Dockerfile. Migrações rodam sozinhas no start (db.migrate). - Depois, peça para atualizar os clientes.