Drivers

tobira ships with thirty-one built-in drivers, plus DuckDB as an external plugin. Elasticsearch and OpenSearch share one row but count as a driver each; pgvector is part of the PostgreSQL driver. Each driver’s page has its DSN format, examples, capabilities and read-only behaviour.

DuckDB is not part of the binary: install the plugin from its GitHub release, or build it from source.

Driver matrix

DriverKindBrowseExplainVector searchTime seriesOther capabilitiesTested against
SQLiteSQLyesyes (no ANALYZE)nonoediting, transactions, completion, read-only guardreal database
PostgreSQLSQLyesyes (ANALYZE rolled back)yes (pgvector extension)noediting, transactions, completion, export, watch, read-only guardreal server
MySQLSQLyesyes (no ANALYZE)nonoediting, transactions, completion, read-only guardreal server
MariaDBSQLyesyes (no ANALYZE)nonoediting, transactions, completion, read-only guardreal server
SingleStoreSQLyesyes (no ANALYZE)nonoediting, completionMySQL and MariaDB (SingleStore mode)
CockroachDBSQLyesyes (ANALYZE rolled back)nonoediting, transactions, completion, export, read-only guardreal server
Amazon RedshiftSQLyesyes (text plan, no ANALYZE)nonocompletion, read-only guardPostgreSQL 17 (Redshift mode)
GreenplumSQLyesyes (ANALYZE rolled back)yes (pgvector extension)noediting, transactions, completion, export, watch, read-only guardPostgreSQL 17 (Greenplum mode)
SQL ServerSQLyesyes (estimated plan, never runs)nonoediting, transactions, completion, read-only guardreal server
OracleSQLyesyes (estimated plan, never runs)nonoediting, transactions, completion, read-only guardreal server
libSQL / TursoSQLyesyes (no ANALYZE)nonoediting, transactions, completion, read-only guardreal server (sqld)
Cloudflare D1SQLyesyes (no ANALYZE)nonoediting, completion, read-only guardlocal fake of the D1 API
ClickHouseColumnar SQLyesyes (no ANALYZE)nonocompletion, export, read-only guardreal server
BigQueryColumnar SQLyesyes (dry run: bytes and schema; no ANALYZE)nonocompletion, read-only guardBigQuery emulator
SnowflakeColumnar SQLyesyes (EXPLAIN USING TEXT, never runs; no ANALYZE)nonoediting, transactions, completion, read-only guardlocal fake (fakesnow)
VerticaColumnar SQLyesyes (plan only, no ANALYZE)nonoediting, transactions, completion, read-only guardreal server
MongoDBDocumentyesyes (executionStats, never applies a write)nonoediting, completion, watch, read-only guardreal server
Cloud FirestoreDocumentyesnononoediting, completion, watch (snapshot listeners), read-only guardFirestore emulator
Azure Cosmos DBDocumentyes (continuation tokens)noyes (VectorDistance; L2, cosine, inner product; text with an embedder)noediting (ETag match), completion, watch (change feed), read-only guardCosmos DB emulator
RedisKey-valueyesnononoediting, watch, read-only guardreal server
Amazon DynamoDBKey-valueyesnononoediting, completion, watch (Streams), read-only guardDynamoDB Local
CassandraWide-columnyes (paging state; tobira-side sort up to 10,000 rows)nononoediting (conditional writes), completion, read-only guardreal server
Neo4jGraphyes (offset pages over a label)yes (EXPLAIN; PROFILE runs it)nonograph neighbourhood, read-only guard (server-enforced)real server
Elasticsearch / OpenSearch (2 drivers)Searchyes (search_after on a point in time)yes (_validate/query, never runs; ANALYZE runs the search with profiling)Elasticsearch: yes (kNN on dense_vector, exact script_score for other metrics; text with an embedder); OpenSearch: nonoediting, read-only guardreal servers
InfluxDBTime seriesyesnonoyes (windowed ranges, SQL or InfluxQL)read-only guardreal server
QdrantVectoryesnoyes (per-vector metric, text with an embedder)noediting, read-only guardreal server
pgvector (part of PostgreSQL)Vectoryesyesyes (L2, cosine, inner product; text with an embedder)noread-only guardreal server
PineconeVectoryes (list order; tobira-side filters, sort up to 10,000 records)noyes (index metric, text with an embedder)noediting, read-only guardPinecone Local
WeaviateVectoryes (cursor API; offset pages when filtered or sorted)noyes (per-vector metric, text with an embedder)noediting, read-only guardreal server
ChromaVectoryes (Chroma’s order; tobira-side sort up to 10,000 records; server-side filters)noyes (collection’s space, text with an embedder)noediting, read-only guardreal server
MilvusVectoryes (primary-key order; sorted by tobira up to 10,000 entities)noyes (index metric; text via BM25/TEXTEMBEDDING functions or an embedder)noediting, read-only guardreal server (2.6 standalone)
DuckDB (plugin)SQLyesyes (EXPLAIN; ANALYZE runs it, on read-only paths only for reads)nonoediting, transactions, completion, read-only guardreal database

