SQLly Embedded

Host SQLly inside your own web app: what is in the package, how the bridge, your app and sqlly.app fit together, and where to start.

SQLly Embedded puts the browser build of SQLly inside your own web app. Your users get the full workbench on a page of your site: the SQL editor with IntelliSense, the object explorer, results grid, charts, and execution plans. Your server keeps every database password. You decide which connections each group of users sees, and the SQLly bridge enforces your license.

What you run

PieceWhat it doesWhere it runs
Your web appSigns your users in, decides which profile (set of connections) each one gets, asks the bridge for a launch token, and serves the page that loads SQLly.Your server
SQLly bridge (sqlly-bridge embedded)Holds the profiles and their credentials, mints launch tokens, accepts browser WebSockets, runs one engine per session, counts seats, and checks the license with sqlly.app.Your server, next to your app
SQLly engine (sqlly-cli)Connects to your databases and runs queries for one browser session. The bridge starts and stops it; nothing else talks to it.Your server (child process of the bridge)
SQLly web bundle (web/)The SQLly app compiled to WebAssembly. Static files your app serves.Your users' browsers
sqlly.appIssues your license and signs a short-lived grant every time the bridge checks in (every 20 minutes). Offline licenses never contact it.Ours

The package also includes a sample admin app (Node.js, no dependencies) that does everything your app would: an admin screen for profiles, labels and users, and a sign-in page that opens SQLly for each user. Run it to see the whole flow, then replace it with your own app, or start from its code.

In this section

How it works
The theory of operation: the bridge, the engine per session, launch tokens, the signed license grant, check-ins, seats, the Origin rule, and where credentials live.
Quick start
Run the SQLly Embedded package on localhost in five minutes: start the bridge and the sample app, link a license, add a profile, and open SQLly as a user.
Sample app tour
A screen-by-screen tour of the sample admin app that ships with SQLly Embedded: status and licensing, profiles and connections, labels, users, and launching SQLly.
Build your own app
Step by step: drive the SQLly Embedded bridge from your own web app - store profiles, mint launch tokens, serve the browser build, release seats and link installs.
API reference
Every endpoint of the SQLly Embedded bridge's management API, generated from its OpenAPI (swagger.json) document, plus the sqlly.app linking endpoints.
Licensing
Plans, seats, sessions, instances, domains, check-ins, grace periods, offline license files, every license state the bridge can be in, and how to fix each one.
Going to production
TLS, reverse proxies, the licensed domain, service managers, backups, Content-Security-Policy and isolation headers, and a production checklist for SQLly Embedded.

Pick a path

The short version

  • Credentials never reach the browser. A profile's passwords live in the bridge's state directory. The browser only receives the connection list (names, engines, labels) and sends queries over the bridge's WebSocket.
  • Seats are concurrent users. A user holds a seat while SQLly is open for them, or while they hold an unexpired launch token. It frees the moment they're done. Paid plans allow four tabs per user.
  • One domain per license, with every subdomain included. The bridge only accepts browsers whose Origin is on that domain (plus localhost while you develop).
  • Every engine SQLly supports works through the bridge: SQL Server, Azure SQL, PostgreSQL, MySQL, MariaDB, SQLite, DuckDB, ClickHouse, Oracle, libSQL/Turso, Redis and Valkey, and the cloud variants.
  • Connected or offline. Connected licenses check in with sqlly.app every 20 minutes. Offline licenses are a signed file the bridge verifies locally and never phone home.

Plans and prices are on the SQLly Embedded page. Download the package for your platform from Downloads, and manage your licenses, keys and linked installs on your Embedded page.