Documentación

Protección automática y versionado de tus archivos, sin depender de la nube.

Qué es unmessai

unmessai protege automáticamente tus archivos. Si tú (o un agente de IA) modifica o borra algo por error, puedes volver atrás en segundos. Todo ocurre en tu equipo, sin depender de la nube.

¿Por qué usar unmessai?

  • Un agente de IA borra o reescribe media carpeta de golpe.
  • Un script lanza un rm equivocado.
  • Sobrescribes sin darte cuenta un archivo importante.
  • Modificas un fichero y, horas después, descubres que la versión anterior era mejor.

Con unmessai lo restauras en segundos, sin depender de Git ni de copias de seguridad externas.

Cuando Cursor, Claude Code, Codex o cualquier otro agente de IA modifica cientos de archivos automáticamente, unmessai guarda una versión local de cada cambio. Si algo sale mal, restauras el fichero tal y como estaba.
Detalles técnicos

Se distribuye en tres piezas: el CLI unmess, el daemon unmessd (vigila y versiona) y la app nativa unmess-app (bandeja del sistema y ventana propia, incluida en el paquete de Linux).

Cómo funciona

  • Detecta los cambios en tus archivos automáticamente, sin que tengas que hacer nada.
  • Guarda una versión nueva cuando el archivo deja de cambiar.
  • Conserva el historial de cada fichero para que puedas volver atrás cuando lo necesites.
  • Elimina versiones antiguas según la retención que configures, para no crecer sin límite.

Qué no se versiona

  • El propio store de versiones.
  • Carpetas habituales de sistema y dependencias: Descargas, Vídeos, Música, node_modules, .git, __pycache__, etc.
  • Lo que coincida con tu .gitignore, si tienes activado gitignore_aware. El resto de cambios en tus proyectos, aunque estén en un repositorio git, sí se versiona.
  • Cualquier ruta o nombre que excluyas tú en la configuración.
Detalles técnicos
  1. Vigila tu carpeta personal con la API nativa del sistema de archivos.
  2. Agrupa los cambios (debounce) para no versionar cada pulsación.
  3. Guarda cada versión en tu store local (~/UnmessaiBackups), con un journal de actividad.
  4. Poda por retención (nº de versiones, antigüedad). Puedes ajustarla en Configuración.

Instalación

Descarga el paquete para tu sistema desde la página principal o desde la terminal. Los comandos usan la última versión publicada, 0.4.5.

Linux (Debian / Ubuntu)

El .deb instala el CLI, el daemon y la app nativa (icono en la bandeja y ventana propia), y configura el autoarranque.

curl -LO https://github.com/luisobz/unmess-ai/releases/download/v0.4.5/unmessai_0.4.5_amd64.deb
sudo apt install ./unmessai_0.4.5_amd64.deb
La app aparece en el lanzador como unmessai y se inicia con la sesión, mostrando su icono en la barra superior. También puedes abrirla con unmess ui.

macOS

Descarga el .tar.gz de tu chip (Apple Silicon o Intel), extráelo e instala los binarios:

curl -LO https://github.com/luisobz/unmess-ai/releases/download/v0.4.5/unmessai-v0.4.5-darwin-arm64.tar.gz   # Intel: unmessai-v0.4.5-darwin-amd64.tar.gz
tar -xzf unmessai-v0.4.5-darwin-arm64.tar.gz
sudo install unmess unmessd /usr/local/bin/
Para vigilar carpetas arbitrarias, macOS pide conceder Acceso Total al Disco a unmessd en Ajustes del Sistema → Privacidad y Seguridad. Arranca el daemon con unmess service install y abre la interfaz con unmess ui --browser.

Windows

Descarga y ejecuta el instalador unmessai-setup-v0.4.5.exe. Durante la instalación eliges qué carpeta vigilar y dónde guardar las versiones, y deja la app en la bandeja del sistema (con autoarranque al iniciar sesión).

Nota: la primera vez, unmessai crea su configuración por defecto y empieza a proteger tu carpeta personal (excluyendo Descargas, Vídeos, Música, node_modules, etc.).
Instalación avanzada

Linux (otras distros · binarios)

Descarga el .tar.gz, extráelo y copia los binarios al PATH. La app con ventana solo se compila para el .deb; con el tarball usas el CLI y la interfaz web local.

curl -LO https://github.com/luisobz/unmess-ai/releases/download/v0.4.5/unmessai-v0.4.5-linux-amd64.tar.gz
tar -xzf unmessai-v0.4.5-linux-amd64.tar.gz
sudo install unmess unmessd /usr/local/bin/

Windows portable (sin instalador)

Descarga el .zip, descomprímelo (Windows 10/11 traen curl y tar) y ejecuta desde la carpeta windows-amd64\:

curl -LO https://github.com/luisobz/unmess-ai/releases/download/v0.4.5/unmessai-v0.4.5-windows-amd64.zip
tar -xf unmessai-v0.4.5-windows-amd64.zip
windows-amd64\unmess.exe service install
windows-amd64\unmess.exe ui --browser

Restaurar una versión

Restaurar nunca es destructivo: antes de sobrescribir, unmessai guarda una copia de seguridad del estado actual como una versión nueva.

Casos de uso habituales

  • Un agente de IA borró o reescribió una carpeta entera → restauras cada fichero a como estaba.
  • Un script sobrescribió un archivo de configuración → recuperas la versión anterior en segundos.
  • Cambiaste un documento y prefieres la versión de ayer → la comparas (diff) y restauras si hace falta.

Desde la app

