Copia de seguridad y extracción

Archiva la instalación completa, o saca un proyecto para que funcione en su propio servidor, y restaura cualquiera de las dos con un solo comando.

Todo lo que Pepe sabe vive como archivos bajo ~/.pepe/ (o PEPE_HOME), así que moverlo es mover un directorio. Dos comandos crean un archivo comprimido de ello, y uno restaura cualquiera de los dos.

Copia de seguridad: la instalación completa

pepe backup                       # genera pepe-backup-YYYY-MM-DD.tgz
pepe backup --output /ruta/x.tgz

Este es el archivo del tipo «no pierdas esta máquina». Empaqueta todos los proyectos, todos los espacios de trabajo de los agentes, el espacio compartido, las sesiones y los libros de uso, y omite data/mnesia/ (una caché desechable que se reconstruye sola). Restaurado en una máquina vacía, es la misma máquina otra vez.

La base de datos (compromisos, watches, traces, boards, uso) nunca se copia mientras podría estar a mitad de una escritura. En su lugar, backup toma una instantánea con consistencia transaccional a través de la conexión activa y la verifica antes de incluirla en el archivo —segura de ejecutar con Pepe en marcha—, y el comando aborta en vez de enviar una instantánea que falló la verificación. Vuelve a comprobar un archivo que ya tengas con:

pepe backup verify pepe-backup-2026-07-14.tgz

Extracción: un proyecto, por su cuenta

pepe extract acme                 # genera acme-extract-YYYY-MM-DD.tgz
pepe extract acme --output /ruta/acme.tgz

Un proyecto que creció dentro de una instalación compartida puede irse para funcionar en su propio servidor. No se llega ahí copiando una carpeta, porque los registros de ese proyecto están entretejidos en el config.json compartido como handles acme/agente. La extracción reescribe esos handles a los nombres simples de un proyecto por defecto nuevo, así que el archivo es una instalación nueva de un solo cliente que resulta ser ese proyecto: colócalo en un servidor nuevo y ejecútalo.

Solo ese proyecto viaja: sus agentes, modelos, crons, watches, bots, tokens, espacios de trabajo e historial de uso. Nada de los demás clientes va con él. Si uno de sus agentes depende de un modelo compartido (uno que vive en el proyecto por defecto, no dentro de este), ese modelo también se incorpora al archivo, para que el paquete funcione en una máquina vacía; el comando te dice cuáles.

Restauración: cualquiera de los archivos

pepe restore acme-extract-2026-07-14.tgz
pepe restore pepe-backup-2026-07-14.tgz --force

Una copia de seguridad y una extracción tienen la misma forma —un ~/.pepe dentro de un tarball—, así que un solo comando restaura ambas. Se descomprime en ~/.pepe (o PEPE_HOME). Como una restauración reemplaza lo que hay, se niega a escribir sobre un directorio no vacío a menos que pases --force.

La base de datos de una copia de seguridad pasa por la misma verificación de integridad al restaurarse: la restauración rechaza una base de datos que la falle, y rechaza sobrescribir una sobre la que una instancia de Pepe activa parece estar escribiendo en este momento —detenla primero, y vuelve a intentarlo.

Los secretos nunca están en el archivo

Los secretos son referencias ${ENV_VAR}, resueltas al momento de la lectura, así que viven en tu entorno y nunca en los archivos (consulta Secretos). Eso significa que no están en una copia de seguridad ni en una extracción, por diseño. Cada uno de estos comandos imprime las variables que el archivo referencia y si cada una está definida en este momento, para que puedas aprovisionarlas en el destino. Vuelve a exportarlas allí y la configuración se resuelve; olvida una y aquello que desbloqueaba simplemente no estará.