Inventory

Everything Calíope does, function by function.

I keep this list from the code itself: every tool and every area of the app, with what each function does, on which engines it works when it is not all of them, and on which screens it is missing. It is the denominator of the table in Tools: the number under each engine counts these functions. A tool whose inventory I have not written yet does not appear here.

867 functions in 51 tools and areas.

Tools

Areas of the app

SQL Editor

66 functions

  • Run a SQL query

    Runs the statement under the cursor, or the selection, against the connected server and shows its result, with rows, time and the error position when it fails.

  • Run complete script

    Runs every statement in the editor in order, after asking for confirmation, and reports how many ran and how long they took.

  • Statement delimiter

    Lets me choose the character that separates statements before a script runs, for scripts whose bodies contain semicolons.

  • Stop a running query

    Cuts the statement that is running without closing the session, and says so if the server could not stop it.

  • Progress of the running query

    While a statement runs, draws how many rows and bytes the server has read so far.

    Only on ClickHouseHelp: Progress of the running query
  • Clear editor and results

    Empties the editor and the results grid in one step, without touching the history.

  • Format SQL (Beautify)

    Re-indents the SQL in the editor with the dialect of the session.

  • Toggle SQL comment (⌘D)

    Comments or uncomments the selected lines with the -- prefix.

  • Column editing / multi-cursor

    Writes at several positions at once, with cursors added above or below the current one.

  • Expand SELECT * into explicit columns

    Replaces the * of a SELECT with the real column names of its table.

  • Autocomplete in the SQL editor

    Offers keywords, functions, databases, tables and columns of the session while I type, with the vocabulary of its dialect.

  • Contextual help for SQL functions

    Shows the card of the engine's function under the cursor, with its signature and an example that runs on that engine.

  • DDL hover tooltip

    Shows the DDL of a table, view, routine or trigger when the pointer rests on its name.

    Not on iPad iPhone Apple Vision ProHelp: DDL hover tooltip
  • Go to Definition

    Opens the catalog at the definition of the object whose name is under the cursor.

  • Rename symbol in script

    Renames an alias, CTE or variable and every reference to it in the script.

  • Find and replace in the editor

    Finds and replaces text in the editor with the system's find bar.

  • Fold and unfold blocks in the editor

    Collapses and expands parenthesis and BEGIN…END blocks from the gutter.

  • Bracket pair highlighting

    Lights up the bracket or keyword that pairs with the one at the cursor, and marks in red the one without a pair.

  • Highlight every match of a word

    Highlights every occurrence of the word I double-click.

  • Linting — error diagnosis before executing

    Underlines unclosed strings, comments and parentheses while I type, without sending anything to the server.

  • Editor minimap

    Draws a thumbnail of the whole script beside the editor, with the visible part marked.

  • Automatic line wrap (word wrap)

    Chooses whether long lines wrap or scroll sideways.

  • Fix curly quotes

    Warns when the text carries curly quotes where SQL expects straight ones, and replaces them with one tap.

  • Insert Identifier Quotes

    Wraps the word or selection in the identifier quotes of the session's dialect.

    Not on MacHelp: Insert identifier quotes
  • Open SQL files by dragging

    Opens a .sql or .txt file dropped on the workspace, or chosen from the menu, in a new editor tab.

  • Editor text kept per tab

    Keeps the text of each editor tab and puts it back when the session reopens.

  • Font size

    Makes the editor text and the results grid larger or smaller, each on its own.

  • Safe mode

    Blocks statements that change data, structure or privileges until I turn it off; it is on by default.

    Help: Safe mode
  • Transactions

    Opens a transaction with BEGIN on a connection reserved for the tab, and closes it with COMMIT or ROLLBACK after confirmation.

    Only on MySQL · MariaDB PostgreSQL SQL Server OracleHelp: Transactions
  • Query history

    Lists the queries I ran, to search them and bring one back into the editor.

  • Navigate history from the editor (REPL style)

    Brings back the previous or next query from history with the arrow keys, as in a terminal.

  • Insert snippet in the editor

    Inserts a saved code snippet at the cursor, chosen from a searchable list.

  • Quick Open — Quick object access

    Jumps to any table, view or routine of the active schema by typing part of its name.

  • SQL statement manager

    Splits the script into its statements, each with its type and colour, to copy, load into the editor or delete them one by one.

  • Statement Player (SQL Player)

    Runs the script one statement at a time with play, pause and step controls.

  • Query Benchmark

    Runs the query N times and reports the minimum, average and maximum time.

  • Integrated SQL terminal (REPL mode)

    Opens a terminal-style panel with a prompt and its own history to run SQL interactively.

  • Visual EXPLAIN

    Asks the server for the execution plan of the selected query and draws it as a tree of operations.

  • Index Advisor

    Reads the plan of the selected query, detects full scans that filter by a column, and proposes the CREATE INDEX to copy or insert.

  • Execution Profile (SHOW PROFILE)

    Breaks the last query down into the server's internal phases, with the time spent in each.

    Only on MySQL · MariaDB ClickHouseHelp: Execution Profile (SHOW PROFILE)
  • Result Chart

    Draws the result as a bar, line or pie chart, choosing the label and value columns.

  • Column Profiler

    Computes the statistics of a result column: minimum, maximum, average, NULLs, distinct values and the most frequent ones.

  • The results grid

    Shows the result in pages of the size I choose, sortable by column, with a row cap that keeps huge results out of memory and a button to fetch them all.

  • Output formats

    Switches how the result is shown: grid, or text as JSON, CSV, plain text, HTML, XML or Markdown.

  • Concatenate results

    Accumulates the rows of successive runs instead of replacing them.

  • Pin results to compare

    Pins the current result so I can keep consulting it while I run other queries.

  • Auto-repeat (polling)

    Runs the query again every N seconds and refreshes the result.

  • Export results to file

    Saves the result as an Excel file, or shares it in the output format I chose.

  • Export table as INSERT

    Writes INSERT statements for the current result, a whole table, or a single row copied to the clipboard.

  • Print the result

    Prints the result grid, up to its first 500 rows.

    Not on iPad iPhone Apple Vision ProHelp: Print the result
  • View full cell value

    Shows the whole content of a cell, formatted by its type: JSON, image, SQL or text.

  • Advanced cell edit

    Edits a long, JSON, binary or spatial value in a sheet with text, tree, hex, Base64 and image tabs.

  • Generate UPDATE from cell

    Edits a cell in the grid and shows the UPDATE it will run, keyed by the table's primary key, before applying it.

  • Delete row from results

    Deletes the selected row with a DELETE I can review and edit before it runs.

  • Undo a data edit

    Undoes the last cell edit or row deletion made from the grid, and redoes it, when the row can be identified by its key.

  • View and edit spatial data on a map

    Draws the result's spatial column on a map, and moves, adds or clears a geometry by proposing the UPDATE before applying it.

  • Customize toolbars

    Reorders the button groups of the editor, results and main toolbars, and resets them.

  • The editor's schema panel

    Docks the schema tree beside the editor and shows or hides it; a click on a table writes its name or a SELECT in the editor.

  • Schema tree

    Browses the server's databases and objects with the same tree in every tool: filter by name, on-demand loading, preview and context menus on databases and tables.

  • DDL change history

    Lists the structure changes (CREATE, ALTER, DROP) run from Calíope, with when and where.

  • WHERE Builder

    Builds a WHERE clause for a table from its columns, operators and values, without writing it by hand.

  • Import Data from CSV, JSON, or Excel

    Imports a CSV, JSON or Excel file into a table in three steps, mapping columns and choosing the insertion mode.

  • Performance monitor (CPU and memory)

    Shows the app's CPU and memory at the foot of the sidebar, with clean-up suggestions when they run high.

  • Long query notification

    Sends a system notification when a query takes longer than the threshold set in Settings.

  • Large result set notification

    Warns when a query returns more rows than the threshold set in Settings.

Dashboard

26 functions

  • Queries or transactions per second

    Line card with the rate of statements the server runs, or of transactions where the engine counts those instead, each under its own name.

  • Slow queries per second

    Line card with the rate of queries that went over the server's slow-query threshold.

    Only on MySQL · MariaDBHelp: Server performance charts
  • Bytes sent per second

    Line card with the network traffic the server sends to its clients.

    Only on MySQL · MariaDB ClickHouse OracleHelp: Traffic and query charts
  • Bytes received per second

    Line card with the network traffic the server receives from its clients.

    Only on MySQL · MariaDB ClickHouse OracleHelp: Traffic and query charts
  • Aborted connections per second

    Line card with the rate of connections refused or cut off abnormally.

    Only on MySQL · MariaDBHelp: Server performance charts
  • Data cache hit rate

    Line card with the share of reads served from the server's cache without touching disk, recalculated every 10 seconds.

    Only on MySQL · MariaDB PostgreSQL SQL Server OracleHelp: Server performance charts
  • Lock waits per second

    Line card with how many times per second a query had to wait for a lock, recalculated every 10 seconds.

    Only on MySQL · MariaDB SQL ServerHelp: Server performance charts
  • Memory

    Pie card with the data cache split into clean, dirty and free, or with the memory in use and free where the server publishes its total.

    Only on MySQL · MariaDB SQL Server ClickHouse OracleHelp: Distribution charts
  • Threads

    Pie card with the connections that are running, the sleeping ones and, where the server keeps them, the cached threads.

  • Connections by user

    Pie card with the eight users holding the most connections, read from the process list every 100 seconds; it says why when the list cannot be read.

  • Database sizes

    Pie card with the eight largest databases, without the system ones, refreshed every 100 seconds.

  • Header figures

    Connections, active ones, uptime and cache hit rate at a glance in the header; a figure the server does not publish is not drawn.

  • Fullest storage

    Header figure with the fullest tablespace as a percentage of its maximum size, autoextend included.

    Only on OracleHelp: Opening the Dashboard
  • Refresh rate

    Chooses how often the server status is sampled, from 1 to 30 seconds, and says when the last sample arrived; rates are divided by the real time between samples.

  • Pause and resume updates

    Stops sampling the server without losing the drawn series, and starts it again.

  • Unreadable sample reason

    When the server refuses its status (a user without permission on its views), the header and every card show the server's reason instead of waiting.

  • Pin the server to the widget

    The pin in the header makes this server the one the background refresh keeps alive in the widget.

  • Alerts banner

    A banner above the cards when the cache hit rate drops below 90 %, when connections are aborted or when lock waits pass half a wait per second.

    Only on MySQL · MariaDB PostgreSQL SQL Server OracleHelp: Automatic Dashboard alerts
  • Server alerts as notifications

    The bell opens Server alerts, where system notifications are turned on and thresholds are set for connections against the maximum, cache hit rate and replication lag.

  • Two or three columns

    Switches the grid between two wider columns and three more compact ones; at accessibility sizes it stacks.

  • Reorder cards

    In customize mode, cards move by dragging one onto another or with the two arrows on each card; the order syncs through iCloud when sync is on.

  • Hide and show cards

    In customize mode, each card can be hidden and comes back from the Hidden cards panel; cards the engine does not publish are not offered.

  • Restore the layout

    Puts back the default order with every card visible, after asking for confirmation.

  • Zoom into a card

    A double click or double tap opens a card large inside the Dashboard; All charts, or Esc on the Mac, goes back.

  • TV mode

    Leaves only the charts on the whole screen, with columns that fit the width and the screen kept awake, for watching from a distance.

    Help: TV mode
  • Full screen

    Puts the Mac window in full screen; elsewhere it covers the whole screen with the Dashboard's figures and cards.

AI Assistant

19 functions

  • Ask in plain language

    I describe what I need in plain language and the assistant answers with an explanation and a block of SQL in the dialect of the session's engine, or of Redis commands in a Redis session.

  • Choose the AI provider

    The settings panel chooses among OpenAI, Google Gemini, Anthropic Claude, Apple Intelligence and Ollama, and draws only what the chosen one needs: the key for the cloud ones, kept in the Keychain.

  • Choose the model

    Lists the models the chosen provider publishes, with a reload button, or takes a model name typed by hand while the list is empty.

  • Apple Intelligence on the device

    The system's language model answers on the device itself, with no key and without the question leaving it, and is offered only where the system says it is available.

  • Ollama at an address of my own

    Talks to an Ollama server at the address I write —this Mac or one on my network—, with no key, and says so when nothing answers there or the address is not valid.

  • Demo mode without a key

    While a provider that needs a key has none, the assistant answers with sample responses and says how to set it up.

  • Send the schema as context

    With the switch on and a database chosen in the header, the names of its tables, columns and foreign keys travel with the question —never rows—, and the panel says which of three states applies.

    Only on MySQL · MariaDB PostgreSQL SQL Server ClickHouse OracleHelp: Schema context: what gets sent
  • Send a sample of keys as context

    In a Redis session the model receives, instead of a schema, the prefixes of the active database with their count, type and an example key, cut at a ceiling the panel states.

    Only on RedisHelp: Open the AI Assistant
  • Open the SQL in the editor

    Takes the generated SQL to the SQL Editor without running it: on the Mac in a new tab, elsewhere into the editor brought to the front.

    Only on MySQL · MariaDB PostgreSQL SQL Server ClickHouse OracleHelp: Load generated SQL into the editor
  • Open a command in the console

    Each suggested Redis command has its own button that leaves it written in the console without running it, and what the console refuses is not taken there and the row says why.

    Only on RedisHelp: Open the AI Assistant
  • Copy the answer or its code

    Copies a whole answer with its code, only the code block, or a selected fragment, and confirms with a check mark for two seconds.

  • AI-generated notice and provider

    Every code block carries at its foot that it was generated by AI and must be checked before running, and the name of the provider it was sent to.

  • Dictate by voice

    The microphone transcribes the question on the device itself, in a language I can choose beside it, and says when that language's model has to be downloaded first.

  • Conversation history

    A side panel keeps each conversation from its first question, searchable over every turn, to resume, copy or delete one by one or all at once, up to the 200 most recent.

  • New conversation

    Starts the chat from scratch while the current conversation stays in the history.

  • Sync the history with iCloud

    Optional: uploads the conversations to my private iCloud with credentials redacted, asks what to do with the existing ones when turning it on and off, and shows its state and errors.

  • Export the conversation

    Saves the active conversation as a plain-text file with its date, context and generated code.

  • Maximum length of the answer

    A setting chooses how many tokens the model may write in each answer: compact, standard or extended.

  • Model response timeouts

    Two settings say how long to wait for the model list and for an answer before giving up.

Catalogs

