Moteur de sauvegarde avec identifiants opt-in
“Sauvegardes avec gzip natif — et pas de mots de passe exportés par accident.”
Des dumps compacts et sûrs par défaut — personne n'exporte de hashes de mots de passe par accident.
Génère un .sql avec les options de drop-before, inclusion des données, inclusion des utilisateurs, inclusion des identifiants utilisateurs (opt-in, désactivé par défaut) et compression gzip native. CREATE USER / ALTER USER / GRANT sont neutralisés quand les identifiants sont exclus. Événements de progression avec ETA.
Sauvegardes planifiées avec rétention
“Des sauvegardes qui ne comptent pas sur votre mémoire.”
Votre Mac effectue la sauvegarde à l'heure, même s'il dormait, et ne remplit pas votre disque.
Planifications quotidiennes ou hebdomadaires. Utilise des bookmarks security-scoped vers la destination pour fonctionner dans le sandbox. Gère les planifications ratées entre redémarrages, les noms de fichiers suffixés en nanosecondes pour éviter les collisions, la purge par rétention, et les notifications de succès/erreur/ignoré.
Import CSV / JSON / XLSX
“D'un tableur à une table en trois clics.”
Importez des fichiers tabulaires du monde réel — pas seulement le CSV idéal.
CSV style RFC 4180 (guillemets échappés, champs avec virgules), JSON (tableau d'objets) et XLSX en streaming. Modes : INSERT, INSERT IGNORE, REPLACE.
Journal local persistant des requêtes
“La commande que vous avez exécutée mardi, en deux secondes.”
Cherchez parmi des milliers de requêtes passées par texte SQL ou date.
Store SQLite local dans Application Support avec tables pour requêtes exécutées et journal d'audit DDL, indexé par texte de requête (asc) et date (desc).
Synchronisation iCloud du journal (opt-in, occultée)
“Votre historique SQL, dans votre iCloud, sans vos identifiants.”
Cherchez dans l'historique de votre Mac depuis votre iPad — sans les identifiants.
Conteneur CloudKit iCloud.org.caliope.caliope, lots de 400 enregistrements, rétention configurable (par défaut 30 jours). Applique l'occultation des identifiants avant l'envoi. Vérifie l'état du compte iCloud avant de synchroniser.
Toggles de synchronisation par section
“Vous décidez ce qui part vers iCloud.”
Synchronisez uniquement ce qui vous intéresse — pas de tout ou rien.
Toggles indépendants pour la synchronisation iCloud du Keychain et du journal de requêtes, depuis les Préférences.
Dumps de plusieurs gigaoctets
“722 Mo dumpés avec 68 Mo de mémoire.”
Sauvegarder et restaurer ne dépendent plus de la RAM de la machine. Un dump de 722 Mo avec 4 millions de lignes culmine à 68 Mo ; le restaurer prend 19 secondes avec 14 Mo. Annuler arrête vraiment le dump au lieu de le laisser aller au bout.
Le moteur orchestre et le provider écrit le SQL : ajouter un moteur à la sauvegarde revient à implémenter BackupDataSource et rien d'autre — le harnais de test l'implémente en mémoire avec des dialectes SQLite et Postgres sans toucher au moteur. La restauration tire une instruction à la fois au lieu de les recevoir poussées, car un flux tamponné perd des instructions en silence et finit en annonçant un succès. La lecture utilise read(2) et non un fichier mappé : le même découpage a mesuré +201 Mo résidents avec FileHandle et 1,1 Mo ainsi.
Une sauvegarde de votre configuration
“Avant de toucher à iCloud, il y a une copie.”
Exportez et importez tout ce que Calíope conserve hors de l'appareil — profils, groupes, préférences — avec des copies programmées vers le conteneur iCloud et des points de restauration locaux pris automatiquement avant toute opération risquée : activer ou désactiver la synchronisation, effacer, importer.
Cela existe à cause d'un incident mesuré : activer la synchronisation sur un iPad a remplacé un connections.json de 16 470 octets avec 28 profils par un autre de 514 octets contenant un profil d'exemple. Les secrets sont en opt-in et toujours chiffrés (AES-GCM, PBKDF2-SHA256 avec 210 000 itérations, sel et coût écrits dans le fichier). Ce qui reste dehors est inscrit dans la copie avec sa raison — une copie qui tait ses absences est celle qui fait croire qu'on peut tout restaurer. La restauration fusionne ; une sauvegarde n'efface jamais.
Calíope sur votre iPhone
“Le client entier, sans le Mac devant vous.”
La même Calíope, disposée pour le téléphone — le client entier, pas une visionneuse. Elle se connecte à vos serveurs et exécute vos requêtes, avec l'éditeur SQL, l'explorateur de schéma, le tableau de bord, le diagramme ER et les rapports sur place ; et vos profils de connexion, vos extraits enregistrés, votre historique et vos conversations avec l'assistant vous attendent déjà, apportés par votre propre iCloud. Face ID pour déverrouiller, cinq langues, et un mode démonstration pour explorer avant de connecter quoi que ce soit. Elle s'installe depuis la même page de l'App Store que le Mac et l'iPad.
C'est le binaire iOS, et c'est le même code que celui de l'iPad : pas un outil en moins, et pas une seule vérification d'appareil dans tout l'arbre — ce qui change, c'est la disposition, pas la liste des fonctions. Les profils de connexion sont fusionnés dans le fichier iCloud partagé au lieu de le remplacer, pour que les champs qu'un écran étroit n'affiche pas — tunnel SSH, certificats, jeu de caractères — restent intacts. Sans iCloud, elle nomme l'interrupteur fermé au lieu d'afficher un écran vide en vous laissant supposer que tout va bien.
Calíope sur votre Apple Watch
“Ce qu'ont fait vos serveurs, sans sortir le téléphone.”
Calíope au poignet, qui arrive avec Calíope sur l'iPhone et que le même achat couvre, sans achat séparé. Elle affiche les messages système que Calíope publie : dix-huit types en huit groupes, avec les sauvegardes et rapports terminés ou en échec, les requêtes trop longues, les tunnels SSH tombés puis rétablis, la synchronisation iCloud en échec et les serveurs proches de vos seuils. Groupés par jour, avec des notifications optionnelles sur un réglage à part, et un mode démo qui montre aussi les écrans vides.
Les messages voyagent comme un identifiant accompagné de ses chiffres bruts, jamais comme une phrase déjà écrite : la montre est réglée dans une autre langue que le Mac plus souvent qu'à son tour, la phrase s'écrit donc au poignet. La cadence que vous choisissez est un minimum et non une promesse — app fermée, watchOS décide quand la réveiller — et l'app le dit en haut de son propre écran de réglages, pas en gris tout en bas. Le repère est le dernier message livré et non l'horloge murale, car les réveils sautent et demander « quelque chose dans les quinze dernières minutes ? » écarte le reste sans échouer. Elle ne fait que lire : elle n'ouvre aucune connexion vers un de vos serveurs.
Calíope sur votre Apple TV
“La santé du parc, lue de l'autre bout de la pièce.”
Un tableau mural pour vos serveurs MySQL, MariaDB et PostgreSQL : une tuile chacun, avec son état — Correct, Avertissement, Critique, Injoignable ou Aucune donnée — et, quand quelque chose ne va pas, quoi. Temps de fonctionnement, connexions, threads actifs, requêtes par seconde, taux de cache, requête la plus longue et retard du réplica. Deux onglets, parce qu'un téléviseur n'est pas un appareil dans lequel on navigue, et un parc de démonstration de huit serveurs pour regarder avant.
La fraîcheur est calculée par celui qui lit, à partir de la cadence que Calíope déclare : celui qui publiait ne sait pas qu'il a cessé de publier, un Mac éteint le vendredi laisserait donc le tableau au vert tout le week-end. L'état ne se distingue jamais par la seule couleur, et les seuils sont ceux de Calíope : le téléviseur peint, il ne juge pas. L'Apple TV n'a ni iCloud Drive ni Trousseau iCloud : « elle ne fait que lire » tient donc à la plateforme et non à une promesse.
Calíope sur Apple Vision Pro
“Le client complet, accroché dans la pièce.”
Un Vision Pro installe Calíope elle-même, en tant qu'app iPad : l'éditeur SQL, l'explorateur de schéma, le diagramme ER, les sauvegardes, les rapports, le constructeur de requêtes — tous les outils de l'iPad, sans en retirer un seul. Elle se connecte à vos serveurs et elle écrit. Vous placez la fenêtre, la redimensionnez et la laissez où vous voulez, et elle vient de la même page de l'App Store et du même achat que le Mac et l'iPad.
Nous avons aussi construit une app visionOS native — un tableau en lecture seule avec le parc et les groupes de réplication — et nous avons décidé de ne pas la publier. Un binaire visionOS natif est prioritaire sur l'app iPad sur cet appareil : le publier reviendrait à ce qu'un propriétaire de Vision Pro paie le même prix et reçoive un tableau de bord au lieu d'un client de bases de données. Cette cible déclarait CloudKit et rien d'autre, n'embarquait aucun pilote de base de données et n'avait aucun chemin d'écriture. Moins n'est pas une fonctionnalité. Le code reste dans le dépôt ; si une version native sort un jour, ce sera parce qu'elle fait tout ce que celle de l'iPad fait déjà.