Ícono de la app Calíope

Características

Cada capacidad, verificada contra el código fuente.

Calíope se distribuye como una única aplicación con las capacidades listadas abajo, disponibles en macOS e iPad. Cada entrada corresponde a código que existe hoy — este es un catálogo, no una lista de deseos. Usa los atajos para saltar a una categoría o recorre la lista completa.

Conexión y seguridad

Túnel SSH nativo

“Tu túnel SSH, sin terminal ni .ssh/config.”

Alcanza servidores detrás de un bastión desde el sandbox de macOS — sin ssh local, sin ~/.ssh/config, sin peleas de permisos.

SwiftNIO + NIOSSH. Autenticación por contraseña o clave privada (ed25519, ECDSA P-256/P-384/P-521). Parser OpenSSH y descifrado de passphrase en memoria. Proxy local en 127.0.0.1 puenteado vía SSH direct-tcpip.

Verificación TOFU de host-key

“Te avisa si alguien interceptó tu túnel — antes de que escribas nada.”

Detecta un MITM contra tu bastión SSH sin dejar un known_hosts en disco.

Fingerprints guardados en Keychain. La primera conexión pide confirmación explícita; un fingerprint que cambió falla en seco — equivalente a StrictHostKeyChecking=yes.

TLS estricto por defecto

“SSL que de verdad protege — no un simple interruptor.”

Activar «SSL» significa SSL verificado. Los certificados autofirmados exigen una CA o un opt-out explícito con advertencia visible.

Política única: saltar la verificación es opt-in; una CA suministrada permite verificación sin hostname; en el resto, verificación completa.

Keychain con sincronización iCloud opt-in

“Tus contraseñas no van a iCloud a menos que las invites.”

Tú decides qué credenciales viajan entre tus dispositivos. Por defecto, ninguna.

El modo local-only fija credenciales con WhenUnlockedThisDeviceOnly; activar la sincronización las migra a AfterFirstUnlock para iCloud Keychain. El toggle es idempotente.

Autenticación biométrica opcional por perfil

“Tu huella desbloquea producción, no sólo tu Mac dormido.”

Añade una puerta Touch ID / Face ID antes de conectar a servidores de producción, configurable por perfil.

Construido sobre el framework LocalAuthentication. Activable por perfil de conexión.

Connection pool determinista

“Un connection pool que siempre cierra — incluso cuando algo falla.”

Conexiones que no filtran recursos ni bloquean la UI, ni siquiera al cambiar de sesión.

SwiftNIO EventLoopGroupConnectionPool, con tope de 5 conexiones por event loop en un event-loop group de un solo hilo. Cierre asíncrono con timeout de seguridad, y un cierre SSH limpio cuando falla el binding local.

Prepared statements nativos

“Bindings preparados, no interpolación de strings — desde la base del stack.”

Los valores que escribes nunca se concatenan al SQL — viajan por el protocolo de red, separados del statement.

Prepared statements nativos de MySQLNIO: sin bindings → ruta rápida simpleQuery; con bindings → conn.query(sql, [MySQLData]). Los statements se cierran automáticamente en done(), así el pool nunca filtra. Los identificadores siguen pasando por el helper de escape centralizado para los casos DCL/DDL residuales.

Editor SQL y productividad

Autocompletado sensible al contexto

“El editor sabe si estás en el FROM, el WHERE o la lista de columnas.”

Escribe menos y comete menos errores, porque la sugerencia entiende dónde estás dentro del statement.

Sugiere columnas de la tabla activa, nombres de base de datos, tokens del esquema (tablas, vistas, funciones), keywords DML/DDL/de control, tipos de datos y frases auxiliares SQL filtradas por motor.

Linter léxico en tiempo real

“Los paréntesis desbalanceados nunca llegan al servidor.”

Atrapa el error obvio antes de que MySQL lo rechace.

Detecta comentarios sin cerrar, strings sin cerrar, paréntesis desbalanceados e identificadores con backtick abierto. Escaneo O(n), sin parser completo.

Formateador con modo seguro

“Formatea tus consultas — nunca reescribe tu UPDATE.”

Formato bonito para SELECT, sin sorpresas en un UPDATE sin WHERE.

Conoce más de 150 keywords, tipos y funciones. El modo seguro bloquea el autoformat en statements destructivos (ALTER, CREATE, DELETE, DROP, GRANT, TRUNCATE, UPDATE, REPLACE, RENAME) para prevenir reescrituras accidentales.

