Briefing da Maya da VPS para a Maya do notebook. Execute na ordem, verificando cada passo. Onde eu mandar parar, pare e peça ao Lucas.
Você é a Maya, agora no notebook do Lucas. Esta é a terceira instância: VPS (referência), desktop e você. A alma, o acervo e a memória vêm do repo privado iaeluk/maya_nous, que é o espelho de reconstrução e a fonte da verdade. Este texto é o atalho; os documentos do repo mandam mais que ele.
O que você é aqui
- A mesma Maya:
SOUL.md, perfil do Lucas e memória importada. Não invente persona nova nem "adapte" a voz. - A memória é local e viva: o Mnemosyne roda nesta máquina, com o snapshot importado. Não existe banco compartilhado em tempo real; o convívio com a VPS é por export + merge + import (
SYNC.md). - O que é da VPS continua sendo da VPS. Daqui você não opera Telegram, systemd, Chromium logado, Ghidra nem os MCPs dela.
Regras duras
- Segredos só em
$HERMES_HOME/.env, comchmod 600. Nunca emconfig.yaml, nunca no repo, nunca no chat. - O repo é privado e tem conteúdo pessoal. Nunca torná-lo público, nunca colar export em canal público.
- Não copie
machines/vps/config.yamlnemmachines/vps/cron/jobs.json: eles têm paths/root, MCPs que não existem aqui e rotinas que passariam a rodar duas vezes. - Não suba o gateway do Telegram com o token da VPS. Dois pollers no mesmo bot dão conflito 409 e mensagens se perdem. Nesta máquina, use o app desktop ou o CLI. Telegram só com bot próprio, ou com o gateway da VPS desligado, e essa é decisão do Lucas.
- Commit e push no repo só com autorização explícita do Lucas.
mnemosyne importé insert-only e idempotente. Nunca rodemnemosyne import --help(ele tenta importar um arquivo chamado--help; a ajuda émnemosyne --help).- Snapshot de referência: 17/10/2026, Hermes v0.22.2, Python 3.14,
mnemosyne-hermes 0.7.0+mnemosyne-memory 3.15.1, export v1.3. Se a versão instalada for outra, registre a diferença no relatório; não "conserte" o repo por conta própria. - Se um comando falhar de um jeito que não está previsto aqui, pare e relate o erro exato. Nada de caminho alternativo silencioso.
Paradas obrigatórias
Peça ao Lucas e espere a resposta antes de continuar:
- login no GitHub (o repo é privado);
- a
OPENCODE_GO_API_KEY, digitada no terminal comread -s, para não entrar no histórico do chat; - autorização para qualquer commit ou push;
- decisão sobre Telegram e sobre o transporte de sincronização com a VPS.
Passo 0 · Reconhecer a máquina
uname -srm
echo "HOME=$HOME HERMES_HOME=${HERMES_HOME:-<padrão>}"
command -v git curl python3 || true
df -h "$HOME" | tail -1
- Linux: siga.
- macOS: siga; se faltar git,
xcode-select --install. - Windows: este briefing roda dentro do WSL2 (Ubuntu), não no PowerShell. Se você está no Windows puro, instale primeiro:
wsl --install -d Ubuntu
Depois reabra o Ubuntu, rode sudo apt update && sudo apt install -y git curl python3 e continue daqui de dentro.
Passo 1 · Instalar o Hermes
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
hash -r
hermes --version
hermes setup --non-interactive
hermes doctor
Se hermes não aparecer, abra um terminal novo ou ajuste o PATH conforme o instalador indicar. hermes doctor pode reclamar de provider sem chave; isso é esperado até o passo 4.
Canal de atualização: deixe esta instalação em stable (última release publicada), não em main. Para gravar a escolha:
hermes update --set-channel stable
Esse comando só registra o canal e sai; não baixa nada. Para baixar a versão nova depois, hermes update. Para usar stable numa execução sem gravar, hermes update --channel stable. A VPS de referência está em stable.
Passo 2 · Clonar o repo (parada: GitHub)
gh auth login # HTTPS, login pelo navegador
git clone https://github.com/iaeluk/maya_nous.git "$HOME/maya_nous"
git -C "$HOME/maya_nous" log --oneline -1
Sem gh: instale (sudo apt install gh no Ubuntu 24.04+, brew install gh no macOS) ou clone com usuário + token no prompt do git. O token vai no prompt do git, nunca no chat.
Depois de clonar, leia antes de continuar: README.md, AGENTS.md, RESTORE.md, SYNC.md e core/skills/PORTABILITY.md.
Passo 3 · Alma, acervo e scripts
H="${HERMES_HOME:-$HOME/.hermes}"
R="$HOME/maya_nous"
mkdir -p "$H/memories" "$H/scripts" "$H/plugins" "$H/mnemosyne"
cp "$R/core/SOUL.md" "$H/SOUL.md"
cp "$R/core/lucas_profile.md" "$H/lucas_profile.md"
cp "$R/core/memories/"*.md "$H/memories/"
cp "$R/core/mnemosyne-config.yaml" "$H/mnemosyne/config.yaml"
cp -a "$R/core/skills/." "$H/skills/"
cp -a "$R/core/scripts/." "$H/scripts/"
cp -a "$R/core/plugins/mnemosyne" "$H/plugins/"
chmod +x "$H/scripts/"*.sh "$H/scripts/"*.py 2>/dev/null || true
Conferência:
head -3 "$H/SOUL.md"
ls "$H/skills" | wc -l # snapshot: 88 entradas de topo
hermes skills list | head -20
As skills marcadas como vps em PORTABILITY.md vêm junto, mas são referência: não tente rodar a infraestrutura delas daqui.
Passo 4 · Modelo e chave (parada: chave)
A chave nunca vai para página, chat ou repo. Ela entra só no .env desta máquina, digitada no terminal.
read -rsp "Cole a OPENCODE_GO_API_KEY: " KEY; echo
touch "$H/.env"
grep -v '^OPENCODE_GO_API_KEY=' "$H/.env" > "$H/.env.tmp" || true
printf 'OPENCODE_GO_API_KEY=%s\n' "$KEY" >> "$H/.env.tmp"
mv "$H/.env.tmp" "$H/.env"
unset KEY
chmod 600 "$H/.env"
hermes config set model.provider opencode-go
hermes config set model.default deepseek-v4.1-flash
hermes config set model.base_url https://opencode.ai/zen/go/v1
hermes chat -q "responda apenas: ok"
Se o modelo não estiver disponível na assinatura, rode hermes model e escolha um equivalente; anote a escolha no relatório.
Passo 5 · Mnemosyne (o motivo principal)
RUNTIME_PY="$(hermes --print-runtime-command | python3 -c 'import sys,json;print(json.load(sys.stdin)[0])')"
"$RUNTIME_PY" -V
"$RUNTIME_PY" -m venv "$H/venvs/mnemosyne"
"$H/venvs/mnemosyne/bin/pip" install -q -U pip wheel
"$H/venvs/mnemosyne/bin/pip" install -r "$R/core/mnemosyne-requirements.txt"
Se algum pin não tiver wheel para a versão de Python do runtime, use o fallback (o pip resolve as dependências para o Python local):
"$H/venvs/mnemosyne/bin/pip" install mnemosyne-hermes==0.7.0 mnemosyne-memory==3.15.1
Registre o plugin e confira:
HERMES_HOME="$H" "$H/venvs/mnemosyne/bin/mnemosyne-hermes" \
install --mode wrapper --python "$H/venvs/mnemosyne/bin/python" --force
hermes config set memory.provider mnemosyne
hermes memory status
Esperado:
Provider: mnemosyne
Plugin: installed ✓
Status: available ✓
Se aparecer NOT installed, o minor do Python do venv não bate com o do runtime: refaça o install --mode wrapper --force usando o mesmo Python do runtime.
Importe o snapshot (primeira carga; idempotente):
mkdir -p "$H/mnemosyne/data"
MNEMOSYNE_DATA_DIR="$H/mnemosyne/data" \
"$H/venvs/mnemosyne/bin/mnemosyne" import "$R/core/mnemosyne-export.json"
Conferência dos números:
python3 - "$H/mnemosyne/data/mnemosyne.db" <<'PY'
import sqlite3, sys
c = sqlite3.connect(sys.argv[1])
for t in ("working_memory", "episodic_memory", "canonical_facts", "annotations"):
print(t, c.execute(f"select count(*) from {t}").fetchone()[0])
PY
Esperado no snapshot do repo (testado em 20/10/2026 com as versões pinadas): 1164 working (252 globais + 912 de sessão), 40 episódicas, 30 canônicos, 6.571 annotations. Números bem menores significam import incompleto: pare e relate. (O RESTORE.md cita 948 de um snapshot anterior; os números acima são os do arquivo atual.)
Passo 6 · Prova de vida
hermes chat -q "Em uma frase: quem é você e quem é o Lucas?"
hermes chat -q "Use mnemosyne_recall para buscar 'Lucas' e me diga em 5 linhas três fatos antigos que encontrou, com os ids. Não leia arquivos."
Critério: a voz tem que ser a do SOUL.md e os fatos têm que ser antigos, não inventados. Se ela não lembrar de nada, o import ou o provider não estão ativos: volte ao passo 5.
Passo 7 · App desktop (opcional, mas é o jeito bom)
hermes desktop
No Windows isso abre via WSLg. Se não abrir, veja hermes doctor e os logs; o CLI continua funcionando.
Passo 8 · Registrar a máquina no repo (parada: autorização)
Só depois do OK do Lucas:
mkdir -p "$R/machines/notebook"
cp "$H/config.yaml" "$R/machines/notebook/config.yaml"
No config.yaml copiado: remova mcp_servers que não existem aqui e qualquer path absoluto de outra máquina. Escreva machines/notebook/README.md com sistema, versões, caminhos e o que é local. Nada de segredos. Commit como iaeluk <iaeluk@users.noreply.github.com> e push em main só com autorização.
Passo 9 · Convívio com a VPS (não automático)
Leia SYNC.md e combine o transporte com o Lucas. Preferência: Tailscale direto entre notebook e VPS (tailscale status, rsync/scp); alternativa: arquivo de export trocado pelo repo privado. O ciclo é sempre o mesmo, um lado de cada vez:
# export local
MNEMOSYNE_DATA_DIR="$H/mnemosyne/data" "$H/venvs/mnemosyne/bin/mnemosyne" export /tmp/notebook.json
# merge: base = esta máquina, incoming = export da VPS
python3 "$R/core/scripts/mnemo-merge.py" /tmp/notebook.json /tmp/vps.json \
-o /tmp/merged.json --fixups-out /tmp/fixups.json
# fixups ANTES do import
python3 "$R/core/scripts/mnemo-apply-fixups.py" /tmp/fixups.json \
--db "$H/mnemosyne/data/mnemosyne.db"
# import
MNEMOSYNE_DATA_DIR="$H/mnemosyne/data" "$H/venvs/mnemosyne/bin/mnemosyne" import /tmp/merged.json
Regras: leia o relatório do merge antes de aplicar; divergência em working ou canônico pede decisão do Lucas; deleção (forget) não viaja, use invalidate. Não configure rotina automática de sync sem o Lucas pedir, e nunca deixe a mesma rotina (backup, curador, resumo matinal, lembretes) rodando nas duas máquinas.
Relatório final
Entregue ao Lucas, em tabela curta:
- sistema e versão; caminho de
$HERMES_HOME; hermes --version, versão do Python do runtime;- versões de
mnemosyne-hermesemnemosyne-memory; - contagens de working, episódicas, canônicos e annotations após o import;
- resultado de
hermes doctore dehermes memory status; - o que ficou pendente: GitHub, chave, Telegram, transporte de sync,
machines/notebook/; - qualquer desvio em relação ao snapshot de 17/10.