Security and honesty
What leaves your machine, what is stored, and what jevql will not do.
What is sent
Only the rows that survive your SQL filters, only the columns of the judged source, as JSON. Nothing else about the schema or the query is sent. --explain shows the exact collect SQL and how many rows it returns without making any API call.
What is stored locally
~/.cache/jevql/cache.db: sha256 keys derived from row contents, and the answers. Mode0600. Not encrypted.\cache cleardeletes everything.~/.config/jevql/env: only if you accept the offer on first launch. Holds the database URL (with password) and API key in plain text, mode0600.- The REPL history at
~/.cache/jevql/history.
Keys
The API key comes from --api-key, TYPESAFE_API_KEY, the prompt, or the config file. It is never printed and never logged, including with -v. TYPESAFE_API_URL lets you route through a proxy that injects credentials, so the key need not exist on the machine at all.
Cost controls
--max-rows(default 2500) aborts before any HTTP call when the collect is too large. Exit code 2.--max-charsdoes the same by payload size.- The footer and
-vreport tokens and dollars from the usage the API returns; the price used is $0.042 per million input tokens.
What it is not
- Not a Postgres extension. The server never learns
jev(); applications sending it through a driver will fail until they go through jevql, an SDK, or a real extension. - Not a wire-compatible psql for GUI tools.
- Not a sampler. A jev query judges every row the SQL lets through. Cheap predicates first.