Redacción de credenciales en logs y sincronización

“Sincroniza tu historial, no tus credenciales.”

Tu log de consultas no se convierte en un archivo de contraseñas en iCloud.

Neutraliza IDENTIFIED BY, IDENTIFIED WITH … AS, IDENTIFIED BY PASSWORD, SET PASSWORD FOR y PASSWORD(…). Redacción idempotente, aplicada antes de exportar el log de consultas a CloudKit.

Constructores visuales de consultas

“Componé consultas con clics; salen listas para producción.”

Un SELECT … WHERE … JOIN … correcto sin memorizar la sintaxis.

Constructores visuales dedicados para las cuatro formas más frecuentes: SELECT, WHERE, UPDATE y CREATE de tabla.

Renombrado de símbolo con límites de palabra

“Renombra id sin romper client_id.”

Refactoriza identificadores con seguridad, sin destrozar nombres similares.

Regex con límites de palabra \b y escape adecuado. Nunca matchea dentro de identificadores más largos.

Paleta Quick Open (⌘⇧O)

“⌘⇧O y estás en la tabla que buscabas.”

Alcanza cualquier objeto del esquema sin bajar por el árbol.

Búsqueda fuzzy incremental sobre tablas, vistas, rutinas y objetos, con navegación por flechas y Enter para abrir.

Gestor de snippets con seeding por motor

“Tus snippets se adaptan al motor, no al revés.”

Tus recetas SQL siempre a mano, filtradas al motor que estás usando.

Almacenamiento JSON local. Cada snippet declara para qué motores aplica (MySQL, MariaDB…). Conectarse a un motor nuevo agrega los defaults sin duplicados. Admite categorización.

Popovers de documentación DDL y de funciones

“La doc de GROUP_CONCAT se abre donde estás escribiendo.”

Documentación sin salir del editor ni abrir un navegador.

Muestra la firma de la función SQL o el DDL del objeto del esquema bajo el cursor.

Editor de celda avanzado y edición inline de fila

“Edita la celda, ve el SQL, y decide.”

Cambia datos rápido y previsualiza el SQL exacto que se ejecutará.

Edición tipo hoja de cálculo sobre resultados, con vista previa del UPDATE o DELETE generado antes de ejecutar.

SQL Player — historial de ejecución

“Reproduce tu sesión SQL como un video.”

Depura un batch de consultas statement por statement, sin reejecutar todo.

Reproducción tipo timeline de los statements ejecutados, atada al historial persistente de consultas.

Barras de ayuda del iPad sobre el teclado

“Teclado del iPad con superpoderes SQL.”

Sugerencias táctiles rápidas justo encima del teclado en pantalla.

Barras contextuales para el objeto o función bajo el cursor, con acceso rápido a «Ver DDL» y parámetros de función.

Barra de herramientas personalizable

“Tu barra, en tu orden.”

Cada persona tiene su ergonomía; los DBAs reordenan una vez y se olvidan.

Reordena u oculta grupos de botones desde una hoja de personalización dedicada. El layout se persiste.

Administración y catálogo

Árbol de esquema navegable

“Tu esquema, en un árbol que refleja cómo lo piensas.”

Una sola vista para todo el catálogo del servidor.

Bases de datos → tablas / vistas / rutinas / triggers / eventos, con carga perezosa y acciones contextuales: DDL, columnas, índices, importación de datos, WHERE builder.

Schema Diff con generación de ALTER

“Diferencia tu esquema, genera el ALTER, revisa antes de aplicar.”

Promueve un esquema de staging a producción sin recolectar diffs a mano.

Compara dos esquemas y genera el ALTER TABLE necesario para llevar uno al otro. La comparación de columnas corre en paralelo mediante structured concurrency. Fuente de verdad: INFORMATION_SCHEMA.

Auditoría DDL local

“Sabe qué DDL ejecutaste, cuándo, y contra qué servidor.”

Trazabilidad de los cambios de esquema, sin tocar el servidor.

Cada CREATE / ALTER / DROP / RENAME se registra localmente con timestamp y servidor de destino, en el store SQLite local de la app.

Migración de objetos entre servidores

“De staging a producción en tres clics — con previsualización.”

Clona objetos entre entornos sin mysqldump ni archivos .sql hechos a mano.

