# Engines, file sources and platforms

Bobby Tables connects to SQL, key, CQL and document databases, alongside S3-compatible storage, SFTP servers and local folders.

## Platforms and requirements

One binary is published for each supported platform. There is no server to run, container to configure or account to create.

        | Platform | Architecture | Requires | Package | Download |
| --- | --- | --- | --- | --- |
| macOS | Apple Silicon (arm64) | macOS 11 or later | Signed and notarized .dmg | [Download](https://bobbytables.app/download/macos-arm64) |
| Linux | x86_64 | WebKitGTK 2.48 or later (Ubuntu 22.04 or later) | Debian package (.deb) | [Download](https://bobbytables.app/download/linux-deb) |
| Linux | x86_64 | WebKitGTK 2.48 or later (Ubuntu 22.04 or later) | AppImage | [Download](https://bobbytables.app/download/linux-appimage) |

## Database engines

- **PostgreSQL.** Often written Postgres. Every feature lands here first. Introspection reads pg_catalog directly rather than information_schema, so nothing is hidden or slow.
- **CockroachDB.** Uses the PostgreSQL wire protocol with CockroachDB-specific catalog queries and capability checks. Native COPY, process tools and database snapshots are unavailable.
- **MySQL.** Read through the text protocol, so a column of any type renders without a per-type decoder.
- **MariaDB.** Recognized from the server it answers with, and given its own introspection and syntax rather than MySQL's.
- **TiDB.** Uses the MySQL wire protocol with TiDB-specific version checks, catalog filtering, DDL capabilities and distributed transaction conflict reporting.
- **Microsoft SQL Server.** Connects over TDS with SQL authentication and verified rustls TLS. Integrated authentication and named-instance discovery are not advertised.
- **ClickHouse.** Streams exact JSON results over rustls HTTP with query-ID cancellation. Inserts are supported; mutations wait for server completion, while grid update/delete stays disabled because ClickHouse keys are not unique row identities.
- **Snowflake.** Uses Snowflake's asynchronous SQL API over rustls HTTPS with exact string values, result partitions and statement cancellation. OAuth and programmatic access tokens are supported. Informational keys are never assumed to identify a row.
- **SQLite.** A statically compiled SQLite. Database files open from the app, from Finder, and from a Linux desktop file association.
- **Google BigQuery.** Uses BigQuery REST v2 with Application Default Credentials or a service-account key kept in the operating-system keychain.
- **Oracle Database.** Uses a separately installed same-architecture Oracle Instant Client with service-name, SID or TNS-alias addressing, Oracle catalog browsing and ROWID-aware editing.
- **Redis / Valkey.** Direct single-node connections use cursor-based key discovery, incremental binary-safe reads, typed edits, expiry controls and a bounded command console.
- **Apache Cassandra.** Cluster-aware native CQL sessions provide schema metadata, driver paging state, partition-key browsing, lossless complex values, staged edits, TTL, consistency and LWT outcomes.
- **ScyllaDB.** Uses the Cassandra-compatible native CQL protocol while retaining a distinct connection identity, URL scheme and provider entry.
- **MongoDB.** A native document workspace for Extended JSON find and aggregation queries, server-paged results, indexes, and staged optimistic writes.

## File sources

- **AWS S3.** Region, custom endpoint, path-style URLs, temporary session tokens and a root prefix are all connection fields.
- **Cloudflare R2.** Buckets can be added one at a time, or imported in bulk from one Cloudflare API token.
- **MinIO.** Set the S3 API endpoint of the server and leave the region blank.
- **Backblaze B2.** Connects over the B2 S3-compatible endpoint.
- **SFTP.** SFTP version 3 over the app's own SSH stack, with ssh_config aliases, ProxyJump and known-hosts checking.
- **Local folders.** A pane on this computer, so a bucket and a folder sit side by side.

## Related

- [Questions this app answers](https://bobbytables.app/docs/questions.md)
- [What it does not do](https://bobbytables.app/docs/limits.md)
