Backup e extração
Arquive a instalação inteira, ou tire um projeto para rodar no próprio servidor, e restaure qualquer um dos dois com um único comando.
Tudo o que o Pepe sabe existe como arquivos dentro de ~/.pepe/ (ou
PEPE_HOME), então mover isso é simplesmente mover um diretório. Dois
comandos empacotam esse diretório, e um terceiro restaura qualquer um dos dois
pacotes.
Backup: a instalação inteira
pepe backup # gera pepe-backup-YYYY-MM-DD.tgz
pepe backup --output /caminho/x.tgz
Esse é o arquivo do tipo “não posso perder esta máquina”. Ele empacota todos
os projetos, todos os workspaces de agente, o espaço compartilhado, as
sessões e os livros-razão de uso, e deixa de fora data/mnesia/ (um cache
descartável que se reconstrói sozinho). Restaurado numa máquina vazia, ele
recria a mesma máquina de antes.
Dá para rodar com o Pepe no ar: o banco de dados (compromissos, watches,
traces, boards, uso) nunca é copiado enquanto pode estar no meio de uma
escrita. Em vez disso, o backup tira um snapshot pela própria conexão ativa,
com consistência garantida como retrato de um único instante
(transacionalmente consistente), e verifica esse snapshot antes de colocá-lo
no arquivo. Se a verificação falhar, o comando aborta em vez de embarcar algo
quebrado. Para reverificar um arquivo que você já tem:
pepe backup verify pepe-backup-2026-07-14.tgz
Extração: um projeto, por conta própria
pepe extract acme # gera acme-extract-YYYY-MM-DD.tgz
pepe extract acme --output /caminho/acme.tgz
Um projeto que cresceu dentro de uma instalação compartilhada pode sair para
rodar no próprio servidor. Só copiar uma pasta não resolve, porque as entradas
desse projeto estão entrelaçadas no config.json compartilhado como
identificadores acme/agente. A extração reescreve esses identificadores para
os nomes simples de um projeto default recém-criado, então o que sai é uma
instalação nova, de projeto único, que por acaso é aquele projeto: basta
colocar num servidor novo e rodar.
Só aquele projeto faz a viagem: seus agentes, modelos, crons, watches, bots, tokens, workspaces e histórico de uso. Nada dos outros tenants vai junto. Se algum dos agentes dele depende de um modelo compartilhado (um que vive no projeto default, e não dentro do projeto extraído), esse modelo também é puxado para o arquivo, para o pacote funcionar sozinho numa máquina vazia; o comando informa quais modelos entraram por esse motivo.
Restauração: qualquer um dos dois arquivos
pepe restore acme-extract-2026-07-14.tgz
pepe restore pepe-backup-2026-07-14.tgz --force
Um backup e uma extração têm a mesma forma por baixo (um ~/.pepe dentro de
um tarball), então um único comando restaura os dois. Ele descompacta em
~/.pepe (ou PEPE_HOME). Como uma restauração substitui o que já está
lá, ela recusa sobrescrever um diretório não vazio a menos que você passe
--force.
O banco de dados de um backup passa pela mesma verificação de integridade na volta: a restauração recusa um banco que falhe nela, e recusa também sobrescrever um sobre o qual uma instância do Pepe ativa pareça estar escrevendo no momento. Nesse caso, pare essa instância primeiro e tente de novo.
Os segredos nunca vão no arquivo
Segredos são referências ${ENV_VAR}, resolvidas no momento da leitura, então
vivem no seu ambiente e nunca dentro dos arquivos (veja
Segredos). Isso significa que eles não entram nem
num backup nem numa extração, por design. Cada um desses comandos imprime as
variáveis que o arquivo referencia e se cada uma está definida no momento, para
que você consiga provisioná-las de novo no destino. Reexporte-as lá e a
configuração volta a se resolver sozinha; esqueça alguma, e o que quer que ela
liberasse simplesmente fica ausente.