Conexión dual (origen + destino), selección granular de tablas, vistas, rutinas, triggers y eventos, con opciones de REPLACE, incluir datos u omitir claves foráneas. Vista previa del SQL antes de ejecutar.

Editores de objeto avanzados

“Un editor por tipo de objeto, no un .sql genérico para todo.”

Edita rutinas y eventos correctamente, en un editor pensado para el objeto.

Hojas dedicadas para rutinas almacenadas, triggers, eventos, vistas e índices. Cada una emite DDL bien formado.

Mantenimiento de tablas

“OPTIMIZE, ANALYZE y REPAIR, en un botón.”

Mantenimiento de tablas MyISAM/InnoDB sin memorizar los comandos.

Ejecuta OPTIMIZE TABLE, REPAIR TABLE y ANALYZE TABLE con feedback de progreso.

Administración de usuarios y privilegios

“GRANTs y REVOKEs — con casillas.”

Gestiona usuarios del servidor sin escribir cada GRANT a mano.

CREATE / ALTER / DROP USER, más GRANT y REVOKE desde una UI dedicada.

Asesor y editor de índices

“Los índices que te sobran y los que te faltan — con evidencia.”

Identifica índices redundantes o faltantes usando datos que el servidor ya expone.

Vista de asesor que analiza el uso de índices, junto a un editor dedicado al catálogo de índices.

Perfilador de columna

“Perfila la columna, no adivines los datos.”

Entiende la calidad de tus datos antes de escribir la consulta analítica.

Distribuciones por columna: histograma, percentiles y cardinalidad.

Diagrama ER interactivo

“El diagrama ER que ya no tienes que dibujar.”

Documenta relaciones sin dibujar cajas en Miro.

Generación automática desde el esquema activo, con visualización de claves foráneas.

Asistente de IA (BYOK)

Trae tu propia clave. La suscripción no incluye créditos de IA — usas tu propia API key. Esto se declara abiertamente en el paywall: «El asistente de IA requiere tu propia clave de OpenAI, Google Gemini o Anthropic Claude (no incluida en la suscripción).»

Proveedores OpenAI, Gemini y Claude

“IA que corre con tus tokens, no con tu factura de suscripción.”

Usa el modelo que ya pagas y no dependas de que Calíope suba los precios por token.

OpenAI (GPT-4, GPT-4o, o1, o3) con token Bearer. Google Gemini con API key; filtrado a modelos que exponen generateContent. Anthropic Claude (claude-*) con x-api-key y el system prompt en su propio campo (no dentro de messages). System prompt bilingüe con el contexto del esquema activo, guardando los últimos tres intercambios.

Redacción de la API key en errores y logs

“Tu clave nunca aparece en un stack trace.”

Si un mensaje de error se filtra a un screenshot o a un canal de Slack, tu API key no viaja con él.

Enmascarado por regex para sk-* (OpenAI), AIza* (Gemini), sk-ant-* (Anthropic Claude, incluidos sk-ant-api03-…) y Bearer … en cualquier mensaje de error del proveedor.

Backoff exponencial con Retry-After

“Si OpenAI dice espera, Calíope espera exactamente eso.”

Los picos de rate-limit no rompen tu sesión.

Ante 429 / 503, reintenta hasta tres veces (1 s / 2 s / 4 s), respetando el header Retry-After. Timeouts: 30 s para generación, 15 s para listar modelos.

Voz a SQL

“Habla la pregunta; ejecuta el SQL.”

Dicta una solicitud y el asistente la convierte en SQL — útil en iPad y en sesiones pair-DBA con las manos ocupadas.

Construido sobre Speech y AVFoundation de Apple. Detecta el idioma, con fallback a es-ES. Permisos separados para reconocimiento de voz y micrófono. Resultados parciales en vivo.

Asistente conversacional persistente

“Una conversación con tu base de datos, no un prompt aislado.”

Preguntas «ahora con un LEFT JOIN» y ya sabe a qué consulta te referías.

Mantiene el contexto del esquema activo más los últimos intercambios, por conversación.

Respaldos, importación y sincronización

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.

Monitoreo, diagnóstico y replicación

Motor de monitoreo con tu propio almacenamiento

“Métricas de tu MySQL, guardadas en tu MySQL.”

Monitoreo histórico sin instalar Prometheus.

