The crates

All fifteen crates with what each one does, what lives inside it, and how many tests stand behind it.

SQLly is one Rust workspace of fifteen crates under client/, arranged so that anything the interface can do, the CLI engine and the language server can do too. Each crate below lists what it does, what lives inside it, and how many tests stand behind it. Counts come from scripts/count-rust-tests.sh and total 7,413 tests as of this writing.

Language & intelligence

sqlly-lang

The SQL language layer: the canonical statement model, the lexers and parsers behind it, the tokenizer IntelliSense leans on, and the formatter. Dialect-invariant by design, so one model serves every engine. 253 tests.

sqlly-intel

Everything that reasons about SQL and the objects it names: schema-aware IntelliSense, metadata and the model engine, query analysis, and a regression suite grown from user feedback reports. 635 tests.

sqlly-ai

The AI side: a local, searchable catalog of database objects, schema search and natural-language Q&A, and natural-language-to-SQL - all through a provider you configure, with token-budgeted context instead of the whole schema. 405 tests.

Databases & the service core

sqlly-engines

Every database backend behind one set of traits: SQL Server over TDS, PostgreSQL, MySQL, and SQLite, with SSH tunneling built in and conformance suites pinning each dialect's behavior. 137 tests.

sqlly-core

Shared product primitives: connection storage and management with OS-keyring secrets, the object model, sessions, bounded spill-to-disk row streams, redaction, and crash recovery. 196 tests.

sqlly-services

The headless, UI-agnostic service layer: admin tools, row editing, dumps, plans, transfer, compare, and the catalog - the code every frontend calls, unchanged. 1,094 tests.

The interfaces

sqlly-gpui

The product: every view, pane, and dialog of the desktop app, the theme, and the bindings between interface and services. The largest crate, and the one you spend your day in. 4,009 tests.

sqlly-browser

The same gpui app compiled to WebAssembly for the in-tab browser preview; browser-impossible subsystems are swapped for web equivalents or clearly disabled. It adds no tests of its own - correctness comes from the crates it wraps. 0 tests.

sqlly-cli

The command-line surface: the engine subprocess the app spawns (with request/response correlated logging), standalone CLI commands, and the MCP server with its agent tool loop. 393 tests.

sqlly-lsp

A Language Server Protocol server for T-SQL, backed by the same IntelliSense model the app uses, so editors like VS Code get the completions SQLly is tested on. 36 tests.

Remote access & transport

sqlly-wire

The relay's outer-frame codec: chunking, reassembly, and capacity math for the binary protocol that flows between clients, the relay, and on-prem bridges. 48 tests.

sqlly-remote

Everything between a SQLly client and an engine that is not in the same process: the transport that carries requests and streamed results over the relay path. 94 tests.

sqlly-bridge

The on-prem responder daemon: runs inside your network, dials out to the relay, and makes your database reachable from your own remote SQLly sessions without any inbound port. 64 tests.

sqlly-relay

The public TLS forwarding relay: routes encrypted traffic between a traveling client and its on-prem bridge while remaining unable to read it. 41 tests.

Test support

sqlly-testkit

Shared test infrastructure: golden-file comparison with cross-platform line-ending handling, live-database conformance harnesses, and container helpers used by the engine suites. 8 tests.

Counts drift with the code. The numbers above are a snapshot; run scripts/count-rust-tests.sh for the current per-crate table and total.