- How do I connect my existing Postgres to nlqdb?
- Once, with the connect verb: `POST /v1/db/connect { engine: "postgres", connection_url }`, or `nlq db connect`, the SDK `client.databases.connect`, or the MCP `nlqdb_connect_database` tool. nlqdb validates the connection, introspects your schema, seals the URL at rest, and mints a per-database key. After that you ask in English over your own database.
- Does my data leave my database when I use natural-language queries?
- No. nlqdb queries your Postgres in place over its own connection — there's no copy, no ETL, no analytics mirror. Your connection URL is sealed with AES-256-GCM at rest (`GLOBAL-031`); only a redacted connection pill is stored unsealed for the dashboard. The rows stay in your database.
- How is this different from Vanna AI or training a text-to-SQL model on my schema?
- There's no training corpus or per-tenant fine-tune to maintain. nlqdb prompts directly from your live schema fingerprint plus a recent-tables hint, caches the plan on `(goal-fingerprint, schema-hash)` (`GLOBAL-006`), and shows the compiled SQL every time. The equivalent of training is the automatic plan cache, not a curated example set you keep alive.
- Can I limit what nlqdb is allowed to do on my database?
- Yes — connect with a least-privilege role. nlqdb runs the compiled SQL with exactly the privileges your connection URL's role has, so a read-only role keeps it read-only at the engine. On top of that, the SQL validator allowlists verbs and the trace toggle shows every statement before you trust the answer.