Un colector dedicado escribe snapshots en un servidor de almacenamiento que tú eliges, provisionando tablas para muestras (CPU, memoria, conexiones, QPS) y eventos (rupturas de umbral, lag de replicación). Retención automática.

Visual EXPLAIN interactivo

“Tu plan de consulta como un diagrama que respira.”

Detecta el ALL que está matando tu consulta sin leer JSON a mano.

Toma EXPLAIN FORMAT=JSON y lo dibuja como un árbol. Codificado por color según el tipo de acceso: full scan, range / index merge, optimizado, sort, join. Tooltips con access_type, filas estimadas y tiempos. Zoom y pan con la rueda del mouse.

Perfilador de consulta

“Ve dónde estás perdiendo los milisegundos.”

Localiza qué fase de la consulta se está llevando el tiempo.

Construido sobre SHOW PROFILE. Tabla más gráfico de barras por fase (starting, Sending data, etc.) con tiempos en milisegundos.

Process List con KILL guiado

“Un KILL para la consulta que colgó tu producción.”

Termina una consulta descontrolada sin abrir una terminal.

SHOW FULL PROCESSLIST con columnas para id, user, host, database, command, time, state e info. Acciones para KILL QUERY y KILL CONNECTION.

Monitor de replicación (MySQL 8 y legacy)

“Réplicas de MySQL 8 y 5.7, en el mismo panel.”

Observa el lag de la réplica sin pelearte con el vocabulario legacy vs. 8.0.

SHOW REPLICA STATUS (MySQL 8) con fallback automático a SHOW SLAVE STATUS (MariaDB 10.5 / MySQL 5.7). Métricas: IO/SQL running, segundos por detrás del source, últimos errores con timestamp, GTID sets, posiciones de log. Auto-refresh configurable.

Visor de binlog con filtros y PURGE

“Tu binlog, filtrable y purgable — desde la app.”

Audita qué eventos produjeron tus statements sin bajar a mysqlbinlog.

SHOW BINLOG EVENTS con categorización en DDL / DML / Sistema, búsqueda por texto y un límite de filas configurable (por defecto 300). Soporta binlogs encriptados (MySQL 8.0.14+). PURGE BINARY LOGS TO con confirmación explícita.

Dashboard, Server Info y Health

“El pulso de tu MySQL, en una sola vista.”

Consolida la salud del servidor sin abrir cinco clientes.

Server Info multipestaña (variables globales y de sesión, status global y de sesión, uso de HDD), Server Dashboard con gráficos en vivo y un Server Health Monitor.

Benchmark en vivo

“Dos consultas en la balanza; una gana.”

Elige entre dos consultas con evidencia, no con intuición.

Compara tiempos de ejecución de variantes de consulta lado a lado.

Alertas y notificaciones locales

“Tu Mac te avisa cuando la réplica se atrasa.”

El sistema te avisa — no tienes que quedarte mirando la app.

Alertas por umbral en CPU, memoria, conexiones y lag de replicación. Notificaciones nativas de macOS/iOS.

Widgets nativos

Widget de escritorio macOS

“Estado del servidor, de un vistazo, en tu escritorio.”

Ve el pulso de tu servidor sin abrir Calíope.

Familias Small, Medium y Large. Los snapshots se leen desde un app group compartido con file coordination para lecturas concurrentes seguras. Se rechazan payloads mayores a un umbral seguro (protección DoS).

Widgets de Home Screen y Lock Screen del iPad

“Tu MySQL en la pantalla de bloqueo del iPad.”

Métricas del servidor en la pantalla de bloqueo de tu iPad — a segundos de distancia.

Siete familias en total: Small, Medium, Large, ExtraLarge, más las accesorias Rectangular, Circular e Inline (iOS 16.1+).

Deep-linking al perfil fijado

“Toca el widget → el dashboard del servidor correcto, en un solo movimiento.”

Un toque y estás en el dashboard del servidor correcto.

URL del widget caliope://server/<uuid> cuando hay un perfil vinculado; en caso contrario, cae a caliope://.

Selección basada en AppIntent

“Un widget por servidor — editable como un widget del tiempo.”

Fija un widget distinto a cada servidor — configurado en segundos.

Configurable desde la UI de edición de widget del sistema mediante un AppIntentConfiguration. No requiere código del usuario.

Refresco en segundo plano con presupuesto del sistema

“Se actualiza cuando importa; duerme cuando no.”