Elige el fichero, selecciona la versión, compárala (diff) si quieres y pulsa Restaurar versión.

Desde el CLI

unmess versions ruta/al/fichero.txt      # lista versiones
unmess diff ruta/al/fichero.txt          # cambios frente a la anterior
unmess restore ruta/al/fichero.txt       # restaura la última versión
unmess restore ruta/al/fichero.txt --version v2026-07-12-11-44.txt

CLI de referencia

Todos los comandos aceptan la opción global --config <ruta> para usar un config.toml alternativo, y unmess --help imprime el resumen de uso.

ComandoQué hace
unmess statusEstado del daemon y del store (ficheros, versiones, tamaño, debounce).
unmess ls [texto]Lista los ficheros versionados. Flags: --modified, --deleted (excluyentes); texto filtra por subcadena de la ruta.
unmess versions <ruta>Versiones de un fichero, con fecha y tamaño.
unmess diff <ruta>Diferencias entre versiones. Flags: --from <v>, --to <v|current>. Por defecto compara la última con la anterior; --to current compara con el fichero en disco.
unmess restore <ruta>Restaura una versión (guardando copia de seguridad). Flags: --version <v>, --yes/-y (sin confirmación).
unmess pruneAplica la retención. Flag: --dry-run (simula sin borrar).
unmess configMuestra o edita la config: config, config path, config get <clave>, config set <clave> <valor>.
unmess ui [ruta]Abre la app nativa (o el fichero indicado). Flag: --browser fuerza la interfaz web.
unmess service <acción>Gestiona el daemon como servicio: install, uninstall, start, stop, status.

Ejemplos

# Estado y espacio ocupado por el store
unmess status

# Solo ficheros borrados que aún puedes recuperar
unmess ls --deleted

# Historial de un fichero y comparación con el estado actual en disco
unmess versions notas.md
unmess diff notas.md --to current

# Restaurar una versión concreta sin confirmación
unmess restore notas.md --version v2026-07-12-11-44.txt --yes

# Simular la poda por retención antes de aplicarla
unmess prune --dry-run

# Usar una configuración alternativa
unmess --config /ruta/config.toml status

Actualizaciones

Para actualizar, descarga la nueva versión desde la página de descargas o desde GitHub releases y reemplaza los binarios. Tu store (~/UnmessaiBackups) y tu config.toml se conservan intactos.

unmess service stop
# descarga y reemplaza los binarios (.tar.gz / .deb / .zip según tu plataforma)
unmess service start
unmess status                 # confirma que el daemon está activo
Compatibilidad: las versiones nuevas leen los stores y configuraciones existentes. Actualizar nunca pierde historial.

Servidores y headless

En un servidor sin escritorio no necesitas la app nativa: bastan el CLI (unmess) y el daemon (unmessd). El daemon vigila y versiona; el CLI consulta y restaura.

1. Instalar los binarios

curl -LO https://github.com/luisobz/unmess-ai/releases/download/v0.4.5/unmessai-v0.4.5-linux-amd64.tar.gz
tar -xzf unmessai-v0.4.5-linux-amd64.tar.gz
sudo install unmess unmessd /usr/local/bin/

2. Arrancar el daemon como servicio

unmess service install registra unmessd como servicio de usuario de systemd (~/.config/systemd/user/unmessai.service) y lo arranca:

unmess service install     # instala y arranca
unmess service status      # activo / inactivo
unmess service stop        # detener
unmess service uninstall   # quitar
Sesiones headless: para que el servicio de usuario siga corriendo sin sesión iniciada, habilita el lingering con sudo loginctl enable-linger $USER.

3. Configurar qué se vigila

Ajusta las carpetas y la retención por CLI, sin abrir un editor (las listas van separadas por comas):

unmess config set included_paths "/srv/datos,/etc"
unmess config set debounce_seconds 10
unmess config set retention.max_versions 50
unmess config                              # ver la config efectiva

4. Consultar y restaurar

Usa los comandos habituales desde el propio servidor (unmess status, unmess ls, unmess versions, unmess restore). Si necesitas la interfaz web, unmess ui --browser imprime la URL local; en un servidor remoto ábrela por un túnel SSH (ssh -L 48111:127.0.0.1:48111 servidor). Nunca la expongas directamente a la red.

Configuración

La configuración vive en config.toml (en ~/.config/unmessai/ en Linux, %APPDATA%\unmessai\ en Windows). Puedes editarla desde Ajustes en la app o con unmess config set. Ajustes principales:

ClaveDescripción
debounce_secondsTiempo de agrupación antes de guardar una versión.
included_paths / excluded_pathsQué carpetas vigilar o excluir.
exclude_namesNombres a ignorar (.git, node_modules…).
gitignore_awareRespeta los .gitignore al decidir qué versionar.
max_file_size_mbTamaño máximo por fichero para versionar.
retentionMáximo de versiones/días y mínimo a conservar.
ui.portPuerto de la interfaz local en 127.0.0.1.

Ejemplo de configuración

# ~/.config/unmessai/config.toml
debounce_seconds = 5
included_paths = ["/home/usuario/proyectos"]
excluded_paths = ["/home/usuario/descargas"]
exclude_names = [".git", "node_modules", "__pycache__"]
max_file_size_mb = 50

[retention]
max_versions = 20
max_days = 90
min_versions = 3

Consultar y modificar desde el CLI

unmess config                        # ver toda la configuración
unmess config get debounce_seconds   # leer una clave
unmess config set debounce_seconds 10
unmess config set included_paths "/home/usuario/proyectos,/home/usuario/docs"
unmess config set retention.max_versions 30