24 functions

  • Database picker

    Chooses the database (the schema, in Oracle) whose objects every tab lists.

  • Tables

    Lists the tables of the database with their rows and size, and the engine, collation and comment where the server declares them; choosing one shows its DDL below.

  • Views

    Lists the views of the database with whether they are updatable, their definer and, where the engine declares it, their SQL SECURITY.

  • Materialized views

    Lists the materialized views apart, with the table each one writes to and its refresh schedule, and a card with what it reads, its size, its last write and its refreshes.

    Only on ClickHouseHelp: Browse Catalogs
  • Indexes

    Lists the indexes of the database or of the chosen table with their columns, cardinality and uniqueness.

    Only on MySQL · MariaDB PostgreSQL SQL Server OracleHelp: Browse Catalogs
  • Keys

    Where the engine has table keys instead of indexes, the tab becomes Keys: sorting, partition, primary, sampling, skipping indexes and projections of the chosen table, with expression and granularity.

    Only on ClickHouseHelp: Browse Catalogs
  • Fields

    Lists the columns of the chosen table with their type, nullability, key and default.

  • Routines

    Lists the procedures and functions of the database (and packages, in Oracle) with their type and whether they are deterministic, and says so when the engine shows their code without letting me edit it here.

  • Triggers

    Lists the triggers of the chosen table with their event, timing and orientation; where the engine has none, a note says what plays their part.

    Only on MySQL · MariaDB PostgreSQL SQL Server OracleHelp: Browse Catalogs
  • Events

    Lists the scheduled events of the database with their status and schedule.

    Only on MySQL · MariaDBHelp: Browse Catalogs
  • Sequences

    Lists the sequences of the schema with minimum, maximum, increment, cycle, cache and the next number on disk.

    Only on OracleHelp: Browse Catalogs
  • Filter by name

    Filters the list of the open tab by name as I type.

  • Refresh

    Reads the objects of the database again, and does it by itself when another Calíope tool creates or drops one there.

  • Read only

    Opens the tool locked so that create, edit and drop buttons are disabled until I unlock it; with a read-only environment tag the lock and those buttons are not drawn at all.

  • View DDL

    Shows the DDL the server returns for the chosen object in the bottom panel, with syntax colouring.

  • Open in ItemEditor

    Opens the object's DDL in a sheet where I can change it and apply it to the server, with the environment confirmation where it applies.

  • Create New Table

    Opens the Table Builder in a new tab, empty with New table or with the chosen table from Design table.

  • Populate with dummy data

    Fills a table with up to 5,000 sample rows generated from the types of its columns, with a preview of the values and a hint when the server rejects them.

  • View Editor

    Creates or changes a view from a form with its name, its SELECT and the options the engine has, and shows the DDL it will run.

  • Index Editor

    Creates or rebuilds an index on the chosen table with its kind, method and ordered columns, and shows the DDL it will run.

    Only on MySQL · MariaDB PostgreSQL SQL Server OracleHelp: Index Editor
  • Routine and Function Editor

    Creates or replaces a procedure or function from a form with its parameters, return type, options and body, and shows the DDL it will run.

    Only on MySQL · MariaDB PostgreSQL SQL ServerHelp: Routine and Function Editor
  • Trigger Editor

    Creates or changes a trigger on the chosen table with its timing, event and body, and shows the DDL it will run.

    Only on MySQL · MariaDB PostgreSQL SQL ServerHelp: Trigger Editor
  • Event Scheduler Editor

    Creates or changes a scheduled event, once at a date or recurring every interval between two dates, with its status and body.

    Only on MySQL · MariaDBHelp: Event Scheduler Editor
  • Drop an object

    Drops a table, index, routine or event from its context menu after a confirmation that shows the statement the engine writes.

Server information

12 functions

  • Server and connection details

    The Info tab gathers what identifies the server and my connection: version, host, port, data directory, character set and collation, connection limit, and my connection's id and user.

  • Global variables and status

    Lists every server variable and every status counter with its current value, each in its own tab, and says why a list is empty when the server won't let me read it.

  • Session variables and status

    Two more tabs list the variables and counters of my own connection, apart from the server's; an engine without sessions doesn't show them.

    Only on MySQL · MariaDB PostgreSQL SQL Server OracleHelp: Server Variables and Status
  • Filter variables

    A filter field narrows the variable and status tabs, searching both the name and the value.

  • Warning on problem counters

    Counters that signal a problem when they're above zero, such as aborted connections or deadlocks, are marked with a warning triangle.

    Only on MySQL · MariaDBHelp: Flagged counters in Server Information
  • Disk usage by table

    Lists how much each table takes on disk, with its schema, size in MB and rows, and the total underneath; where the engine says so, also its storage engine, its compression ratio or the date of its statistics.

  • Minimum size filter

    A field sets the minimum size in MB, so disk usage shows only the large tables.

  • Sort the lists

    Every list sorts by any of its columns, ascending or descending: by the column header on the Mac, and from a sort menu everywhere else.

  • Copy a value or a row

    Copies a variable's value, or the whole row tab-separated, to the clipboard; off the Mac a tap copies the value and shows a check mark.

  • Auto-refresh

    Rereads the visible tab every few seconds, between 5 and 300, with a countdown next to the switch.

  • Refresh

    Rereads the visible tab right away; each tab loads the first time I open it and keeps what it read until I refresh.

  • Export

    Shares the visible tab as tab-separated text, filtered and sorted as I see it, with a header row on disk usage.

Process list

11 functions

  • Live list of server sessions

    Shows every session or running query on the server with its id, user, host, database, command, time, state and statement, and says why when the server won't let me read the list.

  • Automatic refresh

    Rereads the list every few seconds from the moment it opens, counts down to the next read, and lets me pause it, resume it, change the interval or reread it right away.

  • Filter by user

    Shows only the sessions of the user I pick, and the footer says how many of the total are visible.

  • Sort by column

    Sorts the table by whichever column header I pick, and keeps the order while the list refreshes.

    Not on iPhoneHelp: View active processes
  • End a session or cancel its query

    From a row's menu, ends the whole connection or cancels only its running query after asking me, and says it when the server refuses and why.

  • Close idle connections in bulk

    Closes every connection that has been idle longer than the seconds I set, after telling me how many it found, and sums up how many ended and why the rest were refused.

    Only on MySQL · MariaDB PostgreSQL SQL Server OracleHelp: Kill idle or busy threads in bulk
  • Cancel long-running queries in bulk

    Cancels every query that has been running longer than the seconds I set and leaves its connection open, after telling me how many it found.

    Only on MySQL · MariaDB PostgreSQL ClickHouse OracleHelp: Kill idle or busy threads in bulk
  • Memory and rows read per query

    Adds two columns with the memory each query is using and the rows it has read so far, where the server publishes them.

    Only on ClickHouseHelp: View active processes
  • Unfinished mutations

    Below the list, and only when there is one, shows each queued UPDATE or DELETE with its table, id, command, parts left and, if it is failing, the reason.

    Only on ClickHouseHelp: View active processes
  • Cancel a mutation

    Cancels a queued mutation after asking me, keeps what was already rewritten, and says it when the server refuses.

    Only on ClickHouseHelp: View active processes
  • My own session marked

    Marks the Calíope connection that reads the list and never offers to end it, alone or in bulk.

    Only on OracleHelp: View active processes

SQL alerts

8 functions

  • Rules with their value and state

    Lists each rule with its query, column, condition, the value measured in this session and its state, and the footer counts how many are on alert.

  • Evaluate the rules

    Runs every rule once, compares the value of its column with the threshold, and does it on its own when I open the tool, add an example or close the configuration.

  • Automatic re-evaluation

    Re-evaluates the rules every so many seconds while the tool is open, with a countdown to the next cycle, and stops when I pause it or leave.

  • Configure rules

    Opens a sheet where I add, edit or delete rules: name, SQL, column, operator and threshold, with the server's last error next to the rule that failed.

  • Load an example rule

    Adds a ready-made rule for the engine of the session, the next one I don't have yet each time, and turns off when I have them all.

  • Export as TSV

    Saves the table, rules, values and state, as a tab-separated file with the same column names I see.

  • Writing rules refused in protected environments

    On a connection whose environment label protects it, a rule whose query writes is not run and says which label stopped it, because a rule runs alone and can't ask for confirmation.

  • Rules shared across sessions and devices

    Keeps the rules on this device for every open session and syncs them with my other devices when iCloud sync is on, without the measured values.

Backup

21 functions

  • Object selection tree

    Lists each database with its tables, views, routines, triggers and events, all checked on opening, with the estimated size of each table and how many objects are checked out of how many.

  • Quick selection

    Checks or clears everything at once, or keeps only the tables, or selects everything for a structure-only dump.

  • Server users

    Adds the server accounts I check below the tree to the file, with the statements that create them and their privileges; an account the session cannot read is left out and named in the file's footer.

  • Include user passwords

    Writes each account's password or hash into the file; off by default, and when off it is written as '***REDACTED***', with a warning next to the option while it is on.

  • Dump options

    Chooses whether each object is dropped before it is created, whether the table rows go in, and whether the file name carries the date and time.

  • Compress output (.sql.gz)

    Compresses the file with gzip while it is written, without holding the SQL in memory, and keeps the extension of the chosen file in step with the option.

  • Create Backup

    Dumps the checked objects to a .sql or .sql.gz file in the background, object by object and with bounded memory, with a log, a progress bar, the estimated time left and a Cancel button that removes the partial file.

  • Save and share the file

    On the Mac I choose the file in the save panel before creating it and Show in Finder takes me to it; everywhere else Share file sends it to Files, iCloud Drive or another app.

  • Notice when it finishes

    When a long backup ends or fails, sends a local notification if the switch in Settings is on, records it in the system messages and announces the end to VoiceOver.

  • Save as preset…

    Saves the connection and the databases holding something checked as a named on-demand configuration in the Scheduled tab; its folder is chosen later in its editor.

  • Restore from a file

    Runs a .sql or .sql.gz file against the server in a single session, after a summary with the statements found, the databases affected and a warning if it drops objects, stopping at the first error and naming the statement that failed.

  • Preview

    Opens the first 200 lines of the chosen file, reading only those few kilobytes, so I can check what a dump contains before applying it.

  • Into schema

    Chooses the schema where everything the file creates without a schema of its own goes, the session's by default.

    Only on OracleHelp: Restore from SQL file
  • Scheduled backups

    Lists the scheduled backups and on-demand configurations with their frequency, connection, last and next run, a switch to turn each on and off, and Delete in the row's context menu; while the app is open they run when due.

  • New and edit scheduled backup

    Gives a backup its name, its connection or any active one, its frequency (daily, weekly, weekdays, monthly, every N hours or on demand) with its hour, and the destination folder chosen with a persistent permission.

  • Retention

    Keeps only the last N files of each scheduled backup in its folder, from 1 to 30 or all of them, and deletes the oldest after each run.

  • Missed backups and Run now

    Marks as pending a backup whose time passed with the app closed or its connection off, says how many were missed on launch and notifies the skip, and Run now in its row launches it.

  • Run

    Runs an on-demand configuration from its row whenever I press it, without a calendar.

  • Lost destination folder

    Warns in the row when the folder of a scheduled backup was moved or its permission was lost, and Update folder opens its editor to choose it again.

  • View history

    Opens the runs of that backup, successes, failures, cancellations and skips, in the same history Reports uses; if it has not run yet, it says so.

  • Scheduled backup notifications

    Notifies with the file name and size when a scheduled backup finishes, and with the reason when it fails or is cancelled.

User admin

25 functions

  • Server account list

    Lists every account of the server, with the ones the server installs grouped apart and the total at the foot, and says why when the server won't let me read it.

  • Search accounts

    Filters the list as I type, by account name or by host.

  • Account summary

    Heads the selected account with its name and badges: locked or active, system, what it owns, its memberships, its scopes, how many privileges it has and whether there are unsaved changes.

  • Create an account

    Creates an account with its name, its password and, where the engine has them, its host and its authentication method, and leaves it selected to give it privileges.

  • Change the password

    Changes an account's password, asking for it twice, and, where the engine offers them, its authentication method.

  • Lock an account

    Locks or unlocks an account so it can't log in, keeping its privileges.

    Only on MySQL · MariaDB SQL Server OracleHelp: Change user password
  • Hourly resource limits

    Sets how many queries, updates and connections an account may make per hour and how many connections it may hold at once, where 0 means no limit.

    Only on MySQL · MariaDBHelp: Change user password
  • Delete an account

    Deletes the selected account after a confirmation that says what goes with it; accounts the server installs can't be deleted here.

  • Grant and revoke privileges

    Shows each scope as a card with its privileges grouped by what they allow, an ALL PRIVILEGES switch and WITH GRANT OPTION, and on Save runs the REVOKE and GRANT needed, with the server's rejections next to the button.

  • Global privileges

    The card of privileges over the whole server.

    Only on MySQL · MariaDB SQL Server ClickHouse OracleHelp: Manage privileges by database, table, and routine
  • Connection privileges

    The card of the database the profile points to, which decides whether the account can connect at all; it's there even before anything is granted.

    Only on PostgreSQL SQL ServerHelp: Manage privileges by database, table, and routine
  • Database privileges

    The card of privileges over every object of a database, or of a schema where the engine calls it that.

  • Table privileges

    The card of privileges over one table.

  • Routine privileges

    The card of privileges over a stored procedure or function.

    Only on MySQL · MariaDB PostgreSQL SQL Server OracleHelp: Manage privileges by database, table, and routine
  • Add an object

    Adds a card for a database, a table or a routine the account has nothing on yet, choosing it from the schema.

  • Role attributes

    The card of the role's attributes, such as LOGIN or SUPERUSER, which aren't granted but set, and are all written on Save.

  • Simultaneous connection limit

    Sets how many connections the role may hold at once, next to its attributes.

  • Password expiry date

    Sets the date from which the role's password stops working, or leaves it without expiry.

  • Reload privileges after each change

    After saving privileges, creating, editing or deleting an account, runs FLUSH PRIVILEGES so the server applies it right away.

  • Role membership

    Shows the roles the account belongs to, direct and inherited with the path of each, and lets me add a role or remove a direct one.

    Only on PostgreSQL SQL Server ClickHouse OracleHelp: Roles, inheritance and ownership in PostgreSQL
  • What the account owns

    Marks the scopes the account owns, which give it everything without any grant, drawn checked, greyed out and left out of saving.

    Only on PostgreSQL SQL Server OracleHelp: Roles, inheritance and ownership in PostgreSQL
  • Grant on all tables

    Grants or revokes table privileges on every table of a schema, the existing ones and the future ones, with the button that undoes it beside it.

  • Denied privileges

    Shows a privilege the server explicitly takes away as a third state, struck through and with the word of the statement, which can be seen but not changed here.

    Only on SQL Server ClickHouseHelp: User management
  • PUBLIC, the role of everyone

    Lists the pseudo-role everyone belongs to as one more account, so something granted to all doesn't look private.

    Only on PostgreSQL SQL Server OracleHelp: Roles, inheritance and ownership in PostgreSQL
  • Read-only when the session can't write

    When my connection lacks the privilege to create, change, delete or grant, or the account can't be changed by SQL, the buttons are turned off with a padlock and a strip says why.

Table maintenance

12 functions

  • Table selection

    Lets me check tables one by one or a whole database in the shared schema tree, check every table on the server except the system databases, clear the selection, and see how many are checked.

  • Analyze tables

    Refreshes the statistics of each checked table and its indexes so the optimizer plans with current data.

    Only on MySQL · MariaDB PostgreSQL SQL Server OracleHelp: Table Maintenance
  • Check tables

    Checks the integrity of each checked table and lists every message the server returns.

    Only on MySQL · MariaDB SQL Server ClickHouseHelp: Table Maintenance
  • Table checksum

    Gives a number per checked table, so the same number on two servers means the same rows, and says so when the server has no live checksum.

    Only on MySQL · MariaDBHelp: Table Maintenance
  • Optimize tables

    Rebuilds or compacts each checked table with the server's own operation and reports what it did.

    Only on MySQL · MariaDB PostgreSQL SQL Server ClickHouseHelp: Table Maintenance
  • Optimize one partition

    With a single table checked, lets me choose one of its partitions to optimize instead of the whole table.

    Only on ClickHouseHelp: Table Maintenance
  • Repair tables

    Repairs the checked tables whose storage engine can repair itself, says beforehand how many will be skipped, and explains each skipped table with the operation that rebuilds it.

    Only on MySQL · MariaDBHelp: Table Maintenance
  • Operation modifiers

    Shows the server's modifiers for the chosen operation as checkboxes, enables only the ones that operation accepts, and clears them when I change operation.

    Only on MySQL · MariaDB SQL ServerHelp: Operation Modifiers
  • Keep out of the binary log

    Lets me run ANALYZE, OPTIMIZE and REPAIR without writing them to the binary log, so replicas don't repeat them.

    Only on MySQL · MariaDBHelp: Operation Modifiers
  • Merge into a single part (FINAL)

    Lets me force OPTIMIZE to leave the table or partition in one part, off by default, and warns before running that it can take hours and need twice the disk.

    Only on ClickHouseHelp: Operation Modifiers
  • Run with progress and cancel

    Runs the chosen operation table by table with a progress bar, asks once per batch when the environment label confirms writes, keeps running if I switch tabs, and lets me cancel before the next table.

  • Results list

    Lists one row per message the server returns for each table, with warnings and errors marked, sortable by column on the Mac, and lets me clear it.

Data migration

