Skip to content

Releases

SpelaionDB 0.5.0

Choose a tag to compare

@github-actions github-actions released this 05 Nov 12:55
3578bc7

SpelaionDB 0.5.0 makes the explorer a database navigator: objects in folders by type, filters,
DDL and the SQL you would otherwise type by hand. It also tightens what AI agents may run.

The explorer, by type

  • Folders by type under each schema (ADR-024): tables (partitioned ones marked), foreign
    tables, views, materialized views, functions, procedures, aggregates, sequences, triggers, data
    types, events (MySQL, MariaDB) and synonyms (SQL Server), as each engine has them. Roles,
    users, logins, tablespaces and extensions follow the schemas.
  • Under a table: its columns, constraints (primary key, unique, check), foreign keys and
    indexes.
  • System objects (system schemas, built-in roles and logins) are hidden until Settings →
    Explorer shows them.
  • Sorting: alphabetical and ignoring case by default; the database's order, case-sensitive
    order or folders first are in Settings → Explorer.
  • Refresh: F5 on a table or schema reads it again; "Refresh all schemas" (a schema's menu,
    the connection's "⋯" menu or F5 on the connection) reads everything again, autocompletion
    included. What is expanded stays expanded.

Filters

  • Quick filter: the magnifying glass over the explorer, or Ctrl+Shift+F, keeps what matches
    a name.
  • Connection filters, as in DBeaver: right-click a connection, a folder of objects or a
    table's columns, "Configure filter…", and include or exclude patterns (*, ?). A filtered
    folder says so. Filters are yours: they are kept on this computer, not in the connection's
    file (ADR-025).
  • Hide / Show only in the right-click menu, for one object or every one chosen with
    Ctrl+click.
  • Only the connected connections: the plug over the explorer.
  • Big catalogs: filters go into each engine's catalog query, so a server with thousands of
    schemas or tables only sends what passes them (Settings → Explorer → Use server-side filters).

Generate SQL

In a table's right-click menu, written by the core with the engine's quoting and :name
placeholders; nothing runs until you run it.

  • DDL of a table or view (and of functions, triggers, sequences, types and indexes): the
    engine's own text, or composed from the catalog for PostgreSQL and SQL Server, with
    constraints, indexes and comments.
  • SELECT by key (WHERE key =) and by a list of keys (WHERE key IN). Without a primary
    key, SELECT by key, UPDATE and DELETE use a unique key.
  • Upsert (INSERT … ON CONFLICT, or ON DUPLICATE KEY UPDATE) and MERGE, where the
    engine has them.
  • UPDATE … FROM and DELETE … USING a source of values, in each engine's form.
  • JOIN of the tables chosen with Ctrl+click, simple or INNER, on their foreign keys.
  • CALL of a procedure, its outputs collected.

AI agents

  • Agents can no longer replace tables or schemas (CREATE OR REPLACE), and ALTER TABLE is
    limited to adding columns or constraints and renaming: dropping columns, changing their types
    or dropping partitions is refused.
  • MySQL and MariaDB executable comments (/*! … */, /*M! … */) are refused for agents: the
    server runs what the parser takes for a comment.

Fixes

  • A MERGE written in the editor now runs on SQL Server: the statement splitter dropped the
    semicolon SQL Server requires.
  • MariaDB's sequences are no longer listed as tables.
  • A PostgreSQL array with more dimensions than PostgreSQL allows (six) is refused before it is
    read, so a malformed answer from a server cannot make the decoder go deeper and deeper.

Installing

  • Windows: SpelaionDB_0.5.0_x64-setup.exe installs for the current user without admin
    rights; the .msi is there for managed machines. The installers are not signed yet, so
    SmartScreen may warn: "More info" → "Run anyway".
  • macOS: the .dmg for Apple Silicon (aarch64) or Intel (x64). The app is not notarized
    yet: open it with right-click → Open the first time.
  • Linux: .deb, .rpm or the AppImage. Only the AppImage updates itself.
  • CLI / MCP server: the spelaiondb-* archives hold the spelaiondb binary.

0.4.0 updates itself to this version from the notice at the top of the window.

Everything in this release

  • Wait for SQL Server to remove a killed session in the process monitor test (63f00b6)
  • Make CI faster: keep its caches, and build once for the Kubernetes test (68e9290)
  • Group the explorer by object type, with functions, sequences, triggers, types and server objects (ADR-024) (d93beb4)
  • Check extension filtering with plpgsql, which every PostgreSQL has (6175079)
  • Show each table's constraints, foreign keys and indexes in the explorer (be802f7)
  • Show or hide system objects in the explorer (a21f480)
  • Sort the explorer alphabetically, ignoring case, with folders first as an option (171c6b1)
  • Refresh a table, a schema or all schemas from the explorer (025b899)
  • Filter the explorer by name with a quick filter box (7f537ed)
  • Filter a connection's schemas, objects and columns with include and exclude patterns (3df055c)
  • Hide one schema, object or column, or show only it, from the explorer's menu (a0270bd)
  • Show only the connected connections in the explorer (f5607df)
  • Put the explorer's filters into each engine's catalog query, for big catalogs (22b73ac)
  • Harden agent SQL comment handling for MySQL (0fa7c82)
  • Generate the DDL of a table or view from the explorer (c45efcd)
  • Generate SELECT by key or by a list of keys, and write by a unique key (9c0847d)
  • Generate an upsert or a MERGE for a table, where the engine has one (daf47d1)
  • Generate UPDATE … FROM and DELETE … USING a source of values (4a263af)
  • Run SQL Server catalog queries again when they lose a deadlock (62960e7)
  • Choose several tables with Ctrl+click and generate a JOIN of them (5f2e0f1)
  • Generate the CALL of a procedure, its outputs collected (12b8538)
  • Restrict destructive agent DDL operations (4c59031)
  • Bound PostgreSQL array dimensions (4ce6070)
  • Count only our own session in the MySQL process list test (79c65ca)
  • Mention the bounded PostgreSQL array dimensions in the 0.5.0 notes (69d475e)

Full changelog: v0.4.0...v0.5.0

SpelaionDB 0.4.0

Choose a tag to compare

@github-actions github-actions released this 04 Nov 20:05
816900f

SpelaionDB 0.4.0 is the first public release. SpelunkDB has a new name, its home is now
spelaion-dev/spelaiondb, and from this version on
the app keeps itself up to date.

A new name: SpelaionDB

SpelunkDB is now SpelaionDB, part of the Spelaion family (σπήλαιον
is Greek for "cave"). Nothing you have is lost (ADR-023):

  • Your settings, connections and history are copied from the old personal folder the first
    time the new app starts. The old folder is left as it was, as a backup.
  • Saved passwords are found in the system keychain under the old name and copied to the new
    one the first time they are used.
  • Repositories: the folder is now called .spelaion/. A .spelunk/ folder is still read in
    0.4, with a notice to rename it: git mv .spelunk .spelaion. Trusted repositories stay
    trusted.
  • The app installs alongside SpelunkDB: uninstall the old one when you are ready.
  • The command line and MCP server are now spelaiondb (spelaiondb mcp,
    spelaiondb check…). Set your AI tools up again, for example
    claude mcp add spelaiondb -- spelaiondb mcp.

Automatic updates

SpelaionDB checks for a new version when it starts, which you can turn off in Settings →
Updates, and shows a notice. Updates are signed, and they are installed only when you click
"Install and restart"; your tabs come back with their SQL, not run. This is the first version
that updates itself: install it by hand once.

Editing results and more

  • Edit query results: a single-table result with a primary key can be edited in the grid
    or in the cell panel. Insert, duplicate, delete and revert rows, set NULL, then save
    everything in one transaction. Joins and other ambiguous results stay read-only, and which
    table a result writes to is decided by the server's own name resolution, never guessed.
  • Paging: query results load page by page as you scroll, with a page size to choose and a
    count of all the rows.
  • Process monitor for PostgreSQL, MySQL, MariaDB and SQL Server: see what runs on the
    server, filter it, refresh it automatically, and cancel a query or end a session after
    confirming it (never on read-only connections).
  • Editor: duplicate lines, multiple cursors, rectangular selections and select occurrences,
    as in VS Code.
  • Database logos in the explorer, and a friendlier first screen without connections.

Open source

The repository is public under the Apache License 2.0. Read CONTRIBUTING.md to send changes
and SECURITY.md to report a vulnerability privately.

Installing

  • Windows: SpelaionDB_0.4.0_x64-setup.exe installs for the current user without admin
    rights; the .msi is there for managed machines. The installers are not signed yet, so
    SmartScreen may warn: "More info" → "Run anyway".
  • macOS: the .dmg for Apple Silicon (aarch64) or Intel (x64). The app is not notarized
    yet: open it with right-click → Open the first time.
  • Linux: .deb, .rpm or the AppImage. Only the AppImage updates itself; .deb and .rpm
    installs are updated with the new package.
  • CLI / MCP server: the spelaiondb-* archives hold the spelaiondb binary.

This is still a preview: expect rough edges, and please report them.

Everything in this release

  • Add editable results and server process monitoring (4ff3245)
  • Decide in the core which table an edited query result writes to (381254d)
  • Move the agent rules to AGENTS.md, so Codex reads them too (5e405e9)
  • Propose ADR-023: rename SpelunkDB to SpelaionDB, under the Spelaion brand (3fb19be)
  • ADR-023: use the spelaion.dev domain, and record what the name check found (590a830)
  • Rename SpelunkDB to SpelaionDB, under the Spelaion brand (ADR-023) (89bfb8a)
  • ADR-023: the spelaion-dev organization exists; the brand is not registered (28d055d)
  • Prepare the repository to be public: contributing, security and conduct (f688307)
  • Use contact@spelaion.dev as the code of conduct's contact (a36e19a)
  • Run CI on every push to dev, now that the repository is public (356e826)
  • Turn on automatic updates, from the latest public release (ADR-021) (1e72bdc)

Full changelog: v0.3.0...v0.4.0

SpelunkDB 0.3.0

SpelunkDB 0.3.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Nov 00:28
0f2b06b

SpelunkDB 0.3.0 adds DuckDB and SQL Server, opens SQLite files on a server through SSH, lets
AI agents write where you allow it, and makes sharing connections with a team safe and
password-free.

New engines

  • DuckDB: local files (or a new empty database), nested types shown as DuckDB writes
    them, and several tabs on the same file.
  • SQL Server: T-SQL batches (GO, BEGIN … END), several result sets per batch, the
    per-tab database selector, cancelling and TLS.
  • SQLite on a server: choose a tunnel whose last hop holds the file and write its path
    there. SpelunkDB runs that server's sqlite3 (in its safe mode) through the tunnel: the file
    is never copied, and the server's own locks keep it safe.

A smoother desktop

  • An activity bar for connections, query history, saved queries and settings; the explorer
    can be hidden and resized.
  • A database selector per query tab for MySQL, MariaDB and SQL Server, that follows USE.
    Double-click a database in the explorer to open a tab already connected to it.
  • Settings open in a dialog over your tabs.
  • Copying rows as a single INSERT with every selected row.

AI agents (MCP)

  • Every engine is served: PostgreSQL, MySQL, MariaDB, SQL Server, SQLite and DuckDB, each
    behind a read-only barrier the engine itself enforces. For DuckDB, agents never reach files
    or the network.
  • Writes, only where you allow them: "Agents can: Read and write" in a connection's
    options. Writes go through a separate execute_write tool, one statement at a time in its
    own transaction. DROP, TRUNCATE, DELETE/UPDATE without WHERE, procedures,
    permissions, settings and anything that reaches files or other servers are always refused.
    Every write is audited.

Sharing connections with a team

  • Trust is no longer forever: if a git pull changes a repository connection or tunnel
    (another server, secret, tunnel or command), or adds one, it is not used until you have
    seen the change, field by field, and accepted it.
  • Shared SSH server keys: commit them as .spelunk/known_hosts, and a newcomer's first
    connection through a bastion is already verified. A different key is refused.
  • Logins without passwords: client certificates for PostgreSQL, MySQL and MariaDB (the
    private key always stays outside the repository), and short-lived tokens from AWS RDS IAM,
    Azure (Microsoft Entra ID) and Google Cloud SQL IAM.
  • Personal values asked once: when a connection needs ${user.…} variables you have not
    defined (your database user, for example), SpelunkDB asks for all of them at once and saves
    them in your user.toml.
  • spelunk check for the team repository's CI or pre-commit hook: it fails on files that do
    not load, passwords written in commands and private keys in the repository, and warns about
    risky settings.

Fixes

  • MySQL and MariaDB: verify-ca now checks only the authority that signs the server's
    certificate, as it should, so connecting by IP address works.
  • DuckDB: a file can be opened again right after its sessions close.

Also

  • Automatic updates are prepared and signed, but switched off until releases have a public
    home: Settings → Updates says so. Install this version by hand.

Installing

  • Windows: SpelunkDB_0.3.0_x64-setup.exe installs for the current user without admin
    rights; the .msi is there for managed machines. The installers are not signed yet, so
    SmartScreen may warn: "More info" → "Run anyway".
  • macOS: the .dmg for Apple Silicon (aarch64) or Intel (x64). The app is not notarized
    yet: open it with right-click → Open the first time.
  • Linux: .deb, .rpm or the AppImage.
  • CLI / MCP server: the spelunk-* archives hold the spelunk binary.

This is still a preview: expect rough edges, and please report them.

Everything in this release

  • List every commit since the previous release in its notes (dbdbcb6)
  • Add a DuckDB driver (e1eda0c)
  • Improve desktop navigation and query workflow (4748520)
  • Fix DuckDB reopen after closing sessions (1e095d0)
  • Add a SQL Server driver (c3747c1)
  • Extend the desktop workflow to SQL Server and close stray completions (6ff2549)
  • Propose ADR-018: SQLite files on a server, through SSH (77e09a0)
  • Open SQLite files on a server through SSH (e71be83)
  • Show settings in a dialog instead of a tab (11df64f)
  • Let agents write on the connections the user allows (ADR-019) (d952f73)
  • Serve MySQL, MariaDB, SQL Server and DuckDB in the MCP (ADR-020) (593e4ad)
  • Prepare signed automatic updates for the app, off until releases are public (ADR-021) (a6f0677)
  • Ask again when a trusted repository connection changes (ADR-022) (46cf49d)
  • Verify SSH servers against the team's reviewed known_hosts (ADR-022) (0e4de0b)
  • Log in without passwords: client certificates and cloud tokens (ADR-022) (e33f25a)
  • Fix verify-ca for MySQL and MariaDB: trust the authority, not the name (0cd7847)
  • Ask once for the personal variables a connection needs (ADR-022) (1897b84)
  • Add spelunk check, for a team repository's CI and pre-commit hook (ADR-022) (029d171)

Full changelog: v0.2.0...v0.3.0

SpelunkDB 0.2.0

SpelunkDB 0.2.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 Nov 10:31
d5218a3

SpelunkDB 0.2.0 brings your connections over from DBeaver and reaches databases that live
inside Kubernetes.

Import from DBeaver

  • "Import from DBeaver…" in the add connection dialog finds DBeaver's workspace (or a folder
    you choose) and lists its PostgreSQL, MySQL, MariaDB and SQLite connections.
  • Folders, environments (DBeaver's connection types) and SSH tunnels come along: one
    SpelunkDB tunnel per bastion and user, shared by the connections that use it.
  • The user names and passwords DBeaver saved are read from its credentials file. Passwords go
    to the system keychain only if you tick that option, and are asked when connecting
    otherwise; they are never written to a file. A name already taken gets (DBeaver) added;
    nothing existing is overwritten.

Kubernetes

  • A new Kubernetes tab in the connection form, next to SSH: pick a context of your
    kubeconfig, a namespace, the resource type (service, pod or deployment), its name and its
    port. Every list is read from kubectl as you go; the resource's ports (a service's ports or
    its containers' ports) set the connection's port.
  • SpelunkDB runs kubectl port-forward with your kubeconfig, so EKS, GKE, AKS or OIDC
    authentication works as in your terminal. kubectl must be installed.
  • Connections to the same resource and port share one kubectl, stopped with the last one and
    when the app closes. If it exits (a pod restarted, credentials expired), the connection shows
    kubectl's message and is not restarted on its own.
  • A connection goes through Kubernetes or an SSH tunnel, not both. In the file it is a
    [kubernetes] section of the connection.

Installing

  • Windows: SpelunkDB_0.2.0_x64-setup.exe installs for the current user without admin
    rights; the .msi is there for managed machines. The installers are not signed yet, so
    SmartScreen may warn: "More info" → "Run anyway".
  • macOS: the .dmg for Apple Silicon (aarch64) or Intel (x64). The app is not notarized
    yet: open it with right-click → Open the first time.
  • Linux: .deb, .rpm or the AppImage.
  • CLI / MCP server: the spelunk-* archives hold the spelunk binary.

This is still a preview: expect rough edges, and please report them.

Everything in this release

  • Import connections from DBeaver (f0ad433)
  • Add Kubernetes tunnels through kubectl port-forward (88e0ce3)
  • Move Kubernetes to its own tab of the connection form (7846e0d)
  • Work on dev; CI on pull requests to main and by hand (b56eb19)

Full changelog: v0.1.0...v0.2.0

SpelunkDB 0.1.0

SpelunkDB 0.1.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 Nov 06:39

The first preview of SpelunkDB: an open-source desktop database client with first-class SSH
tunnels and a read-only MCP server for AI agents.

Databases and connections

  • PostgreSQL (with TLS), MySQL, MariaDB and SQLite.
  • Connections as TOML files: in the repository (.spelunk/, shared through git) or personal.
    Passwords go to the system keychain, are asked every time or come from an environment
    variable; never to a file.
  • SSH tunnels through any number of bastions (agent, key, password, keyboard-interactive);
    a changed host key always blocks.
  • Add, edit and delete connections from the app; paste a connection URL; create a new SQLite
    database.

Querying

  • SQL editor with the engine's dialect and autocompletion. Ctrl+Enter runs the statement under
    the cursor, Ctrl+Shift+Enter the whole script; Shift+Alt+F formats.
  • :name parameters, saved queries (Ctrl+S) and query history.
  • Confirmation before DELETE/UPDATE without WHERE, DROP, TRUNCATE and writes on production.

Results

  • A fast canvas grid with results kept in the core: sort by header, filter rows by text or by
    column like SQLyog (=, <>, LIKE, IS NULL…), resize columns, jump to a column.
  • Copy as TSV, CSV, JSON, SQL INSERT, Markdown or an IN list; export whole results to CSV, TSV,
    JSON, SQL or Markdown.
  • Cell viewer (pretty JSON, hex dump of bytes, long text) and row view.

Tables

  • Schema explorer with exact row counts and generated SELECT/INSERT/UPDATE/DELETE.
  • Table data tabs: server-side pages with WHERE and ORDER BY.
  • Editing for tables with a primary key: cells, NULL, deleted and new rows, applied in one
    transaction where each change must touch exactly one row.

For AI agents

  • spelunk mcp: a read-only MCP server over stdio for the connections you expose, with a
    statement classifier, read-only transactions, limits and an append-only audit log. The
    spelunk binaries below include it.

Installing

  • Windows: SpelunkDB_0.1.0_x64-setup.exe installs for the current user without admin
    rights; the .msi is there for managed machines. The installers are not signed yet, so
    SmartScreen may warn: "More info" → "Run anyway".
  • macOS: the .dmg for Apple Silicon (aarch64) or Intel (x64). The app is not notarized
    yet: open it with right-click → Open the first time.
  • Linux: .deb, .rpm or the AppImage.
  • CLI / MCP server: the spelunk-* archives hold the spelunk binary.

This is a preview (0.1.0): expect rough edges, and please report them.