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.
scripts/count-rust-tests.sh for the current per-crate table and total.