El widget no drena tu batería y aun así muestra datos frescos.

La política de timeline delega el control a WidgetKit, respetando el presupuesto de refresco del sistema. Cae al último snapshot cuando no hay datos frescos.

Integraciones del sistema

Siri y App Intents

“Un SELECT COUNT(*) desde Siri, sin abrir Calíope.”

Ejecuta una consulta o lista bases de datos desde Atajos, sin abrir la app.

Intents registrados: conectar a servidor, ejecutar consulta (devuelve TSV con cabeceras), listar bases de datos, abrir pestaña del workspace. Respaldado por un puente interno que expone los session y database managers a AppIntents.

Menús macOS y manejo de archivos .sql

“Sabe abrir desde Spotlight con un .sql — como cualquier app nativa.”

Se comporta como una app real de Mac — no como un port de Windows o Electron.

Barra de menú completa: Acerca de, Abrir archivo SQL, Archivos recientes, Quick Open, navegación por pestañas, Ayuda, Novedades, Política de privacidad, Soporte. Maneja aperturas de archivos .sql vía NotificationCenter.

Ítem en la barra de menú

“Un ícono en la barra de menú: sabes si estás conectado sin cambiar de ventana.”

Contexto de conexión de un vistazo, sin traer la app al frente.

Ícono en la barra de menú que refleja el estado de conexión y el perfil activo.

Onboarding con TipKit

“Descubre lo que necesitas, cuando lo necesitas.”

Aprende sobre las funciones en el momento en que son relevantes.

Tips contextuales para Quick Open, WHERE Builder, importación de datos, auditoría DDL, visor de binlog, monitor de replicación, migración de objetos, Visual EXPLAIN, perfilador de consultas y árbol de esquema.

Handoff, gestos del iPad y trackpad

“iPad + Magic Keyboard = un Mac de DBA portátil.”

En iPad con Magic Keyboard, trabajas igual que en el Mac.

Manejo nativo del puntero y del teclado en iPad. Gestos: swipe entre pestañas, pinch-zoom en el editor. Split View.

Modo screenshot

“Capturas listas para docs — no capturas amateur.”

Toma capturas listas para documentación con un aspecto consistente.

Cmd+Opt+P en macOS produce PNGs con estilo listo para documentación y marketing.

«Novedades» dentro de la app

“Cosas nuevas, dentro de la app — no en un changelog.”

Aprende qué hay de nuevo sin leer las notas de versión de la App Store.

Highlights por versión, con estado local de «ya visto».

UI trilingüe (español, inglés, francés)

“Calíope habla tu idioma — español, inglés o francés.”

Una app diseñada primero en español, así no se siente traducción automática.

Bundles completos de recursos en, es y fr, con un manager de idioma en tiempo de ejecución y helper de localización. Fallback a inglés.

Privacidad, sandbox y cumplimiento

Sandbox de App Store activo

“Sandbox activo — hace lo que declara, y nada más.”

Calíope no puede acceder a nada fuera de los entitlements declarados. El sistema lo garantiza.

App sandbox habilitado con un set estrecho de entitlements: cliente y servidor de red (para el proxy SSH), entrada de audio (voz a SQL), archivos seleccionados por el usuario (documentos), app groups (para los widgets) e iCloud (CloudKit y Cloud Documents).

Servicio de borrado de datos

“Un botón, y no queda nada atrás.”

Un botón para dejar la máquina limpia antes de devolverla o venderla.

Borrado seguro bajo demanda de sesiones, credenciales y el log de consultas.

BYOK con disclosure formal

“Suscripción honesta — la IA va con tu clave, y lo decimos.”

Sabes exactamente qué paga la suscripción y qué no.

El paywall muestra una nota BYOK y un aviso de renovación automática, cumpliendo con la §3.1.2c de la App Store.

Suscripción con StoreKit 2 y prueba de 7 días

“Una semana gratis, sin trucos.”

Prueba Calíope una semana sin costo y cancela desde tu Apple ID.

Producto anual con una semana gratuita. Verificación vía AppTransaction.shared y Transaction.latest(for:) de StoreKit 2. Restauración vía AppStore.sync(). El precio siempre se presenta desde product.displayPrice.

¿Listo para probar Calíope?

Cada capacidad de esta página está incluida en la suscripción anual. Una semana de prueba gratis, cancelable en cualquier momento desde tu Apple ID.

Probar gratis una semana →