11 functions

  • Object selection

    Lets me check tables, views, routines, triggers and events one by one or a whole database in the shared schema tree, clear the selection and see how many objects are checked.

  • Target server

    Lets me pick one of my saved connections as the target, grouped like the rest of the app, connect to it and disconnect, and tells me if the connection or its SSH host key fails.

  • Target database

    Lets me name the database the objects end up in, or leave it empty to keep each object's own database, and creates it in the target if it does not exist.

  • Replace at destination

    Drops everything I checked from the target before creating anything, dependents first and child tables before their parents, so I can repeat the same migration safely.

  • Copy rows

    Copies the rows of every checked table along with its structure and tells me in the log how many rows reached the target out of how many were read.

  • Skip foreign key checks

    Turns off foreign key checking in the target session while each object loads, so tables can arrive in any order.

    Only on MySQL · MariaDB PostgreSQLHelp: Migrate Objects Between Servers
  • Migration SQL preview

    Writes, highlighted in the output panel, the same script the migration would run, without executing anything and without connecting a target, so I can review or copy it.

  • Run the migration

    Creates each checked object in the target over a single connection, with progress and a stop between one object and the next, writes one log line per object and creates the foreign keys at the end.

  • Same-server protection

    Disables Migrate and says why when the target is this same server and an object would land in its own database, because the copy would overwrite what it reads.

  • Copy between engine families

    Warns me before running when target and source are different engine families, and then copies only rows into tables that already exist in the target, matching columns by name.

  • Environment tag confirmation

    Asks once before starting, counting objects, when the target's environment tag confirms what it writes, and does not write to a target tagged read-only.

ER Diagram

12 functions

  • Diagram of a database

    Draws every base table of the chosen database as a node with its columns, types and key glyphs, joined by the foreign keys the server declares, and reloads when I pick another database here or in the schema tree.

  • Second database on the canvas

    Brings the tables of another database onto the same canvas, with a different header colour and the foreign keys that cross between the two drawn in amber, and takes it away again.

  • Zoom and pan

    Zooms the canvas between 18 % and 400 % with the toolbar buttons, the keyboard, the wheel or a pinch, pans it by dragging an empty area, and fits every table in view on demand and on opening.

  • Move tables

    Lets me drag any table node to another spot on the canvas, at any zoom level.

  • Automatic layout

    Rearranges every table in a grid sized to the tallest node of each row, so none overlaps, and fits the result in view.

  • Save the layout

    Keeps where I left each table, one layout per database, and puts the tables back there the next time I open that database; a table without a saved place goes in a grid beside the others.

  • Export as PNG or PDF

    Renders the whole diagram with a title and date as a PNG image or a PDF in three sizes, and saves it where I choose on the Mac or hands it to the Share sheet elsewhere.

  • Print

    Prints the same canvas the export produces with ⌘P.

    Not on iPad iPhone Apple Vision ProHelp: Exporting the ER diagram
  • Table structure

    Opens from a table's context menu the full CREATE TABLE the server returns for it, selectable for copying.

  • New foreign key

    Proposes from a table's context menu the ALTER TABLE that adds a foreign key between the source and target columns I pick, lets me edit it and runs it, then reloads the diagram.

    Only on MySQL · MariaDB PostgreSQL SQL Server OracleHelp: Creating an FK relationship in the diagram
  • Drag a foreign key with ⌃

    Holding Control, I drag from one table to another and a dashed line follows the pointer; dropping it opens the new foreign key sheet with both tables filled in.

    Only on MySQL · MariaDB PostgreSQL SQL Server OracleNot on iPad iPhone Apple Vision ProHelp: Creating an FK relationship in the diagram
  • The diagram with VoiceOver

    Exposes the drawn canvas to VoiceOver as a list of tables, each with its columns, types and keys, and a list of relationships from column to column.

Schema diff

13 functions

  • Source and target

    Lets me pick the source and target databases from the server's list, starting on the database selected in the schema tree and keeping both in step with it.

  • Compare

    Reads the definition of every object on both sides, as the server writes it, and tells me whether the two schemas are identical or what differs.

  • Report by object type

    Groups the result by object type, marks each object as new, dropped, modified, unchanged or unreadable with a word as well as a colour, and counts how many changed.

  • Changes only

    Hides the objects that match on both sides, so the report shows only what the script will touch.

  • Object detail

    Expands a row to show, for a modified table, each element change with the current and target definition marked − and +; for a view or routine, both full definitions side by side; and for a new or dropped object, its DDL.

  • Copy the sync script

    Copies the whole script that turns the source into the target, with tables first, foreign keys in their own block and the other objects ordered by dependency, to run in the SQL Editor.

  • Copy one object's SQL

    Copies from an expanded row just the statements for that object, its foreign keys included.

  • Compare triggers

    Also compares triggers and rebuilds the ones that differ.

    Only on MySQL · MariaDB PostgreSQL SQL Server OracleHelp: Compare database schemas
  • Compare events

    Also compares scheduled events, whose start time is part of their definition.

    Only on MySQL · MariaDBHelp: Compare database schemas
  • Compare custom types

    Also compares the schema's own types, creates the missing ones before the tables that use them and leaves a note to change by hand one that is in use.

    Only on PostgreSQL OracleHelp: Compare database schemas
  • Compare sequences

    Also compares sequences, without their current value.

    Only on OracleHelp: Compare database schemas
  • Compare packages

    Also compares packages and rebuilds the ones that differ.

    Only on OracleHelp: Compare database schemas
  • Check the result in the DDL History

    After running the script in the SQL Editor, the DDL History lists each structure change it applied, with when and on which connection, so I can search, copy, export or clear them.

Replication monitor

