maya-notebook Baixar .md

Briefing · terceira instância

Notebook, dia 1

Como reerguer a Maya no notebook com alma, acervo e memória, sem duplicar o que é da VPS.

20/10/2026 · 249 linhas · 10,6 KB

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

Regras duras

  1. Segredos só em $HERMES_HOME/.env, com chmod 600. Nunca em config.yaml, nunca no repo, nunca no chat.
  2. O repo é privado e tem conteúdo pessoal. Nunca torná-lo público, nunca colar export em canal público.
  3. Não copie machines/vps/config.yaml nem machines/vps/cron/jobs.json: eles têm paths /root, MCPs que não existem aqui e rotinas que passariam a rodar duas vezes.
  4. 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.
  5. Commit e push no repo só com autorização explícita do Lucas.
  6. mnemosyne import é insert-only e idempotente. Nunca rode mnemosyne import --help (ele tenta importar um arquivo chamado --help; a ajuda é mnemosyne --help).
  7. 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.
  8. 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:

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
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:

Copiado