Every driver can run queries, list namespaces and collections, and describe a collection.

  • Vector search: similarity search with the terminal UI’s S and :similar, and the similar tool of the AI assistant and the MCP server.
  • Time series: time-range reads with the terminal UI’s :chart and :range.
  • graph neighbourhood: the GraphReader capability, a node and the paths around it, for hosts of the driver package; the terminal UI has no graph view yet.
  • watch: change events in the terminal UI’s live tail (W, :watch) and in tobira watch.
  • read-only guard: a statement run read-only cannot write, whatever its text says. The AI assistant and the MCP server run queries only on connections whose driver has it. SingleStore has no read-only mode, so tobira refuses read-only connections to it; use a SELECT-only user there. See the read-only guard.

tobira driver info <name> prints the same capabilities for any driver, plugins included.

What each driver was tested against

The “Tested against” column says what each driver has been tested with. “Real server” means the database itself. Where the real service cannot run locally, the driver is tested against the vendor’s emulator or a local fake. Redshift and Greenplum are tested by running the PostgreSQL suite in Redshift or Greenplum mode, and SingleStore by running the MySQL and MariaDB suites in SingleStore mode. Each driver’s page lists the known differences.

No driver has been tested yet against the cloud service it names (for example BigQuery, Snowflake or Cloudflare D1 in the cloud), or against a real Redshift cluster, Greenplum cluster or SingleStore server. Emulators can behave differently from the real service; see emulators and fakes.

Compatible databases and services

Many databases speak a protocol that a built-in driver already handles, so they need no driver of their own: connect with the driver named here and its DSN format. tobira’s CI tests the servers in the matrix above, not these services, and what a service leaves out of the protocol tobira cannot do either.

Database or serviceUse the driverNotes
Neon, Supabase, AlloyDB, Amazon Aurora PostgreSQL, Amazon RDS for PostgreSQL, Google Cloud SQL for PostgreSQL, Azure Database for PostgreSQLPostgreSQLthe PostgreSQL wire protocol
YugabyteDB, TimescaleDB, CitusPostgreSQLPostgreSQL-compatible; their own SQL functions work as queries
Amazon Aurora MySQL, Amazon RDS for MySQL, Google Cloud SQL for MySQL, Azure Database for MySQL, PlanetScale, TiDB, VitessMySQLthe MySQL wire protocol
ScyllaDBCassandraCQL; see the Cassandra page
Valkey, KeyDB, Dragonfly, Amazon ElastiCache, Google Memorystore, Azure Cache for RedisRedisthe RESP protocol
Amazon DocumentDB, Azure Cosmos DB for MongoDB, FerretDBMongoDBthe MongoDB wire protocol; each implements a subset of the commands
TursolibSQL / Tursocovered on the libSQL page
OpenSearchElasticsearch / OpenSearchits own driver, opensearch
ClickHouse CloudClickHouse
Zilliz CloudMilvusmanaged Milvus
Qdrant Cloud, Weaviate Cloud, Chroma Cloudthe driver of the same namethe hosted service’s URL and API key in the DSN

A database that is not listed

See Write a driver. A driver can be an external plugin, so it does not have to wait for a tobira release.