9 functions

  • Replica status at a glance

    Shows four cards for the server I'm connected to: the IO thread and the SQL thread with the word the server reports, the lag in seconds coloured by threshold (and «No reading» when the server has no figure), and the source server it reads from.

    Only on MySQL · MariaDBHelp: Replication Monitor
  • Replication errors

    When a thread stops on an error, adds a section with the server's full message for the IO thread and the SQL thread, which I can select and copy.

    Only on MySQL · MariaDBHelp: Replication Monitor
  • Binary log position

    Shows the source's binary log file, the position the IO thread has read up to, the position the SQL thread has executed and the IO thread's state, so I can see events received and not yet applied.

    Only on MySQL · MariaDBHelp: Replication Monitor
  • Full status

    Lists every column the server returns for the replica with its raw value, sorted by name and selectable, including the ones the cards don't show.

    Only on MySQL · MariaDBHelp: Replication Monitor
  • Per-table replication summary

    Where replication is per table, shows four cards: how many tables replicate, whether the Keeper session is alive, the worst lag in seconds and the queue in entries, kept apart.

    Only on ClickHouseHelp: Replication Monitor
  • Replicated tables, one by one

    Lists every replicated table with this replica's name, the status in words and with its glyph, how many replicas are active out of how many and the missing ones by name, the lag and the queue, and the last error the server kept.

    Only on ClickHouseHelp: Replication Monitor
  • Says when there is nothing to watch

    Instead of empty cards, says the server is not a replica, that it has no replicated tables, or why the replication state could not be read.

  • Auto-refresh

    Rereads the replication state every 5 seconds while the tool is open, says the time of the last read, and lets me turn it off to keep a static snapshot or reread it with Refresh.

  • Lag alert

    Each time it reads the state, compares the lag (the worst table's, where replication is per table) with the threshold set in Server Alerts and sends a system notification when it reaches it.

Binlog viewer

6 functions

  • Binary log files

    Lists the server's binary log files with their size and opens the newest one as soon as I open the tool.

  • Event list

    Shows each event with its type, start and end position, its class and the Info field, which I can select and copy.

  • Event limit

    Sets how many events are read from the start of the file, from 100 to 2000, re-reads it on change and says when the file goes on beyond the limit.

  • Filter by class

    Keeps only the DDL, DML or System events, each class with its own colour, icon and name.

  • Search events

    Keeps the events whose type or Info field contains the text I type, without telling upper and lower case apart.

  • Reload logs

    Reads the file list and the chosen file again, moves to the new file if the server rotated while I was reading the newest, and says so when the server does not answer.

Visual EXPLAIN

10 functions

  • Execution plan tree

    Draws the plan the server gives for the query, without running it, as a tree of cards with the object, the access type, the estimated rows and the detail the engine adds.

  • Access colors and legend

    Colors each node by how it reaches the data, from key lookup in green to full table scan in red, writes the same access by name on the card, and keeps a legend in the bar.

  • Zoom and pan

    Lets me zoom the tree from 18% to 350% with the gesture of each device, the bar buttons or ⌘− ⌘+ ⌘0, drag the canvas, and fit the whole tree in the window.

  • Granules read per table

    In each table read, shows how many granules were read out of those there were, what each index skipped in granules and parts, and the estimate of rows, parts and marks.

    Only on ClickHouseHelp: Visualize Execution Plan
  • Cost and bytes per node

    Adds to each node the operation as the optimizer names it, its access and filter predicates, and the cost with the estimated bytes.

    Only on OracleHelp: Visualize Execution Plan
  • Plan as a list for VoiceOver

    Exposes the tree to VoiceOver as a list in plan order, indented by depth, with each node's name, access, rows, time and detail.

  • Plan table in the index advisor

    Shows in the index advisor panel the same translated plan, node by node with indentation, with the same access names and colors as the visual tree.

  • Index advisor findings

    For each full scan proposes the CREATE INDEX the engine writes on the filtered column, says so in a comment when there is no column to index, warns of full index scans, and shows a green seal when it finds none.

    Only on MySQL · MariaDB PostgreSQL SQL ServerHelp: Index Advisor
  • Data-skipping index advice

    Instead of CREATE INDEX, proposes a data-skipping index when the filter is outside the sorting key, says to filter by the key or recreate the table when the key skips nothing, and proposes nothing for a one-granule table.

    Only on ClickHouseHelp: Index Advisor
  • Index advice that reads the predicate

    Before proposing an index, reads the filter predicate: a LIKE starting with a wildcard gets no index, and a column that already has one gets an explanation instead of a second index.

    Only on OracleHelp: Index Advisor

Query log

16 functions

  • Persistent log

    Keeps every statement I run, from this session and earlier ones, in a file on disk, with its number, date, connection, status, statement and what the server answered.

  • Live update and refresh

    Shows each new entry, from this tab, another one or iCloud, without me doing anything, and rereads the file when I press Refresh.

  • Filter by session

    Keeps only the entries of one launch of the app, or all of them.

  • Filter by connection

    Keeps only the entries of one connection profile, shown as name (host:port), or all of them.

  • Filter by result

    Keeps all entries, only the ones that succeeded or only the ones that failed.

  • Entry detail

    Opens an entry in a sheet with its fields, the whole statement and the server's answer, each with its Copy button.

  • Copy statement or result

    Copies an entry's statement or the server's answer to the clipboard from its context menu, without running it again.

  • Open in editor or console

    Takes an entry to the SQL Editor, or in Redis to the console, without running it.

    Only on MySQL · MariaDB PostgreSQL SQL Server ClickHouse Oracle RedisHelp: Take a log entry to the editor
  • Purge the log

    Deletes every entry of the persistent log after asking, from the trash button of the filter bar or the Purge button of the footer.

  • Log file path and size

    Shows where the log file lives and how much it takes, and shows it in Finder on the Mac or copies its path elsewhere.

  • Session history

    Lists the statements this window ran, with how long each one took, filtered by session or text, and clears them after asking.

    Only on MySQL · MariaDB PostgreSQL SQL Server ClickHouse OracleHelp: View the query log
  • Sync with iCloud

    Shares the log between my devices through iCloud when I turn it on with the cloud button, warning that the statements travel as written.

  • iCloud sync errors

    When the cloud turns red, tells me what failed and lets me retry or turn syncing off without touching the local log.

  • Notification when iCloud sync fails

    Sends a local notification, at most every 15 minutes, when the log's iCloud sync fails, with its own message when the storage is full.

  • Print

    Prints the entries that pass the filters with ⌘P, each with its number, date, connection, answer and the whole statement.

    Not on iPad iPhone Apple Vision ProHelp: Print the query log

Snippets

12 functions

  • Snippet library

    I keep your saved queries and commands in one list, with each snippet's category, engines and the start of its content, and with iCloud sync on they travel to your other devices.

  • Only show snippets compatible with the active server

    With a server connected, I hide the snippets written for other engines; it starts on.

  • Create a snippet

    The + button opens a form with title, category, engines and content, and Add leaves the new snippet selected.

  • Snippet category

    I tag a snippet with one of six categories, shown as a badge in the list.

  • Engines a snippet is for

    I mark which database families a snippet makes sense for, and the compatibility filter reads it.

  • Edit and save a snippet

    I edit a snippet's title, category, engines and content in place, and Save keeps the change; picking another snippet without saving discards it.

  • Copy content

    I put a snippet's content on the clipboard, from its header or from the list's context menu.

  • Delete a snippet

    I delete a snippet after asking for confirmation, from the trash button, the context menu or a swipe on a touch screen.

  • Sample snippets per engine

    The first time you open it connected to an engine, I add that engine's sample snippets, once per engine.

    Only on MySQL · MariaDB PostgreSQL SQL Server ClickHouse Oracle RedisHelp: Snippet Manager
  • Restore samples

    The circular arrow adds back the active engine's sample snippets after confirming, without touching yours or duplicating a title.

    Only on MySQL · MariaDB PostgreSQL SQL Server ClickHouse Oracle RedisHelp: Snippet Manager
  • Open in console

    In a Redis session, I leave the snippet written in the console without running it, and the console checks it as if you had typed it.

    Only on RedisHelp: Snippet Manager

Table Builder

28 functions

  • Table design tab

    Opens each table I create or design in its own workspace tab, keeps what I have designed when I switch tabs, and in an existing table loads its columns, indexes, foreign keys and options from the server.

  • Table name

    Lets me name a new table or rename an existing one, which the preview turns into a rename in the ALTER TABLE.

  • Column list

    Shows every column with its position, name, type, NULL, primary key, automatic numbering, default and comment, and lets me pick one to edit it below.

  • Add and duplicate columns

    Adds a column with the engine's starting type or duplicates the selected one right below it.

  • Reorder columns

    Moves the selected column up or down in the table.

  • Delete a column

    Removes the selected column from the design and selects the next one.

  • Column name and type

    Lets me name the column and pick its data type from the engine's own list, with the length or precision when the type takes one.

  • NULL and primary key

    Lets me allow NULL in a column or make it part of the primary key, which turns NULL off.

  • UNIQUE constraints

    Lets me mark a column as unique or add a UNIQUE index over several columns.

    Only on MySQL · MariaDB PostgreSQL SQL Server OracleHelp: Indexes and Unique Keys
  • Automatic numbering

    Numbers the rows of an integer column on its own, with the engine's keyword in the label.

    Only on MySQL · MariaDB PostgreSQL SQL Server OracleHelp: Defining Columns
  • Unsigned

    Keeps negative values out of a numeric column.

    Only on MySQL · MariaDBHelp: Defining Columns
  • Default value

    Sets the column default to none, a literal value, NULL, CURRENT_TIMESTAMP or an expression.

  • Column character set and collation

    Gives a text column its own character set and collation, or leaves it inheriting the table's.

    Only on MySQL · MariaDBHelp: Defining Columns
  • Column comment

    Lets me write a comment for each column, which the engine stores in its own way.

  • Indexes

    Lets me add, edit and delete the table's indexes, choosing their type and the columns in order.

  • FULLTEXT and SPATIAL indexes

    Adds full-text indexes over text columns and spatial indexes over geographic data.

    Only on MySQL · MariaDBHelp: Indexes and Unique Keys
  • Skip indexes

    Adds data-skipping indexes with their type and granularity, also on an existing table, to discard blocks instead of finding a row.

    Only on ClickHouseHelp: Indexes and Unique Keys
  • Foreign keys

    Lets me add, edit and delete foreign keys, choosing the local column, the referenced database and table, the referenced column and the ON DELETE action.

    Only on MySQL · MariaDB PostgreSQL SQL Server OracleHelp: Foreign Keys
  • ON UPDATE action

    Lets me choose what a foreign key does when the referenced value changes.

    Only on MySQL · MariaDB PostgreSQL SQL ServerHelp: Foreign Keys
  • Storage engine

    Lets me choose the table's storage engine, starting with the one the engine proposes.

    Only on MySQL · MariaDB ClickHouseHelp: Table options
  • Row format

    Lets me choose the row format when I create the table.

    Only on MySQL · MariaDBHelp: Table options
  • Table character set and collation

    Lets me choose the table's character set from the server's list, and its collation, which jumps to the first of the chosen set.

    Only on MySQL · MariaDBHelp: Table options
  • Table comment

    Lets me write a comment for the whole table.

  • Table keys

    When I create a table, lets me write its ORDER BY, PARTITION BY, PRIMARY KEY, TTL and SETTINGS for the chosen table engine, and turns creation off while ORDER BY is missing.

    Only on ClickHouseHelp: Table options
  • SQL preview

    Shows, with syntax highlighting, the CREATE TABLE or ALTER TABLE my changes produce, follows each edit and says in a comment what the engine cannot do.

  • Copy the DDL

    Copies the SQL of the preview to the clipboard.

  • Create or apply

    Runs the CREATE TABLE or ALTER TABLE on the server through the session's write guard, says whether it worked and, in an existing table, reloads it.

  • Reset

    Discards what I changed: back to the defaults in a new table, or to the server's definition in an existing one.

Server health monitor

27 functions

  • Connected threads chart

    Draws how many connections the server had open at each sample of the chosen range.

  • Queries per second chart

    Draws the rate of queries the server ran per second, worked out from the difference between consecutive samples.

  • Cache hit rate chart

    Draws the share of reads served from the server's cache without going to disk.

    Only on MySQL · MariaDB PostgreSQL SQL Server OracleHelp: Health Monitor Metrics
  • Active processes chart

    Draws how many statements were running at each sample, leaving out idle connections and the server's own threads.

  • Network traffic chart

    Draws the bytes per second the server received and sent, as two lines.

    Only on MySQL · MariaDB ClickHouse OracleHelp: Health Monitor Metrics
  • Statements by verb chart

    Draws SELECT, INSERT, UPDATE and DELETE per second as four lines.

    Only on MySQL · MariaDBHelp: Health Monitor Metrics
  • Value at a point

    Shows the exact value of a single-line chart at the instant I point at, with a guide line on it.

  • Choose the server

    Switches the charts between the servers I monitor, by their alias.

  • Time range

    Rereads the history for the last hour, six hours, day, week or thirty days.

  • Monitoring state

    Says with a dot and a label whether monitoring is running, starting, retrying, stopped or cannot reach the storage, and why when it can't.

  • Last failed poll

    Puts a warning triangle next to the state when the last poll of the chosen server failed, with the reason, while the charts keep the older history.

  • Health warning

    When the last good poll crosses a threshold, shows the warning or critical sign with its reason and the figure that set it off.

  • Automatic refresh

    Rereads the charts every 30 seconds while it is on.

  • Reload

    Rereads the history from the storage server right away.

  • Says why there is nothing to show

    Tells apart monitoring not set up, no server to watch, no samples yet and a chart the server does not measure, each with its own text.

  • Storage that does not answer

    Says when the storage server could not be read, with the reason and a retry, and when its engine cannot hold the history at all.

  • Reorder the charts

    In layout mode, moves a chart one place earlier or later with its arrows, by dragging it, or with the VoiceOver actions.

  • Hide and restore charts

    In layout mode, hides a chart with its eye and brings it back from the hidden charts list.

  • Reset layout

    Puts every chart back in its default place and shows them all, after asking.

  • Enable monitoring

    Starts or stops collecting for every server without losing the configuration.

  • History storage server

    Picks which saved connection holds the history and creates its schema and tables there, saying whether it worked.

    Only on MySQL · MariaDB PostgreSQL SQL ServerHelp: Setting up the Server Health history
  • Monitored servers

    Adds a saved connection to watch with an alias and a polling interval, changes its interval, and removes it.

  • Pause a server

    Stops polling one server without removing it from the list.

  • Health thresholds

    Sets when a server turns to warning or critical for connections, running threads, slow queries, cache and long queries.

  • Thresholds for one server

    Overrides some health thresholds for one server, and an empty field inherits the general value shown as its placeholder.

  • Data retention

    Chooses how many days of history to keep, or no limit with a warning, and clears the older rows at start and once a day.

  • Collection in the background

    Keeps polling every enabled server at its interval while the app is open, with or without the tab, and retries the storage with a growing wait when it is down.

Query Builder

15 functions

SQLite Editor

29 functions

  • Open a database file

    I open a local database file without any server, also when it arrives from outside the app, and I mark it read-only when it cannot be modified.

  • Create a new database

    I create an empty database file wherever you choose, and the engine gives it its schema with the first statement that defines something.

  • Recent files

    I list the last files you opened on the start screen so you can reopen one with a single action.

  • Close the file

    I close the open file and release it, and if there are unsaved changes I first ask whether to save or discard them.

  • The four sections

    I split the open file into Structure, Data, Execute SQL and Pragmas, with the engine and its version always visible in the header.

  • Schema tree and DDL

    I list the tables, views, indexes and triggers of the file and, for the one you select, I show its columns with their keys and constraints and the statement that created it.

  • Table designer

    I build a new table from a form of columns, each with its type, primary key, NOT NULL, duplicate check and default value, and I show the statement before creating it.

  • Create an index

    I create an index on a table from its name, the columns you tick and whether it must reject duplicates, with the statement in view.

  • Create a view

    I create a view from a name and the SELECT you write.

  • Add a column

    I add a column to the selected table with its type, NOT NULL and default value.

  • Rename a table

    I rename the selected table, showing its current name next to the new one.

  • Delete an object

    I delete the selected table, view, index or trigger after asking you to confirm it by name.

  • Browse a table's rows

    I show the rows of the table you pick, page by page with the counter and the arrows, and I say when the table cannot be edited instead of offering the buttons.

  • Edit a cell in the grid

    I let you write a value right in the grid, confirm it with Return or by leaving the cell, and cancel it with Esc.

  • Advanced cell editor

    I edit a value in its own sheet as text, as JSON that I format and validate, or in hexadecimal, I show it as an image when the bytes are one, and I import those bytes from a file or export them to another.

  • Set a cell to NULL

    I set a cell to NULL from its context menu without opening anything, and I draw an empty cell as NULL in italics.

  • Add a row

    I add a row from a form with one line per column, leave to the engine the columns it can fill by itself, and keep Insert off while a required column has no value.

  • Delete a row

    I delete the row you select by its number, or the one whose cell you open the context menu on.

  • Write and run SQL

    I run the whole script against the open file with the same highlighted text field as the SQL Editor, show the result of the last statement that returned rows or how many were affected, and stop at the first error with the engine's message.

  • Autocomplete with the file's tables

    I suggest the engine's keywords and functions and all the tables of the open file with their columns, up to date after every schema change.

  • Function cards

    I show the card of the engine's function under the pointer or the text cursor, with its syntax, return value, parameters and an example.

  • Results grid and row cap

    I show the result in the SQL Editor's own grid, by pages, cut at the row cap with a button to fetch them all, and I let you copy, drag or export rows from it.

  • Save or revert changes

    I keep every edit, import and statement that writes in one pending transaction marked with an amber dot until you save it or revert it whole.

  • Import a CSV file

    I turn a CSV file into a table named after the file, or add its rows if that table already exists, and leave the import pending until you save.

  • Export a table to CSV or JSON

    I export the table open in Data to a CSV or JSON file wherever you choose.

  • Export the database as an SQL dump

    I export the whole database, schema and data, to a single SQL file.

  • File settings (PRAGMAs)

    I show the file's PRAGMAs, change the editable ones on the spot outside the pending transaction, turn them off while there are unsaved changes, and list the rest with their current value.

  • Check and maintain the file

    I check the file's integrity and foreign keys or tidy it with VACUUM, ANALYZE and REINDEX, and show the engine's answer under the buttons.

DuckDB Editor

38 functions

  • Open a database file

    I open a local database file without any server, also when it arrives from outside the app, and I mark it read-only when it cannot be modified.

  • Create a new database

    I create an empty database file wherever you choose, and the engine gives it its schema with the first statement that defines something.

  • Recent files

    I list the last files you opened on the start screen so you can reopen one with a single action.

  • Close the file

    I close the open file and release it, and if there are unsaved changes I first ask whether to save or discard them.

  • The four sections

    I split the open file into Structure, Data, Run SQL and Settings, with the engine and its version always visible in the header.

  • Schema tree and DDL

    I list the tables, views, indexes, sequences, types, macros and table macros of the file, with the schema name in front when there is more than one, and for the one you pick I show its columns and the statement that created it.

  • Table designer

    I build a new table from a form of columns, each with its type, primary key, NOT NULL, duplicate check and default value, and I show the statement before creating it.

  • Create an index

    I create an index on a table from its name, the columns you tick and whether it must reject duplicates, with the statement in view.

  • Create a view

    I create a view from a name and the SELECT you write.

  • Add a column

    I add a column to the selected table with its type, NOT NULL and default value.

  • Rename a table

    I rename the selected table, showing its current name next to the new one.

  • Delete an object

    I drop the selected table, view, index, sequence, type or macro after asking you to confirm it by name.

  • Browse a table's rows

    I show the rows of the table you pick, page by page with the counter and the arrows, and I say when the table cannot be edited instead of offering the buttons.

  • Edit a cell in the grid

    I let you write a value right in the grid, confirm it with Return or by leaving the cell, and cancel it with Esc.

  • Advanced cell editor

    I edit a value in its own sheet as text, as JSON that I format and validate, or in hexadecimal, I show it as an image when the bytes are one, and I import those bytes from a file or export them to another.

  • Set a cell to NULL

    I set a cell to NULL from its context menu without opening anything, and I draw an empty cell as NULL in italics.

  • Add a row

    I add a row from a form with one line per column; DuckDB does not fill an integer primary key by itself, so every required column, the key included, needs its value before Insert lights up.

  • Delete a row

    I delete the row you select by its number, or the one whose cell you open the context menu on.

  • Write and run SQL

    I run the whole script against the open file with the same highlighted text field as the SQL Editor, show the result of the last statement that returned rows or how many were affected, and stop at the first error with the engine's message.

  • Autocomplete with the file's tables

    I suggest the engine's keywords and functions and all the tables of the open file with their columns, up to date after every schema change.

  • Function cards

    I show the card of the engine's function under the pointer or the text cursor, with its syntax, return value, parameters and an example.

  • Results grid and row cap

    I show the result in the SQL Editor's own grid, by pages, cut at the row cap with a button to fetch them all, and I let you copy, drag or export rows from it.

  • Save or revert changes

    I keep every edit, import and writing statement in a pending transaction marked with an amber dot until you save or revert it whole, and I tell you when a failed or stopped statement made DuckDB cancel it.

  • Import a CSV file

    I turn a CSV file into a table named after the file, or add its rows if that table already exists, and leave the import pending until you save.

  • Export a table to CSV or JSON

    I export the table open in Data to a CSV or JSON file wherever you choose.

  • Export the database as an SQL dump

    I export the whole database, schema and data, to a single SQL file.

  • Query data file…

    I create one view per chosen CSV, JSON or Parquet file, read on the fly each time you query it without copying its data into the database, and I open an in-memory database first if none is open.

  • In-memory database and Save as…

    I work on a database that lives only in memory, named as such in the header, and Save as… writes it whole to a .duckdb file and keeps working on that file.

  • Whole database: export and import

    I dump the whole database to a folder you choose, in CSV or Parquet with the schema alongside, or read into the open database what another export left, always outside a pending transaction.

  • Attach database…

    I open another DuckDB database next to the current one, always read-only, show its content in the tree with its name in front, and Detach removes it.

  • Summary of a table

    From Data I compute the statistics of every column of the open table with SUMMARIZE and show them in Run SQL.

  • Extensions are not downloaded

    I reject INSTALL, LOAD and UPDATE EXTENSIONS before they reach the engine and explain why, because only the extensions bundled with the app exist.

  • Stop a running query

    While a query runs, Stop interrupts it inside the engine halfway through instead of waiting for it to finish.

  • Threads and memory limit

    I save the number of threads and the memory limit for this device and reopen the file with them, because the engine configuration stays locked while a file is open; the other settings are listed read-only.

  • Maintenance

    I run Checkpoint, Force checkpoint, Vacuum and Analyze on the open file and show the engine's answer under the buttons.

  • Access to the file's folder

    The first time a file outside Calíope's folder is opened for writing, I ask for access to its folder, because DuckDB writes a .wal file next to it, and I remember that folder for the next time.

  • Download sample database

    From the empty screen I open the page of the site with the public sample database, and the download is yours to decide.

File Previewer

18 functions

  • Read-only viewer that works offline

    Shows a local file interpreted by its extension without editing, saving or running anything, and opens even when no server is connected.

  • Open… a file

    The Open… button picks a .md, .sql, .json, .csv, .tsv, .rtf, .txt or .log file from disk, and the empty screen lists the types it reads.

  • Recent files

    Keeps the last eight files that read correctly, with a lasting permission, so I can reopen one after relaunching the app without looking for it again.

  • Open from outside Calíope

    A file opened with Calíope from the Finder or shared from the Files app lands here, except a .sql, which goes to the SQL Editor.

  • Markdown as a document

    Draws headings, lists, checklists, quotes, pipe tables and fenced code from a Markdown file, with SQL blocks highlighted and images shown by their alternative text.

  • RTF as a document

    Reads a rich-text file as a document that keeps headings, lists, emphasis, links and alignment, and says at the foot that the typography is Calíope’s.

  • SQL with highlighting, never run

    Shows a .sql file in monospace with line numbers and syntax highlighting, with no run button, and switches to plain text above 500 KB saying so at the foot.

  • Reindented, coloured JSON

    Reindents a JSON file with two spaces per level and colours it without reordering keys, warns when it isn’t valid, and shows it as on disk above 2 MB.

  • Fold JSON objects and arrays

    The triangle in the margin hides a container and leaves a summary with its member count, and Collapse all and Expand all fold the whole file.

  • CSV as a table

    Draws a .csv or .tsv as a table with row numbers and a fixed header, detects and names the separator, and says when rows or columns were left out.

  • Plain text with line numbers

    Shows .txt, .log and any unrecognised extension as is, in monospace with line numbers, and splits lines longer than 2,000 characters with a ↳ mark.

  • Text encoding detection

    Reads UTF-8, UTF-16 with its byte-order mark, Windows-1252 and ISO-8859-1, names the encoding in the header, and refuses a binary file instead of showing garbage.

  • Automatic refresh when the file changes

    Watches the file while it is open, redraws it on its own when another program saves it, keeping the reading position, and says so when the file is gone.

  • Reload

    The Reload button reads the file again and re-arms the watch if it had lost the file.

  • Large files, read up to 5 MB

    Reads the first 5 MB of a large file and says at the top how much of it is being shown.

  • Close

    The Close button lets go of the file, stops watching it and returns to the empty screen with the recent list.

  • Quick Look

    The eye button or the space bar shows the file in the system viewer, which also opens what the previewer doesn’t interpret: PDF, images, office documents.

    Not on iPad iPhone Apple Vision ProHelp: Open a file and return to recents

Error log

14 functions

  • Log of what failed in the app

    Keeps one row per app failure with its date, severity, area, connection profile and device, refreshes as soon as a new error arrives, and opens even with no server connected.

  • Filter by severity, area and profile

    Narrows the list to warnings or errors, to one area of the app and to one connection profile, with the choices built from what the log holds.

  • Error detail

    Opens a row in full, with its code, origin and the technical text that support needs.

  • See the solution for an error

    When the error has a help topic of its own, takes you from the row or its detail straight to that topic.

  • Copy an error

    Copies a row as plain text, in the same format as the export, to paste into a support message.

  • Export the log

    Saves the rows on screen, with the current filters, to a plain-text file.

  • Find the log file

    Shows where the log is stored on this device and takes you to it.

  • Empty the log everywhere

    Deletes every row on this device and the copy in iCloud after a confirmation, so nothing comes back on the next sync.

  • Sync the log through iCloud

    Mirrors the log in your private iCloud so each device sees what failed on the others, asks before moving data either way and says on screen what is pending or failed.

  • Retention

    Keeps rows for 90 days by default, or the days chosen in Settings, prunes older ones locally and in iCloud, and shows the period in the footer.

  • Turn the log on or off

    When the log is off, says so instead of showing an empty list, and turns it back on with one button.

  • Repeated failures recorded once

    A failure that repeats on its own is recorded the first time and again only if it changes, recovers and fails again, or keeps going for six hours.

  • No passwords in the log

    Never stores a password, not even truncated, and names the server by its profile alias instead of host, port and user.

Global search and replace

14 functions

  • Database to search

    I pick one database in the header, and changing it forgets the previous results so a replace never writes to the old one.

  • Tables to scan

    I tick the tables in the schema tree, with Select all and Clear, and each table shows its match count once the search has run.

  • Cost before scanning

    Before I search, a line says how many tables will be read in full and how much they take up, because a search inside a value cannot use an index.

  • Match case

    With Match case on, the search finds exactly what the replace would change, and the mismatch warning goes away.

  • Stop the search

    While the search runs, Stop ends it, and it also appears in the Activity panel so I can leave the tab and come back.

  • Matches by table and column

    Each table with matches unfolds into its columns with their type and the number of rows that contain the text, and tables that could not be read are listed apart.

  • Sample rows

    Unfolding a table brings up to five sample values per column from the server, so I can see what the matches look like.

  • Open in SQL editor

    Next to each sample, a button opens the SQL editor with the SELECT for that column already written.

  • Found versus replaceable

    When the search ignores case and the replace would not, a warning gives both figures and each column shows how many of its rows are really replaceable.

  • Columns that cannot be replaced

    A column the replace cannot write stays in the list with a padlock and its reason: computed, closed list of values, primary key or a key with no repeats.

  • Replace with mandatory review

    Replace… opens a review that lists tables, columns and rows, shows before and after computed by the server and the foreign keys at stake, and does not write until every preview has arrived.

  • View script

    View script shows the full SQL of the replace so I can copy it and run it myself, and it writes nothing.

  • What the replace did

    After writing, a line under the search field gives the rows replaced, warns when they do not match the announced figure and names the tables that failed.

Reports

21 functions

  • New report

    I create a report in the header, and it is born with the source and the shape of the session family: SQL on a relational server, a find on MongoDB, a key scan on Redis.

    Help: Reports
  • Report list and filter

    I see my saved reports in alphabetical order with their source, filter them by name, and the empty list says whether there are none or the filter hides them.

    Help: Reports
  • Name and save

    I name the report and save it; switching to another report never overwrites an edit I have not saved, and the library on disk is merged, never replaced.

    Help: Reports
  • Duplicate a report

    From the context menu of a row I make a copy named after the original and open it.

    Help: Reports
  • Delete a report

    From the context menu of a row I delete the report, and its file, if it had one, is released first.

    Help: Reports
  • Query text

    I write the query in a highlighted editor that never turns quotes into typographic ones; the text travels opaque to the source, which is the one that reads it.

    Only on MySQL · MariaDB PostgreSQL SQL Server ClickHouse Oracle MongoDBHelp: Reports
  • MongoDB collection and shape

    On MongoDB I name the collection and choose between a find with its filter and an aggregate with its pipeline, both as Extended JSON.

  • Redis key scan

    On Redis the report is a key scan turned into a table: pattern, type, columns, hash fields and a row cap, with SCAN and never KEYS.

    Only on RedisHelp: Redis reports
  • Run a report

    I run the report with Run or ⌘↩, the button is off with its reason in sight when it cannot run, and the result shows its rows and how long it took.

    Help: Reports
  • Output contract

    When what arrives does not match what the report declares —a missing or unexpected column, a changed type, a capped table— I am told above the result instead of seeing a different table in silence.

    Help: Reports
  • Stop a running report

    While it runs I stop it with Stop or ⌘., and the button is only there when the source can really stop it.

    Only on MySQL · MariaDB PostgreSQL SQL Server ClickHouse Oracle RedisHelp: Reports
  • Script with preparation

    Before the final SELECT I can set session variables and build and fill temporary tables, all on one connection; anything outside that closed list is rejected with its statement number before anything runs, and the temporaries are dropped at the end.

    Only on MySQL · MariaDB PostgreSQL SQL Server ClickHouse OracleHelp: Preparing before reading
  • Declare parameters

    In a sheet I declare each parameter with name, type, label, whether it is required and its default, and it offers me the placeholders the query already uses so I add them with the exact name.

  • Fill in parameters

    I fill in the declared parameters in a form I can show or hide, each field checks its type as I type and a required one without a value blocks the run.

  • Output columns

    In the output sheet I hide, reorder and retitle columns and give each a format and an alignment, without rewriting the query.

  • Footer aggregates

    I add sums, averages, minimums, maximums and counts per column at the foot of the result, and nulls do not count.

  • Result chart

    In the output sheet I turn on a bar, line or pie chart over a label column and one or more numeric columns, drawn above the table and described for VoiceOver.

  • Export

    I export what the output declares to CSV, TSV, JSON, XML, Excel, HTML, Markdown, text or a paginated PDF, always through the system save panel.

    Help: Exporting
  • Print

    With a result on screen I print the same table I see from the File menu.

    Not on iPad iPhone Apple Vision ProHelp: Print a report
  • Schedule a report

    I schedule a report daily, weekly, on weekdays, monthly or every N hours; it only runs with the app open, uses each parameter’s default, and records a skipped run with its reason.

    Only on MySQL · MariaDB PostgreSQL SQL Server ClickHouse OracleHelp: Scheduling a report
  • Run history

    Every run leaves its row with status, trigger, parameters, rows, duration, device and address; I filter, search, copy, delete or clear it, it stays on this device and rows older than 180 days are deleted.

Replication topology

13 functions

  • Choose the group

    Picks, from the toolbar, which of the declared groups the tool shows; the first one is shown when none is chosen.

    Only on MySQL · MariaDBHelp: Replication topology
  • Declare a replication group

    I name the group and pick, from my saved connections, the primary and its replicas in the order I want to see them, with its polling interval; only connections whose replication the tool can poll are offered, and it needs at least two.

    Only on MySQL · MariaDBHelp: Declaring a replication group
  • Edit, pause or delete a group

    Lists the declared groups with how many replicas each has and how often it is polled; each row has a switch that stops its polling without deleting it, a button to edit it and another to delete it.

    Only on MySQL · MariaDBHelp: Declaring a replication group
  • Members whose connection was deleted

    When a saved connection that was a replica of a group is deleted, the group keeps going without it and says how many members were removed; if it was the primary, the group is marked instead of disappearing.

    Only on MySQL · MariaDBHelp: Declaring a replication group
  • Polling the whole group

    While Calíope is open, polls every member of each active group at the same time at its interval, with a button to poll now, and says at the foot when it measured, how long it took and how often it repeats; a member that keeps failing writes one entry in the error log, not one per cycle.

    Only on MySQL · MariaDBHelp: Declaring a replication group
  • Who answered and who didn't

    Says how many members were reached out of how many, and names above the diagram the ones that were not, each with its reason: it doesn't answer, its connection no longer exists, its engine isn't polled here or it was declared with another role.

    Only on MySQL · MariaDBHelp: Replication topology
  • Contradictions with what I declared

    Warns, without reconfiguring anything, when a replica reads from a server that is not the declared primary or another member, and when the primary sees fewer connected replicas than the ones declared to read from it.

    Only on MySQL · MariaDBHelp: Replication topology
  • Topology diagram

    Draws the primary in the centre and the replicas around it, each with the symbol and colour of its state and an arrow from where it reads, which comes from another replica in a cascade and is dashed when a thread is stopped; it can be hidden, and VoiceOver reads it as a list.

    Only on MySQL · MariaDBHelp: Replication topology
  • The primary at a glance

    Shows the primary's state, version, current binary log file and position, executed GTID, how many replicas it sees connected and its address; when it can't be read, the reason.

    Only on MySQL · MariaDBHelp: Replication topology
  • Replica table

    Lists each replica with its state by symbol and name, channel, binary log file and position, lag, IO and SQL threads and the detail that explains a warning; in a narrow window only the replica, its state and its lag remain, and the rest is in its detail.

    Only on MySQL · MariaDBHelp: Replication topology
  • Lag that doesn't lie, and GTID drift

    Shows No reading instead of a zero when the server has no lag figure, and next to it how many transactions of the primary the replica has not executed, discounting what the primary advanced while the group was being polled, which it reads twice.

    Only on MySQL · MariaDBHelp: Why lag isn’t enough
  • Member detail

    Tapping a row opens everything about that member: declared and observed role, address, version and when it was measured, each channel with its source, threads, binary log, GTID drift and last IO and SQL errors, and for the primary its binary log state; it moves to the previous or next member and copies the summary.

    Only on MySQL · MariaDBHelp: The detail of a group member
  • Topology the server declares

    Opened from a session on a server that declares its own clusters, shows them instead of groups: per cluster, how many replicas answer out of how many with the missing ones by name, a diagram with one column per shard, and the table with address, state and the tables each replica replicates, plus what Keeper says of a replica that doesn't answer.

    Only on ClickHouseHelp: Replication topology

Slow query log

18 functions

  • Settings, Entries and By statement views

    Switches between the server's log settings, the executions it recorded and the summary by query shape, and only offers the views this server can fill.

  • Log status cards

    Shows what the server answers right now: whether it is recording, with which threshold and where it writes, with the path of the server's file when it has one.

  • Turn the log on or off

    Turns the server's slow query log on or off from here and reads it back, so what the switch shows is what the server applied.

    Only on MySQL · MariaDB PostgreSQL ClickHouseHelp: Settings, engine by engine
  • Slow query threshold

    Lets me type the threshold or move it with minus and plus, sends it with Apply, refuses a negative one and reads back what the server kept.

    Only on MySQL · MariaDB PostgreSQL ClickHouse OracleHelp: Settings, engine by engine
  • Where the log writes

    Chooses whether the server writes the log to its table, to its file or to both, because only what goes to the table can be read from a client.

    Only on MySQL · MariaDBHelp: Settings, engine by engine
  • Where these settings are really changed

    When the server won't let me change the log from here, says where it is changed instead, and under the controls says whom a change reaches.

  • Variables around the log

    Lists the variables this server publishes around its log, with the names it gives them, as information that is changed elsewhere.

    Only on MySQL · MariaDB PostgreSQL SQL ServerHelp: Settings, engine by engine
  • Why this view is empty

    Tells apart a quiet server from a log that is off, writes to a file or lacks what the summary needs, and links to the topic that explains how to fix it.

  • Recorded executions

    Lists the executions the server recorded, from the slowest down, with time, user, database, duration and rows, plus the columns this engine publishes.

    Only on MySQL · MariaDB ClickHouse OracleHelp: The slow query log
  • Summary by statement

    Groups the server's work by query shape with its calls, total, mean and maximum time, and says how many shapes this account isn't allowed to read.

  • Detail card of a row

    Opens a row with its full text and every figure the server noted, says whether a summary's text is normalized and explains that the time is the server's clock.

  • Copy the query

    Copies the full text of a row, from its context menu or from its card.

  • Send to the editor

    Leaves the query of a row in the SQL Editor without running it, so I decide whether to profile it or ask for its plan.

  • Empty the log

    Deletes the executions the server recorded after a confirmation that says how many go, counted on the server and not on the loaded page.

    Only on MySQL · MariaDB ClickHouseHelp: Empty the log and reset the summary
  • Reset statistics

    Resets the summary by statement for the whole server after a confirmation that says what goes, including the executions where both are the same table.

    Only on MySQL · MariaDB PostgreSQL ClickHouseHelp: Empty the log and reset the summary
  • How many rows to read

    Chooses 50, 200 or 1,000 rows per read, and the footer warns when the list reaches that limit so a count isn't read as a total.

  • Hide Calíope's own

    Hides, on by default, what Calíope queries by itself, never what I wrote in the editor.

    Only on ClickHouseHelp: The slow query log
  • Automatic refresh

    Rereads the open view every ten seconds and says when what I'm looking at was read, and lets me turn it off or reread right away.

MongoDB collections

13 functions

  • Choose the database

    The menu at the top switches between the server's databases; on opening I start on the profile's database, or the first one that isn't a system database.

  • Collections of the database

    Lists the collections of the chosen database with an icon for each kind and marks views and capped collections, and says so in the list when the server won't give them to me.

  • Filter collections by name

    Narrows the list of collections to the ones whose name contains what I type, without telling uppercase from lowercase.

  • Refresh databases and collections

    Rereads the server's databases and the collections of the chosen one, and reloads the documents on screen.

  • Documents of the collection

    Choosing a collection brings its first 50 documents, and coming back to the tab with a collection already chosen brings them again.

  • Documents as foldable trees

    Draws each document as a card with its _id and number of fields, and each field with its key, its value and its type, unfolding nested documents and arrays.

  • Load more documents

    At the end of the list brings the next batch of 50 from the open cursor, and the cursor is closed when I change collection or leave the tab.

  • Count of documents

    The footer says how many documents the collection has, counted by the server, and how many are loaded.

  • New document

    Opens an empty editor where I write a document as extended JSON and insert it into the chosen collection.

  • Edit a document

    The pencil opens the whole document as extended JSON, Format reindents it and checks that it reads, and saving replaces it on the server by its _id.

  • Delete a document

    The trash can deletes the document by its _id after asking, and with a confirming environment tag the question names the tag and isn't asked twice.

  • Read-only views and sessions

    A view can't be edited and the footer says so, and with a read-only environment tag I don't offer new, edit or delete.

  • The chosen collection carries over

    The database and collection I choose here are the ones the other MongoDB tools of the session work on, and they survive changing tabs.

MongoDB query

10 functions

  • Choose the collection to query

    The Collection menu lists the collections of the database chosen in Collections, and the choice is the same one the other MongoDB tools use.

  • Find with filter, projection and sort

    In Find mode I write the filter, the projection and the sort as JSON documents, and an empty field is simply left out of the command.

  • Run an aggregation pipeline

    In Aggregate mode I write the whole pipeline as a list of stages, and a pipeline that isn't a list, or a stage that isn't a document, is caught before anything is sent.

  • Extended JSON keeps the types

    The query fields accept Extended JSON, so a $oid or a $date reaches the server as an ObjectId or a date and not as text, and the fields are colored as MongoDB syntax.

  • Run the query

    Run (⌘↩) sends the query to the chosen collection; before the first run the tool asks for one instead of claiming the collection is empty, and a server error stays in a bar inside the tool.

  • Results as a document tree

    The results are shown with the same document tree as Collections, but they can't be edited here: an aggregation has no original document to return the changes to, and a projection would lose fields on saving.

  • Load more results

    Results arrive 50 at a time, and Load more asks the server's cursor for the next batch while there is one.

  • Close the abandoned cursor

    The open cursor on the server is closed when a new query runs and when I leave the tool, because an abandoned one stays alive for ten minutes holding memory.

  • An aggregation that writes goes through the label

    Find only reads; an aggregation with $out or $merge writes a collection, so with a read-only environment label it isn't run and the notice says why, and with a label that confirms writes it asks first.

MongoDB indexes

4 functions

  • Choose the collection whose indexes I see

    The Collection menu of the bar lists the collections of the chosen database without the views, and the choice is the same one the other MongoDB tools use.

  • See the indexes of a collection

    The list shows each index by name with its keys underneath and its properties as tags, and it is read again whenever the database or the collection changes or I press Refresh.

  • Create an index

    New index opens a sheet with the name, the keys written as a document and the switches for no repeated values, sparse and expiry, and if the server refuses it its message stays in the open sheet.

  • Drop an index

    Each index except the _id one has its trash can, and dropping it asks for confirmation first because the queries that used it will scan the whole collection.

MongoDB server

8 functions

  • Switch between Server, Operations and Users

    A segmented control in the bar chooses what the tool shows, and each section is read when I open it; Refresh reads it again.

  • See the state of the server

    Server shows the host, the version, how long it has been running, the connections in use out of those available, the resident and virtual memory, and the operations counted since it started.

  • See the replica set the server belongs to

    When the server is a member of a replica set, Server also shows the set’s name and whether this member is the primary or a secondary.

  • See what the server is doing right now

    Operations lists each operation in progress with its type, its namespace, the seconds it has been running and the connection it comes from, and marks the ones waiting for a lock.

  • Include idle connections and resting server threads

    Include idle adds the open connections that are doing nothing and the server’s resting threads, and the list is read again when I switch it.

  • Stop an operation

    Stop operation asks the server to end an operation that comes from a client; the server’s own threads carry no button, because the request would not stop them.

  • See the users of every database

    Users lists every user on the server as user@database, because a user lives in a database, with the roles it holds beside it.

  • See the custom roles of the chosen database

    Below the users come the custom roles of the database chosen in the other MongoDB tools, with how many privileges each one grants; the section title names the database.

MongoDB commands

7 functions

  • Choose the database the command goes to

    The menu at the start of the bar picks the database the command is sent to, because some commands are only accepted in admin; until I pick one it uses the database chosen in Collections.

  • Write a command as a document

    I write the command as a JSON document in an editor with MongoDB colouring, and if the text is not valid JSON Calíope says where before sending anything.

  • Frequent commands already written

    The Examples menu fills the editor with a frequent command, and the ones that act on a collection carry a marker where its name goes.

  • Run the command and read the full reply

    Run (⌘↩) sends the document as it is and the reply arrives as a tree, folded each time, so I can ask for statistics, validate a collection, change a server parameter or set a validator without opening mongosh.

  • Rejections and partial writes, with their reason

    If the server rejects the command the notice brings its code and name, and a write accepted halfway answers ok: 1 with the rejected document inside writeErrors.

  • The environment tag decides what writes

    Calíope keeps a list of the commands that read and treats any other as a write, even one it does not know: under a read-only tag it is not sent, and under one that confirms it asks first.

  • Each command goes to the query log

    What I type and run here is written to the query log on one line, with the database, the time it took and the error if there was one.

MongoDB profiler

9 functions

  • Choose the database whose profiler I see

    The database menu of the bar picks the database, because the profiler level belongs to each database and not to the server; everything read and written refers to the chosen one, and it is the same choice the other MongoDB tools use.

  • See the level, the threshold and the sampling of the database

    Three cards show the level (off, slow operations or all), the threshold in milliseconds and the sampling rate as the server publishes them, with a note that the level is per database and returns to the startup configuration when the server restarts.

  • Change the level, the threshold and the sampling

    The level selector, the threshold field with its −50 and +50 buttons and the sampling field between 0 and 1 change nothing until Apply; then Calíope writes the three together and reads the profiler again, because the server answers with the previous values.

  • See what the profiler recorded

    The list shows the last 200 operations of system.profile, newest first, with time, operation, namespace and milliseconds and, when the server records them, the plan, the documents and keys examined, the documents returned and the client; the footer says when the batch reached its ceiling.

  • Read the profiler again on its own or on demand

    The automatic refresh switch reads the state and the list every ten seconds, the time of the last reading is shown next to it, and Refresh reads everything again including the list of databases.

  • Open the whole recorded document

    A double click or Return on the Mac, a tap on the row elsewhere, or Show the document in the row menu, opens the recorded document in a sheet, without editing, because system.profile documents have no _id.

  • Copy the recorded document as JSON

    Copy the JSON, in the row menu and in the document sheet, puts the whole recorded document on the clipboard as JSON.

  • Copy the command and open Query

    Copy and open Query copies just the command of the recorded operation and opens the Query tool, so I can paste it there and run it again.

  • Empty what the profiler recorded

    Empty the profiler asks first, naming the database and how many rows go, and then drops system.profile of that database: Calíope turns the profiler off, drops the collection and restores the level it had, even when the drop fails.

Key browser

20 functions

  • Walk the keys in batches

    I ask the server for the keys with SCAN, a batch at a time and never with KEYS, and the footer says how many I have walked and whether the walk finished.

  • Load more keys

    While the walk has keys left, Load more keys asks for the next batch and adds it to the list without starting over.

  • Filter by pattern

    The field above the list is a MATCH pattern such as app:* that the server applies once you stop typing; it is not a search through the contents.

  • Keys grouped by prefix

    I build the groups myself by splitting the key names, each group says how many keys hang from it, and the arrow keys walk the list while → and ← open and close a group.

  • Choose the separator

    The Separator menu in the bar picks the character that splits the names into groups, and I rebuild the tree without asking the server again.

  • Type and expiry in the list

    Each key shows its type with a glyph and a name, and its expiry, telling No expiry apart from No longer exists.

  • Walk a cluster

    In a cluster I walk every primary node, the footer says how many answered, and a node that did not is named with its reason without stopping the others.

  • Refresh

    Refresh starts the walk over with the current pattern and database.

  • Key details

    The panel on the right shows the selected key with its type, an expiry that keeps counting down, its size, its internal encoding and its memory.

  • Read the value

    I show the value according to its type and read a large one in chunks with a button for the next one, always saying how much of how much is on screen.

  • A stream and its consumer groups

    A stream shows first its data, then its consumer groups with their pending entries and their lag, and last its entries.

  • Copy a row of the value

    The context menu of a value row copies it, next to editing and removing it.

  • Set or remove the expiry

    Expiry… opens a sheet with the current expiry where I set a new one in seconds or, if the key expires, Remove Expiry.

  • Rename a key

    Rename… warns if the new name already exists and only overwrites that other key with Replace; the row keeps its place and stays selected.

  • Delete a key

    Delete Key… always asks first, naming the key, its type and its size as read just now, and the key leaves the list without reloading it.

  • Edit a string

    Edit Value… changes a string and keeps its expiry; a binary value or one over 64 KiB is not edited here, and the panel says why.

  • Add and edit elements

    In a hash, a list, a set or a sorted set I add or edit an element from its row or from the add button, and the row changes in place without reloading what was loaded.

  • Remove an element

    Remove takes a field or a member out after asking, and warns when it is the last one, because Redis deletes a key once it is empty.

  • Environment tag guard

    With a read-only tag I do not offer expiry, renaming, deleting, editing, adding or removing; with a tag that confirms writes, every change asks first with the tag in view.

  • Changes go to the command log

    Every command the browser sends, reads and writes alike, is recorded in the log of what Calíope ran.

Server panel

12 functions

  • Read the server every two seconds

    While the panel is on screen I reread INFO every two seconds; Refresh rereads it at once, and the bar shows the time of the last reading.

  • Memory used

    I show used_memory with its maxmemory limit and the percentage, or that there is no limit, plus the eviction policy and the peak.

  • Fragmentation

    I show mem_fragmentation_ratio with the memory the process takes in the system, and explain what a value above or below 1 means.

  • Hit rate

    I show the share of reads that found their key, counted since the server started and labelled that way, with the hits and misses; with no reads yet I say so instead of 0 %.

  • Expired keys

    I show the keys that expired since the server started, with the keys evicted for lack of memory underneath.

  • Connected clients

    I show the connected clients against maxclients, when the server lets me read it, and the blocked ones.

  • Operations per second

    I show the operations per second as the server averages them (instantaneous_ops_per_sec), never as a difference of my own, with the total commands processed.

  • Near the limit

    When memory or clients pass 90 % of their limit, the card says so with a glyph and a word, not with colour alone.

  • Persistence

    I say whether AOF is on, which RDB saves are scheduled, when the last save was with its time zone and how many changes are unsaved; a failed save, a load in progress or a server with no persistence at all come first.

  • Pub/sub

    I take a snapshot of the channels that have subscribers, with how many each has, and of the pattern subscriptions, without subscribing to anything; if the server refuses PUBSUB I say so.

  • Server identity

    The footer gives the version, mode, role, protocol and uptime, and in a cluster it names the node the panel reads.

  • Keep the last reading when one fails

    If a reading fails after a good one, I keep showing the previous figures under a banner that gives the error and says they are not current; with no earlier reading I show the error with a retry.

Memory analyzer

10 functions

  • Analyze the memory by prefix

    Analyze walks the keys of the database with SCAN, measures each one with MEMORY USAGE and adds up what it measured by prefix, splitting the names by the same separator as the key browser.

  • Key limit

    Before analyzing I let you choose how many keys at most get measured, from 10,000 to 5,000,000, with 500,000 if you do not change it.

  • Stop the analysis

    While it runs, Analyze becomes Stop, which is also in the Activity panel, and closing the tab or the session stops it as well.

  • Progress of the analysis

    I show the keys measured out of how many DBSIZE or the limit allows, with a bar when there is a fraction and the elapsed time when there is none, and until it ends the previous analysis stays on screen.

  • What the figure is of

    Above the grid I say how much the measured keys take, whether they are all the keys of the database by DBSIZE, how much the whole server uses by used_memory, that a collection is measured by sampling, and how many keys vanished or the server would not measure.

  • Warn when it is a sample

    If the analysis stopped at the limit, was stopped, or a cluster node did not answer, I warn with a glyph and the text that it is a sample and that the percentages are of what was measured, not of the database.

  • The grid by prefix

    Each prefix has its memory, its keys and its share of what was measured, groups open with the chevron or with the → and ← keys, a branch that was not measured does not appear, and with no keys I say there is nothing to measure.

  • Sort by memory or by keys

    The sort menu in the bar sorts by memory or by keys, largest first, and when the grid has room for its columns the column header does the same.

  • Analyze a cluster

    In a cluster I walk each primary with its own connection and add them up, DBSIZE and used_memory included, and I say how many nodes answered.

  • When an analysis fails

    If an analysis fails after a good one, I keep showing the previous result under a banner with the error, and with no earlier result I show the error with a retry.

Slow commands

15 functions

  • Read the log every five seconds

    While the tab is on screen I reread the server’s SLOWLOG every five seconds; Refresh rereads it at once, and the bar shows the time of the last reading.

  • Threshold and log size in words

    A card says what the server has now: the threshold in microseconds, whether it logs every command or is switched off, and how many entries it keeps.

  • Which node in a cluster

    In a cluster each node keeps its own log; the card names the node I read, the one in the profile.

  • Change the threshold and the size

    Change settings… opens a sheet to log commands slower than a number of microseconds, log everything or switch the log off, and to set how many entries it keeps; I write with CONFIG SET and show what the server reads back.

  • The logged commands

    I list what the server logged: when it started by the server’s clock, with its time zone, how long it ran, the command on one line with an AUTH masked, and the client when the server sends it.

  • Why the list is empty

    An empty log says whether no command has gone over the threshold or whether the log is switched off and nobody is noting anything.

  • Sort by time or duration

    On the Mac I sort by clicking a column header; outside the Mac the sort menu in the bar chooses Most recent or Slowest.

  • Filter what was read

    The field filters by command or client over what I already read, without going back to the server, and the footer says how many of the total are shown.

  • When the server keeps more than I read

    I read at most 1,024 entries; if the server keeps more, the footer says how many I read and how many it keeps.

  • An entry in full

    Choosing an entry shows the whole command, the time with its zone, the duration in ms and µs, the client’s address and name, the entry number and how many arguments the server cut; on the Mac below the grid, outside the Mac in a sheet.

  • Copy the command

    Copy command puts the command on the clipboard, from the detail or the context menu.

  • Take the command to the console

    Open in console leaves the command written in the Redis console, without running it; on the Mac a double click or Return does the same.

  • Clear the log

    Clear log deletes every entry on the server with SLOWLOG RESET; it first asks, saying how many go, counted at that moment, and if one arrives meanwhile I say it stayed.

  • Respect the environment tag

    With a read-only tag I offer neither changing the settings nor clearing the log; with a tag that confirms writes, both ask first with the tag in view.

  • When a reading fails

    If a reading fails after a good one, I keep showing the previous entries under a banner that gives the error and says they are not current; with no earlier reading I show the error with a retry.

Connected clients

12 functions

  • Read the client list every five seconds

    While the tab is on screen I reread CLIENT LIST every five seconds; Refresh rereads it at once, and the bar shows the time of the last reading.

  • Filter what was read

    The filter field narrows the list by name, address, last command, user, library or id without going back to the server; if nothing matches, the list says so.

  • Each connection with its data

    Every open connection shows its name, id, address, time connected, time idle, database, last command, flags and memory. On the Mac it is a grid; outside the Mac each client is a row with the same data labelled, stacked at accessibility sizes.

  • User and library when the server sends them

    The ACL user (Redis 6 and later) and the library the client announced (Redis 7.2 and later) appear only if some connection carries them; a column nobody fills is not drawn.

  • Sort the list

    On the Mac the grid sorts by clicking a column header; outside the Mac a menu in the bar sorts by id, most idle, most recent or most memory.

  • Calíope’s own connections, marked

    The connections of this session carry a glyph and the label This session, are recognised by id rather than by name, and cannot be disconnected from here; the footer says so.

  • Disconnect a client

    Disconnect… closes the chosen connection (CLIENT KILL ID) after a question that names the client, its address, its id and its last command; afterwards the row leaves the list in place. With a read-only environment tag it is not offered, and a tag that confirms writes is named in the question.

  • A client that had already left

    If the client left between the reading and the confirmation, the server closes zero connections: that is not an error, I say it was no longer connected and remove the row.

  • Copy a client’s address

    The context menu of a row copies its address, own connections included.

  • In a cluster, the clients of one node

    In a cluster the list is the one of the profile’s node, and a notice names it: each node has its own clients.

  • Keep the last reading when one fails

    If a rereading fails after a good one, the previous list stays on screen under a notice that says it is not the current one and why; before the first reading, the error comes with a retry.

Command console

15 functions

  • Type a command and run it

    Run —or Return— sends the line to Redis over the same session as the other tabs; on the Mac Option+Return breaks the line without running it, and outside the Mac the return key always runs.

  • Split the line like redis-cli

    Arguments are separated by spaces, single or double quotes join what has spaces, and inside double quotes \n, \t and \xHH work; a quote left open is not sent, and the output says why.

  • Command history

    The up arrow on the first line brings back the previous command and the down arrow on the last line the next one, as do the two history buttons; it keeps the last 200 lines, also those not run, without two equal ones in a row.

  • Clear the output

    Clear empties the output and leaves the history as it was.

  • Keep everything when changing tab

    The output, the history and what is typed stay when I move to another tab and come back; the output keeps its last 200 entries.

  • Each reply type shown as what it is

    The integer carries its label, a list is numbered, a map goes in pairs, a set is marked as unordered, the error comes with its glyph and its server prefix, binary goes in hexadecimal with its length, and null is not the empty string.

  • Cut a very long reply

    A reply of more than 2000 lines is cut, and the notice sends to Keys, which goes through the keys by pages.

  • Who answered in a cluster

    In a cluster, under each reply I say who answered: the primary of the slot of the first key or, if the command has no key, the profile node, which counts only its own data.

  • Refuse what harms the server or the session

    KEYS, MONITOR, the subscriptions, SHUTDOWN, DEBUG, the protocol switches, SELECT and the transactions are not sent: the output gives the reason of each one, and below it What not to do opens the DBA Handbook topic.

  • Cap the wait of a blocking command

    BLPOP, BRPOP, BLMOVE, XREAD BLOCK, WAIT and the other blocking commands run with a wait under 10 seconds; with 0 or more, they are refused, because they would hold a connection that every tool of the session uses.

  • Type the name before erasing or changing topology

    FLUSHDB, FLUSHALL, REPLICAOF, SLAVEOF, CLUSTER RESET and CLUSTER FAILOVER show a band that names the server and the database, and run only after typing the command name; Cancel leaves it unsent, and the output says so.

  • Respect the environment label

    If the profile label protects the session, I ask the server which commands write: in read only they are not sent and the output names the label, and in confirm they run only after typing their name.

  • Say when no reply came

    If the connection drops before the reply, the line stays in the output with the error text and the cut also reaches the error bus; a server -ERR is not this, it is a reply.

  • Record what runs

    Every command that reaches the server stays in the command log, with the AUTH password covered.

  • Receive a command from Slow commands

    Open in console in Slow commands leaves the command typed in the field, not run, so it can be checked before pressing Return.

Node topology

13 functions

  • Reread the topology every five seconds

    While the tab is on screen I reread the topology every five seconds; Refresh rereads it at once, and the bar shows the time of the last reading.

  • Cluster or standalone node, decided by the session

    The same screen takes the shape of the session: with a cluster it shows shards and slots; with a standalone node, the node and its replicas, without the slot column or the cluster state.

  • Summary: who answers and who does not

    At the top, how many nodes answer out of how many were asked; in a cluster also how many primaries, on a standalone node how many replicas. The ones that did not answer are named by their address, not just counted.

  • Cluster state and assigned slots

    In a cluster the summary shows cluster_state, with its glyph, and how many of the 16384 slots have an owner; a failed state or missing slots are marked.

  • Diagram by shard

    Diagram draws one box per node, grouped by shard: the primary on top with its slot range, an arrow, and its replicas underneath with their lag. A node that hangs from no known primary goes alone, without guessing whom it follows.

  • Nodes table

    Nodes gives the same in a table: node, role, slots, link, lag in bytes and state with its reason. A column that does not apply is not drawn: no slots outside a cluster, no link or lag without replicas.

  • Replica lag in bytes

    Each replica’s lag is the primary’s offset minus its own, in bytes, not seconds. I read the primary twice; below what it moved between the two readings the replica is in sync, and only above it is marked as behind.

  • Replica on another stream or with the link down

    When a primary restarts it begins a new replication stream, and its replica has no measurable lag until it resyncs: the table says so instead of showing 0 bytes. A replica that lost its link to the primary is marked as such.

  • State of each node, with glyph and name

    Each box and row carries its state as a glyph and a word, never just a color: answered, did not answer (with the technical error beside it), refused, seen by another node but not asked, without an address, or not online in the cluster map. Of a node that did not answer nothing else is claimed.

  • Sentinel has no topology here, and says why

    A session opened against Sentinel shows no topology: the tab explains that Sentinel watches primaries and decides failover but stores no data, and that a profile pointing at the primary shows it with its replicas. Refresh is disabled.

  • The table as the alternative to the diagram

    With VoiceOver each box and each table row is read once, with the name of each column before its value, so the table tells everything the diagram draws.

  • Keep the last reading when one fails

    If a reading fails after a good one, the tab keeps showing the previous topology under a warning with the reason, saying it is not the current one; with no earlier reading it shows the error with Retry.

  • Cluster map from the opening, marked as possibly old

    If no node gives the cluster map, the tab draws the one the session read when it opened and warns that it may not be the current one.

Connections and tunnels

32 functions

  • Connections list

    The sidebar lists the saved profiles by group and by how often each one is used, with the swatch of its environment tag; a click selects a profile and a double click connects.

  • Filter connections

    A field above the list leaves the connections whose name, host, database, user, product or group match what you type, and announces how many remain.

  • Create a connection profile

    The + button creates a profile with name, family, product, host, port, user, password and default database, and the password goes to the Keychain.

  • Edit a connection

    Choosing a profile loads its data into the form, and every change is saved as you make it, with no save button.

  • Clone a profile

    Clone makes a copy of the selected profile named “Copy of …”, with its password, so a similar server is set up by changing a couple of fields.

  • Delete a connection

    Deleting a profile asks first and names what goes with it, its saved password, its query history and its stored SQL, because it cannot be undone.

  • Family and product

    The form asks for the family, the protocol Calíope speaks, and the product within it, and when the server says it is another product of the same family it proposes switching to it.

  • Alternate host

    When the main host does not answer, the alternate address is tried with the same port and credentials, and the session says it came in that way.

  • MongoDB connection string

    In a MongoDB profile an optional connection string, mongodb:// or mongodb+srv://, covers replica sets, authSource and Atlas and takes precedence over the fields above it.

  • Load server data

    Load server data asks the server for its databases, character sets and collations to choose them from a list, and marks a default database the server does not have.

  • SSL/TLS

    The SSL / TLS toggle encrypts the connection, verifies the server against the system authorities or a CA file, and takes an optional client certificate and key.

  • Files chosen on another device

    Certificates and private keys stay on the device where they were chosen, so a synced profile says which of its files are missing here and lets you choose them again.

  • SSH tunnel

    The SSH Tunnel toggle reaches a database behind a bastion with Calíope’s own SSH client, and the profile’s host and port become the database as seen from the bastion.

  • SSH authentication

    The tunnel signs in to the bastion with a password or with an ED25519 or ECDSA private key in OpenSSH format, with or without a passphrase.

  • Verify the SSH server key

    Before trusting a bastion, Calíope shows its SHA256 fingerprint, says whether it is new or has changed since the last time, and waits for you to trust it or update it.

  • SSH tunnel errors

    Each way the tunnel can fail, from a rejected password to an unsupported key or a bastion that closes before showing its key, comes back as its own message that says what to check.

  • SSH tunnel notifications

    With the tunnel and automatic reconnection on, a local notification says when the tunnel dropped and when the reconnection restored it, at most once a minute per host.

  • Test the connection

    Test connection opens a real connection with the form’s data, tunnel included, and says whether it worked, the server version and which address answered.

  • Connect to the server

    Connect opens the session with the engine’s own driver, loads the schema tree and enters the workspace, and a failure opens a sheet that says what happened.

  • Auto-reconnect

    With this toggle on, changing the active database over a cut connection reopens the whole session, SSH tunnel included, and repeats the change.

  • Biometrics before connecting

    With the switch in Settings on, Connect first asks for Touch ID, Face ID or Optic ID, and if it fails the connection does not go ahead.

  • Connection groups

    Profiles are gathered in named groups that are created, renamed, reordered and deleted, and a profile moves between groups from its menu or its form.

  • Environment tags

    A catalog of tags with your own name and color, started from Local, Staging or Production if you like, marks each connection with the environment it belongs to.

  • Environment band

    A band with the tag’s name and color runs over every tool of a tagged session, and the server menu repeats it in words.

  • Protection levels

    Each tag carries a protection, none, confirm what writes or read only, that the session guard applies to every statement that writes, whichever tool sends it.

  • Import connections by dropping a file

    Dropping a connections file exported from Calíope on the sidebar checks it, says how many connections it brings and adds them without replacing any.

  • iCloud on the connections screen

    When another of your devices already syncs, the list offers to turn sync on here too, and above it says while the connections are downloading and when sync is on.

  • Open offline

    Open offline enters the workspace without a server, with the SQL editor and the tools that work on local files.

  • Change the active database

    Set as active database in the schema panel moves the session to that database without reconnecting, and the server menu shows its name.

  • Several servers at once

    Each connection is its own session with its tabs, tree and history, and the server menu at the top of the workspace switches between them and marks the busy one.

  • Add a server from the workspace

    Add server in the server menu opens the connection manager, and connecting there adds a session without closing the ones already open.

  • Disconnect a server

    Disconnect closes the active session’s pool, moves to the last session still open, and goes back to the connection manager when it was the last one.

The workspace

24 functions

  • Workspace layout

    Once I connect, the workspace shows the Tools sidebar, the bar of open tabs and the status bar, and with nothing open it tells me how to start.

  • Tools sidebar

    The sidebar lists every tool of the session grouped by theme, opens the one I click in its tab and explains what each does before I open it.

  • Collapse tool groups

    Tapping a group header folds it and leaves next to its name how many tools it hides, and Calíope remembers it after closing.

  • Filter tools

    The field at the top of the sidebar keeps the tools whose name, catalog name, summary or group match what I type, ignoring accents, and opens every group with a match.

  • Customize the Tools sidebar

    From the ⋮≡ button at the foot of the sidebar I reorder, rename and create groups, move a tool to another group, and restore the factory layout.

  • Tools offered by the session

    The sidebar offers what this session can do and hides the rest, by family of database, by what the connection supports and by a read-only environment tag.

  • Tool catalog

    Help includes a grid with every Calíope tool, its icon and the sentence that says what it does.

  • Tool bar at the bottom

    On a narrow screen the first tools of my order go in the system bar at the bottom, and the rest under More.

    Not on Mac Apple Vision ProHelp: The tools in the bottom bar
  • Bars in ornaments

    On Apple Vision Pro the tool navigator, the open tabs and each tool’s bar float outside the window in their own glass, so the whole window stays for the content.

    Not on Mac iPad iPhoneHelp: Calíope on Apple Vision Pro
  • Tabs

    Each tool opens in its own tab; I add an SQL editor tab with +, move between tabs with the keyboard and close one with its ×.

  • Tab menu and reordering

    A tab’s context menu closes it, closes the others or those to its right and moves it left or right, and I can also drag it to another place.

    Not on iPad iPhone Apple Vision ProHelp: Context menus by view (reference)
  • Activity center

    A panel shows what is running in every session, the active modes and the latest finished operations, with Go to and, when the operation allows it, Stop.

  • Status bar

    The bar at the foot reports the result of the last operation, its progress and the number of tabs, and a double click or double tap copies its message.

  • Keep awake

    The cup button keeps the Mac awake until I turn it off or close Calíope, optionally with the display on, and never turns back on at the next launch.

  • Reopen tabs on reconnect

    When I close Calíope it saves the open tabs of each server, and they come back when I connect again to that profile; it never reconnects on its own.

  • Independent sessions

    Each server I connect to keeps its own tabs, active database and query history, and switching sessions does not reconnect or reopen its SSH tunnel.

  • A window per session

    Each window looks at its own session and its own active tab, so two windows can show two servers side by side.

  • Connect from an empty workspace

    Without a server the workspace offers Connect, which opens the connection manager to pick or create a profile.

  • Connection lost notice

    If the session’s connection drops, a notice says so and offers to go back to the start or to stay where I am.

  • Offline tool strip

    The workspace without a server shows a banner and a strip with what works without a connection, and says so when a tool needs one.

  • Side panels

    A tool’s side panel shows, hides and resizes by dragging its divider, and keeps the share I gave it.

  • Canvas zoom

    A canvas zooms in, zooms out and fits to the window with its buttons as well as with a pinch, and tells VoiceOver its level.

  • Contextual help

    The ? in each tool’s header opens Help directly at the topic of that tool.

  • Screenshot

    I capture the Calíope window at a preset or custom size, fitting or filling a different aspect ratio, with a timer, and save it or copy it.

    Not on iPhoneHelp: Screenshots

Preferences and privacy

21 functions

  • Settings window

    Settings gathers in tabs everything Calíope lets me adjust —General, Text Editor, Connections, AI Assistant, Widget and, outside the Mac, About— and I open it from the connection manager or from the workspace.

  • Interface language

    General tells me which of the five languages Calíope is in and takes me to the system setting where I choose it per app, because there is no picker inside the app.

  • Query log settings

    I turn the log of successful statements and the log of statement errors on or off, choose how many days they are kept (30, 90, 180, 365 or no limit) and open the SQL Log from here when it is reachable.

  • App error log settings

    I decide whether Calíope records its own failures, for how many days, and whether that log goes to my iCloud, which starts off and is asked separately.

  • Turning off an iCloud channel

    When I turn off what one log sends to iCloud, Calíope asks whether to keep or delete the copy already up there, and keeping it is the default because deleting is the one thing that cannot be undone.

  • Usage tips

    I turn the help bubbles on or off —at most one each time I open a tool— and with «Show the tips again» they are handed out from the beginning at once.

  • Keep running in the background

    On the Mac, closing the last window can leave Calíope running in the menu bar without a Dock icon, so scheduled backups and monitoring carry on.

    Not on iPad iPhone Apple Vision ProHelp: Keep Calíope Running in the Background
  • Open at login

    On the Mac, Calíope registers itself as a login item so it starts when I log in, and if the system refuses it says why next to the switch.

    Not on iPad iPhone Apple Vision ProHelp: Open Calíope at Login
  • Local usage report

    Calíope records nothing until I turn on «Keep a usage report on this device», and then counts events, errors and tool openings in a file that stays here and that I can clear.

  • View and send the report

    I open the report as JSON, share it, save it to a file or copy it, and after saving Calíope offers to clear what it had recorded.

  • Export the configuration

    «Export…» writes a JSON file with what I choose —connections, editor state, preferences, history— and passwords only if I tick them, encrypted with a key I type.

  • Import the configuration

    «Import…» first shows what the file brings and what it would change, and I restore it merging with what I have or replacing it, with a restore point taken just before.

  • Automatic configuration backups

    Calíope copies my configuration every day or every week to iCloud —or locally without it—, keeps between 3 and 50 copies pruning only those of this device, and «Back up now» makes one at once.

  • Restore points

    Before turning iCloud on or off, erasing my data, restoring a backup or the first change of each session, Calíope keeps a local copy that I can restore or delete from its row.

  • Synced preferences usage

    I see how much of iCloud’s preferences space Calíope uses, with a warning when it gets close to the limit and which value does not fit.

  • Delete all my data

    «Delete All My Data» asks first, erases what Calíope keeps on this device, in the Keychain and in iCloud, and then shows place by place what was deleted and what failed.

  • Sync with iCloud

    «Sync Calíope with iCloud» moves my connections, editor tabs, monitoring, reports, snippets and preferences to iCloud after asking, and turning it off asks too.

  • Passwords in the Keychain

    Passwords, SSH passphrases and API keys live in the Keychain, never in a file, and they go to iCloud Keychain only if I turn on that separate switch.

  • Notifications

    I choose which local notifications Calíope sends me —a long query, the SSH tunnel, a manual backup, an iCloud failure, an unusual result, the end of the trial— with their thresholds, and «Send Test» shows how the system displays them.

  • Text editor settings

    In Text Editor I set the font size and tab width, the row cap and rows per page of results, and switch auto-indent, autocomplete, uppercase keywords, line numbers, word wrap, minimap and trailing-space trimming.

  • Saved connections

    The Connections tab lists every saved profile grouped and sorted, and from a row I test it, move it to another group or delete it after confirming, and from the footer I export or import them as JSON.

Menus, keyboard and gestures

23 functions

  • Open SQL File

    Loads a .sql file into the SQL Editor, from the File menu with ⌘O or by opening the file from Finder or Files.

    Help: File Menu
  • Recent Files

    Lists the SQL files opened before, reopens one in the editor and clears the list with Clear History.

    Not on iPhoneHelp: File Menu
  • Tab commands

    Opens, closes and reopens tabs, moves to the next or previous one and jumps to tabs 1 to 9 from the menu bar and the keyboard.

    Not on iPhoneHelp: Window Menu
  • Disconnect from the menu

    Closes the session in front from the File menu with ⇧⌘D, the same as the button in the window toolbar.

    Not on iPad iPhone Apple Vision ProHelp: File Menu
  • Print…

    Prints what the tool in front offers as a document with ⌘P, and the item dims when no tool there can be printed.

    Not on iPad iPhone Apple Vision ProHelp: File Menu
  • Capture screenshot…

    Opens the screenshot sheet from the menu bar with ⌥⌘P.

    Not on iPhoneHelp: File Menu
  • Find, Find Next and Find Previous

    Declares ⌘F, ⌘G and ⇧⌘G once in the Edit menu, and the view in front that knows how to search answers them: the SQL Editor, the File Previewer or the Help.

    Not on iPad iPhone Apple Vision ProHelp: Keyboard Shortcuts
  • Filter tools

    Puts the cursor in the filter of the tools sidebar with ⌥⌘F, the path to it without the pointer.

    Not on iPad iPhone Apple Vision ProHelp: Keyboard Shortcuts
  • Show or hide the sidebar

    Shows or hides the tools sidebar from the View menu with ⌃⌘S, and the item says which of the two it will do.

    Not on iPhoneHelp: Keyboard Shortcuts
  • Editor menu

    Gathers in the menu bar what the SQL Editor toolbar offers: run, run the script, stop, format, clear, the schema panel, customize the bar and go to the editor.

    Not on iPhoneHelp: Keyboard Shortcuts
  • Navigate menu

    Opens Quick Open with ⇧⌘O and the card of the SQL function under the cursor with ⌥⌘?, the path to it without hovering.

    Not on iPad iPhone Apple Vision ProHelp: Keyboard Shortcuts
  • Window menu

    Adds Keep Awake (⌥⌘K) and Activity to the system Window menu, and on the Mac also the next and previous tab.

    Not on iPhoneHelp: Window Menu
  • Tools menu

    Opens each tool with ⌥⌘ and a letter, showing one of three sets depending on whether the session in front is relational, MongoDB or Redis.

    Not on Mac iPhoneHelp: Keyboard Shortcuts
  • Help menu

    Opens the Calíope Help with ⌘?, and on the Mac also What’s New and the privacy, support and review links.

    Not on iPhoneHelp: Open the help center
  • Calíope icon in the menu bar

    Puts a cylinder in the macOS menu bar with Open window, which brings Calíope to the front, and Quit.

    Not on iPad iPhone Apple Vision ProHelp: Calíope Icon in the System Bar (macOS)
  • Keyboard shortcuts in the SQL Editor

    Answers the keys typed inside the editor text: completion, comment, folding, identifier quotes, go to definition, extra cursors and the query history.

  • Pinch to zoom

    Changes with a two-finger pinch the editor text, the results grid letter and the image of a cell, each with its own limits and its own saved preference.

  • Pan and zoom the canvases

    Pans the ER Diagram and Visual EXPLAIN canvases by dragging the background and zooms them with the pinch or, on the Mac, the mouse wheel.

  • Drag a panel divider

    Resizes two panels by dragging the divider between them, and a double click or double tap restores the tool’s default split.

  • Gestures on the results grid

    Answers a click, a double click, a long press or a right click on a cell or a column header with its own action: see the value, generate the UPDATE, the cell menu, sort or resize.

  • Swipe actions on lists

    Reveals Delete, Move to group or Disconnect by swiping a row in the lists that have it, and asks before doing anything.

    Not on MacHelp: Touch gestures on iPad
  • Context menus

    Opens, with a right click on the Mac or a long press elsewhere, the menu of what the item under the finger or pointer allows, and hides what writes under a read-only tag.

  • Look and pinch

    Highlights the control you look at and presses it with a pinch on Apple Vision Pro, with pinch and hold for the context menu and pinch and move to drag.

    Not on Mac iPad iPhoneHelp: Calíope on Apple Vision Pro

Siri and Shortcuts

7 functions

  • Connect to server

    Opens Calíope and connects to the saved connection profile you name to Siri or pick in Shortcuts, with the password read from the Keychain.

  • Run SQL query

    Runs a SQL statement on the active relational session and returns the result as tab-separated text, or the affected rows the server reported.

  • List databases

    Returns the names of the databases of the active relational session, one per line, ready for a later step of the shortcut.

  • Open panel in Calíope

    Brings Calíope to the foreground and opens one of nine workspace tools in the active relational session.

  • Built-in Calíope shortcuts in Spotlight and Shortcuts

    The four actions come ready to use, without building a shortcut: Siri recognizes their phrases in each language, and Spotlight and the Shortcuts app suggest them.

  • Create a chained shortcut

    The actions return their result as a value, so a shortcut can chain them with each other and with system actions, like connecting and then opening the Dashboard.

  • Find a connection in Spotlight

    Calíope publishes each saved connection to Spotlight by its alias and host, and opening the result connects to it.

MCP server

14 functions

  • Let an AI client on this Mac query Calíope

    A switch in Settings starts or stops the MCP server at once; it is off until you turn it on, and it starts again with Calíope while it stays on.

    Not on iPad iPhone Apple Vision ProHelp: MCP server: let your AI client query Calíope
  • Local server on 127.0.0.1

    The server answers MCP over HTTP on 127.0.0.1, this Mac’s own address, so nothing is exposed to your network or the internet.

    Not on iPad iPhone Apple Vision ProHelp: MCP server: let your AI client query Calíope
  • Port

    The server listens on port 41500 unless you choose another; changing it restarts the server, and a port already in use is reported instead of starting.

    Not on iPad iPhone Apple Vision ProHelp: MCP server: let your AI client query Calíope
  • Access key

    The server does not answer without its access key, which Calíope creates by itself, keeps in this Mac’s Keychain and shows cut short in Settings.

    Not on iPad iPhone Apple Vision ProHelp: MCP server: let your AI client query Calíope
  • Generate a new key

    Replaces the access key at once, so the old one stops working even if someone had it, and asks you to copy the configuration again.

    Not on iPad iPhone Apple Vision ProHelp: MCP server: let your AI client query Calíope
  • Copy configuration

    Copies to the clipboard two ready blocks, one for Cursor and one for Claude Desktop through mcp-remote, with your port and your key already inside.

    Not on iPad iPhone Apple Vision ProHelp: Set up your AI client to talk to Calíope
  • Connections the client can see

    You tick which saved connections the client can see; anything not ticked does not exist for it, and MongoDB and Redis connections are not offered.

    Not on iPad iPhone Apple Vision ProHelp: MCP server: let your AI client query Calíope
  • list_connections

    Gives the client the id, name, engine and host of each connection you exposed.

    Not on iPad iPhone Apple Vision ProHelp: MCP server: let your AI client query Calíope
  • list_databases

    Gives the client the names of the databases of an exposed connection, opening the session if it was not open.

    Not on iPad iPhone Apple Vision ProHelp: MCP server: let your AI client query Calíope
  • list_tables

    Gives the client the tables and the views of a database of an exposed connection.

    Not on iPad iPhone Apple Vision ProHelp: MCP server: let your AI client query Calíope
  • describe_table

    Gives the client the columns, foreign keys and indexes of a table, with type, nullability and primary key for each column.

    Not on iPad iPhone Apple Vision ProHelp: MCP server: let your AI client query Calíope
  • run_query

    Runs one read-only statement on an exposed connection and gives the client the columns and up to 200 rows, saying when the result was cut.

    Not on iPad iPhone Apple Vision ProHelp: MCP server: let your AI client query Calíope
  • Read-only gate

    Before touching the server, run_query rejects anything that is not one reading statement, and also SELECT … FOR UPDATE and LOCK IN SHARE MODE.

    Not on iPad iPhone Apple Vision ProHelp: MCP server: let your AI client query Calíope
  • What the client receives

    Query rows travel to the client on this same Mac, Calíope does not send them to the internet, and everything run over MCP stays in the Query Log as an MCP client entry.

    Not on iPad iPhone Apple Vision ProHelp: What your AI client sees, and what it does with it next

Apple Watch, Apple TV and widgets

24 functions

  • Server metrics widget

    Shows connections, throughput, uptime, threads, slow queries and cache hits of one server on the desktop, the home screen or a wall, in four sizes and three Lock Screen ones.

  • Choose the server of each widget

    Each placed widget has its own Server parameter, filled from a minimal catalogue of profiles that Calíope writes to the shared container, so several widgets can watch different servers.

  • Tapping the widget opens its server

    Tapping or clicking the metrics widget opens Calíope on the dashboard of the server that widget has chosen, connecting first if there was no session.

  • The widget says when its data is old

    A green, red or amber badge with its own symbol says whether the data is current, the server stopped answering, or more than three times the write cadence has passed with a floor of 90 seconds.

  • The dashboard feeds the widget

    While the dashboard samples a server, every tick writes its metrics and its cadence to the shared container, and closing it leaves the last reading in place.

  • Refresh the widget in the background

    Settings › Widget keeps a pinned profile refreshed without the dashboard open, every 30 seconds or 1, 5 or 15 minutes, opening a short connection on each turn.

  • What the widgets share, and what they do not

    The app and the widget extension share a system container, never synced with iCloud, with metrics, timestamps, the profile catalogue and the fleet state, and no password, key or query result.

  • Fleet health widget

    Shows the worst state of the servers the health monitor watches and how many need attention, in three sizes, and opens the health monitor when tapped.

  • The health monitor publishes the fleet

    Each health monitor sample, or each server that does not answer, is written to the fleet widget on this device and, if its switch is on, to iCloud for the Apple TV.

  • Publish the server status to iCloud for the Apple TV

    A switch of its own in Settings › General › Apple TV, off by default, publishes alias, host, port, engine, version and metrics of each watched server, and turning it off withdraws what was published.

  • Record the system messages

    Keeps on this device a trace of what happens with no one in front, seventeen kinds of notice in seven groups with their severity and figure, kept 30, 90, 180 or 365 days or with no limit.

  • Sync the system messages with iCloud

    A second switch, off by default and only available with the record on, uploads the messages for Calíope on the watch, shows the pending queue and the last failure, and prunes iCloud with the same retention.

  • Read the system messages on the Apple Watch

    Calíope on the watch reads from iCloud the messages your devices publish, with a list and a detail, works without an iPhone nearby and writes nothing anywhere.

    Not on Mac iPad iPhone Apple Vision ProHelp: Calíope on the watch: system messages on your wrist
  • Allow the watch to read iCloud

    The watch has its own iCloud read permission, off by default and worded as a privacy statement, and without it the app has nothing to show.

    Not on Mac iPad iPhone Apple Vision ProHelp: Calíope on the watch: system messages on your wrist
  • Watch notifications

    A permission separate from reading lets the watch make a sound, from the chosen severity and every 1, 5, 15, 30 or 60 minutes at the earliest, delivering everything above the last message it already notified.

    Not on Mac iPad iPhone Apple Vision ProHelp: Calíope on the watch: system messages on your wrist
  • Filter the watch by group

    Seven switches, one per group of notice instead of one per kind, decide what the watch shows and notifies, and a new kind falls into a group already decided.

    Not on Mac iPad iPhone Apple Vision ProHelp: Calíope on the watch: system messages on your wrist
  • The watch says why it is empty

    Each empty screen of the watch names its cause and the device where it is fixed, and tells an empty inbox apart from a channel that never published.

    Not on Mac iPad iPhone Apple Vision ProHelp: The TV or the watch shows nothing
  • Watch demonstration mode

    A switch in the watch settings fills the list with sample messages, and adds a gallery of the empty screens and a test notification.

    Not on Mac iPad iPhone Apple Vision ProHelp: The watch’s demo mode
  • Fleet panel on the Apple TV

    Calíope on the Apple TV shows as tiles the servers your devices publish, with a summary by severity, each state with its own shape, and it opens no connection and runs no query.

    Not on Mac iPad iPhone Apple Vision ProHelp: Calíope on the Apple TV: the fleet dashboard
  • Server detail on the Apple TV

    Choosing a tile opens the metrics of that server, its reasons and where the data comes from, collected, published and at what cadence.

    Not on Mac iPad iPhone Apple Vision ProHelp: Calíope on the Apple TV: the fleet dashboard
  • The Apple TV marks old data

    The television computes freshness itself, and a server unrenewed for more than three times its cadence, at least 90 seconds, stops showing as current on its tile and in its detail.

    Not on Mac iPad iPhone Apple Vision ProHelp: Calíope on the Apple TV: the fleet dashboard
  • The Apple TV says why it is empty

    An empty panel names one of six causes and the device where it is fixed, and always offers a demonstration.

    Not on Mac iPad iPhone Apple Vision ProHelp: The TV or the watch shows nothing
  • Apple TV settings

    Three settings belong to that television and do not leave it, the demonstration, keeping the screen awake and the language.

    Not on Mac iPad iPhone Apple Vision ProHelp: Calíope on the Apple TV: the fleet dashboard
  • Calíope in the Apple TV top row

    With Calíope in the top row, its icon shows up to 12 published servers, the most urgent first, and the caliope.org demo videos, and choosing a card opens that server.

    Not on Mac iPad iPhone Apple Vision ProHelp: Calíope on the Apple TV: the fleet dashboard

Purchase

11 functions

  • Purchase check

    At launch and every time the app comes back to the front, Calíope reads the purchase and the trial tied to the Apple ID on the device and opens the workspace or the purchase screen.

  • What the purchase includes

    The purchase screen lists what the purchase unlocks —the engines, unlimited connections, SSH and TLS, the editor, the assistant, backups, monitoring and diagrams— with the “?” that opens its Help topic.

  • Buy Calíope

    A one-time App Store purchase, with the amount the store gives in my currency, confirmed in Apple’s sheet; it unlocks Calíope on every device with the same Apple ID, with no renewals.

  • Buy from the App Store page

    Touching the in-app purchase card below the screenshots on the App Store page opens Calíope —downloading it first if needed— and shows Apple’s confirmation sheet for that purchase.

    Not on Apple Vision ProHelp: Buy from the App Store page
  • Start the trial

    Starts the trial with everything unlocked on every device with the same Apple ID; it asks for no card, never turns into a charge and can only start once per Apple ID.

  • When the trial ends

    When the trial is over Calíope goes back to the purchase screen, now without the trial button and with buying as the way forward, and the connections and settings stay on the device.

  • Reminders before the trial ends

    Fifteen and five days before the trial ends Calíope schedules a system notification that arrives even with the app closed; it can be turned off in Settings.

  • Purchase screen from the reminder

    Touching the trial reminder opens the purchase screen in a sheet over the workspace, with “Not now” to go back to where I was.

  • Restore Purchase

    Asks the App Store for the purchases of the Apple ID signed in on the device and unlocks Calíope if it finds the purchase made on another device or before reinstalling.

  • When the store does not answer

    Without a connection to the App Store the purchase screen says it could not verify the purchase and offers “Retry”, and restoring stays available.

  • Pending purchase or Ask to Buy

    When a purchase waits for the family organizer’s approval or for a payment issue, Calíope says so and unlocks by itself as soon as Apple approves it, without relaunching.

Help, What’s New and About

15 functions

  • Calíope Help

    Help opens with its index by section, a welcome page with quick cards and every topic in the five languages: in its own window on the Mac, and as a sheet everywhere else.

  • Filter Help by engine

    The «All engines» menu at the top of the index keeps only the topics for one engine and those that apply to every engine, and remembers the choice.

  • Go to the place a topic describes

    A topic that names where its function lives shows that path with a «Go» button that closes Help and opens that tool or Settings.

  • Send an SQL example to the editor

    Each SQL block in the DBA Manual has an «Open in editor» button that loads the example into the SQL Editor of the open session; outside the Mac it also closes Help.

  • Open a topic from outside Help

    A help button, the «See solution» of an error and the «Open in Calíope» links of the Help published at caliope.org (caliope://help/…) open Help straight at their topic.

  • Tell me what Help is missing

    At the end of the Help welcome page, «Tell me what’s missing» opens an email already written to support@caliope.org with the version, platform and language at the bottom, and the address is always shown and can be copied.

  • What’s New

    The first time a new version opens, the What’s New window lists what it brings and the earlier versions; on the Mac it reopens from the Help menu, and everywhere from its Help topic.

  • About Calíope

    Shows the version, the build, the minimum system and the links to the privacy policy and support: in its own window from the Calíope menu on the Mac, and in the last tab of Settings everywhere else.

  • Acknowledgments

    Under About, the list of every third-party component with its version, licence and copyright holder, generated from the build’s dependencies, and «View full licences» opens the legal text that travels inside the app.

  • Rate Calíope

    «Write a review» opens the App Store page with the form ready, from the Help menu on the Mac or from About; and the system rating dialog appears at most once a year, after a successful backup, once the app has been bought.

  • Usage tips

    Each time I open a tool, at most one help bubble appears next to the control it explains, in an order that puts first the ones that prevent a mistake; once shown it is spent.

  • VoiceOver and Voice Control

    Every actionable control has a spoken name, each result cell announces its column and value and offers its actions in the rotor, and connecting, a batch result and a finished backup are announced on their own.

  • Larger text

    The app follows the system text size up to the accessibility sizes, the result grid included, and forms stack label and field when they no longer fit side by side.

    Not on MacHelp: Larger text and contrast
  • Reduce motion and transparency

    With Reduce Motion on, no animation in the app moves anything and banners appear without sliding; with Reduce Transparency, translucent backgrounds turn solid; and no state is told apart by colour alone.