Motor de respaldos con credenciales opt-in
“Respaldos con gzip nativo — y sin exportar contraseñas por accidente.”
Dumps compactos y seguros por defecto — nadie exporta hashes de contraseñas sin querer.
Genera .sql con opciones de drop-before, incluir datos, incluir usuarios, incluir credenciales de usuario (opt-in, por defecto off) y compresión gzip nativa. CREATE USER / ALTER USER / GRANT se neutralizan cuando se excluyen credenciales. Eventos de progreso con ETA.
Respaldos programados con retención
“Respaldos que no dependen de que te acuerdes.”
Tu Mac hace el respaldo a tiempo, incluso si estaba dormido, y no llena tu disco.
Programaciones diarias o semanales. Usa bookmarks security-scoped al destino para funcionar dentro del sandbox. Maneja programaciones perdidas entre reinicios de la app, nombres de archivo con sufijo en nanosegundos para evitar colisiones, purga por retención y notificaciones de éxito/error/omisión.
Importación CSV / JSON / XLSX
“De una hoja de cálculo a una tabla en tres clics.”
Importa archivos tabulares del mundo real — no sólo el CSV feliz.
CSV estilo RFC 4180 (comillas escapadas, campos con comas), JSON (array de objetos) y XLSX en streaming. Modos: INSERT, INSERT IGNORE, REPLACE.
Log local persistente de consultas
“El comando que ejecutaste el martes, en dos segundos.”
Busca entre miles de consultas pasadas por texto SQL o fecha.
Store SQLite local en Application Support con tablas para consultas ejecutadas y la auditoría DDL, indexado por texto de consulta (asc) y fecha (desc).
Sincronización del log de consultas con iCloud (opt-in, redactada)
“Tu historial SQL, en tu iCloud, sin tus credenciales.”
Busca en el historial de tu Mac desde tu iPad — con las credenciales quitadas.
Contenedor CloudKit iCloud.org.caliope.caliope, lotes de 400 registros, retención configurable (por defecto 30 días). Aplica la redacción de credenciales antes de subir. Verifica el estado de la cuenta iCloud antes de sincronizar.
Toggles de sincronización por sección
“Tú decides qué va a iCloud.”
Sincroniza sólo lo que te importa — no todo o nada.
Toggles independientes para la sincronización iCloud del Keychain y del log de consultas, desde Preferencias.
Volcados de muchos gigabytes
“722 MB volcados con 68 MB de memoria.”
Respaldar y restaurar ya no dependen de la RAM del equipo. Un volcado de 722 MB con 4 millones de filas hace pico en 68 MB; restaurarlo tarda 19 segundos usando 14 MB. Cancelar detiene el volcado de verdad, en vez de dejarlo correr hasta el final.
El motor orquesta y el provider escribe SQL: sumar un motor al respaldo es implementar BackupDataSource y nada más — el arnés de pruebas lo implementa en memoria con dialectos de SQLite y de Postgres sin tocar el motor. La restauración pide una sentencia cada vez en lugar de recibirlas empujadas, porque un flujo con buffer descarta sentencias en silencio y termina anunciando éxito. La lectura usa read(2) y no un archivo mapeado: el mismo troceo marcó +201 MB residentes con FileHandle y 1,1 MB así.
Un respaldo de tu configuración
“Antes de tocar iCloud hay una copia.”
Exporta e importa todo lo que Calíope guarda fuera del dispositivo — perfiles, grupos, preferencias — con copias programadas al contenedor de iCloud y puntos de restauración locales que se toman solos antes de cada operación peligrosa: activar o desactivar la sincronización, borrar, importar.
Existe por un incidente medido: activar la sincronización en un iPad reemplazó un connections.json de 16 470 bytes con 28 perfiles por otro de 514 bytes con un perfil de ejemplo. Los secretos son opt-in y siempre cifrados (AES-GCM, PBKDF2-SHA256 con 210 000 iteraciones, sal y coste escritos en el propio archivo). Lo que queda fuera se escribe en la copia con su motivo — una copia que calla sus ausencias es la que hace creer que se puede restaurar todo. Restaurar fusiona; un respaldo nunca borra.
Calíope en tu iPhone
“El cliente entero, sin el Mac delante.”
La misma Calíope, dispuesta para el teléfono — el cliente entero, no un visor. Conecta a tus servidores y ejecuta tus consultas, con el editor SQL, el explorador de esquema, el tablero, el diagrama ER y los reportes ahí mismo; y tus perfiles de conexión, tus fragmentos guardados, tu historial y tus conversaciones con el asistente ya están esperándote, traídos por tu propio iCloud. Face ID para desbloquear, cinco idiomas y un modo de demostración para mirar antes de conectar nada. Se instala desde la misma página de la App Store que el Mac y el iPad.
Es el binario de iOS, y es el mismo código que el del iPad: no se le quita ni una herramienta, y no hay una sola comprobación de aparato en todo el árbol — lo que cambia es la disposición, no la lista de funciones. Los perfiles de conexión se fusionan sobre el archivo compartido de iCloud en vez de reemplazarlo, para que los campos que una pantalla estrecha no llega a enseñar — túnel SSH, certificados, juego de caracteres — se conserven intactos. Sin iCloud dice qué interruptor está cerrado, en vez de mostrar una pantalla vacía y dejarte suponer que todo va bien.
Calíope en tu Apple Watch
“Lo que hicieron tus servidores, sin sacar el teléfono.”
Calíope en la muñeca, que llega con Calíope en el iPhone y la cubre la misma compra, sin comprar nada aparte. Enseña los mensajes del sistema que Calíope publica: dieciocho tipos en ocho grupos, con los respaldos y reportes que terminaron o fallaron, las consultas que tardaron, los túneles SSH que se cayeron y volvieron, la sincronización de iCloud que falló y los servidores que rozaron tus umbrales. Agrupados por días, con avisos opcionales en un interruptor propio, y un modo de demostración que también te enseña las pantallas vacías.
Los mensajes viajan como identificador más sus cifras crudas, nunca como una frase ya escrita: el reloj está en otro idioma que el Mac más veces de las que no, así que la frase se escribe en la muñeca. La cadencia que eliges es un mínimo y no una promesa —con la app cerrada, watchOS decide cuándo despertarla— y la app lo dice arriba en su propia pantalla de ajustes, no al pie en gris. La marca de agua es del último mensaje entregado y no del reloj de pared, porque los despertares se saltan y preguntar «¿algo de los últimos quince minutos?» descarta el resto sin fallar. Sólo lee: no abre ninguna conexión a ningún servidor tuyo.
Calíope en tu Apple TV
“La salud de la granja, desde el otro lado de la sala.”
Un panel de pared para tus servidores MySQL, MariaDB y PostgreSQL: una tarjeta por cada uno, con su estado —Correcto, Aviso, Crítico, Inalcanzable o Sin datos— y, cuando algo va mal, qué es lo que va mal. Tiempo encendido, conexiones, hilos en ejecución, consultas por segundo, tasa de acierto de caché, consulta más larga y retraso de la réplica. Dos pestañas, porque un televisor no es un aparato en el que se navegue, y una granja de demostración de ocho servidores para mirar antes.
La frescura la calcula quien lee, derivada de la cadencia que Calíope declara: quien publicó no sabe que dejó de publicar, así que un Mac apagado el viernes dejaría el panel en verde todo el fin de semana. El estado nunca se distingue sólo por color, y los umbrales son de Calíope: el televisor pinta, no juzga. El Apple TV no tiene iCloud Drive ni Llavero de iCloud, así que «sólo lee» lo sostiene la plataforma y no una promesa.
Calíope en el Apple Vision Pro
“El cliente entero, colgado en la habitación.”
Un Vision Pro instala Calíope misma, como app de iPad: el editor SQL, el navegador de esquema, el diagrama ER, los respaldos, los reportes, el constructor de consultas — todas las herramientas que tiene el iPad, sin quitar ninguna. Se conecta a tus servidores y escribe. Colocas la ventana, la redimensionas y la dejas donde quieras, y viene de la misma página de la App Store y de la misma compra que el Mac y el iPad.
Construimos también una app nativa de visionOS —un panel de sólo lectura con la granja y los grupos de replicación— y decidimos no publicarla. Un binario nativo de visionOS tiene prioridad sobre la app de iPad en ese aparato, así que publicarlo significaría que quien tiene un Vision Pro paga el mismo precio y recibe un panel en vez de un cliente de bases de datos: aquel target declaraba CloudKit y nada más, no enlazaba ningún driver de base de datos y no tenía ni un camino de escritura. Menos no es una funcionalidad. El código se queda en el repositorio; si algún día sale una versión nativa, será porque hace todo lo que ya hace la de iPad.