FAQ¶
Short answers; each links to the page that carries the mechanism.
How is this different from a context layer?¶
Context-path tools (ktx, dbt MCP, catalogs feeding an agent) make the agent better informed — and leave it holding warehouse credentials, authoring its own SQL, with the same unchecked reach. dst governs the answer path instead: the caller asks, a governed layer grounds, generates and guards the SQL, executes read-only, and returns a cited answer — the caller never touches the warehouse. Serving answers rather than context is a deliberate stance, argued rather than assumed. See the answer path and Compared to the industry.
Why did it refuse my question instead of answering?¶
Because a wrong answer is worse than no answer. A question that uses an ambiguous governed term without picking a meaning gets a clarification; a question naming a metric the lens deliberately excluded is refused before any model call; absent data is a decline, never a confident zero. All of it is enforced in code that runs before or after the model — never by a prompt rule alone, because a prompt rule is a request and models do violate them. See Clarification & refusal.
Why does this answer have no prose, just a data frame?¶
The figure gate fired. Composed prose must pass numeric grounding — every number
in the sentence traceable to the rows that came back. When it fails, composition
is retried once; when the retry fails too, the prose is withheld entirely: the
response sets composition: "fallback" and the answer becomes a code-generated
frame over the data block, never model prose. The data is true; the sentence was
not trustworthy, so you didn't get one. A degraded-but-true answer is an
outcome; an invented figure is not. See the answer path.
Which LLM does it use? Do I bring my own keys?¶
Your models, your keys. Providers are declared in dst.yaml by wire protocol —
anthropic, openai-compatible (covers OpenAI, DeepSeek, Ollama, vLLM, most
gateways), voyage for embeddings — with no vendor-named settings: the core knows
wire shapes, your config knows vendors. Keys enter as env-var names only; an inline
key in a committed file is a parse error. See Configuration.
What is open source and what is paid?¶
The governed serving stack is open source: lenses, the query pipeline and its guards,
certified answers, the review queue, the router, MCP, the dashboard. Bootstrapping a
layer from query history is OSS too — as the scaffolded
history-bootstrap skill your own agent runs, not as a server
feature. Paid is operations and unattended machinery, never judgment: hosting with
managed Postgres, SSO/SAML and RBAC, audit export, managed evals, bundled model keys,
and the continuous drift-audit engine. The core never gates behavior on edition —
DST_EDITION is UI badging only (services/config.py:75).
Why can't I create a lens in the dashboard?¶
Files author; the UI governs. Lenses, entities, definitions, and certified answers
live in your repo and deploy through dst plan / dst apply — versioned,
diffable, reviewable like the rest of your code — while the dashboard rules reviews,
watches cost and drift, and browses versions. A UI that authored server-side state
would silently revert on the next apply of the same files. See
Project files.
Which warehouses does it support?¶
Five warehouse connectors — DuckDB, Postgres, MySQL, BigQuery, Snowflake — each
read-only in layers: guarded SELECT-only SQL first, a read-only credential or session
as the backstop. Prose context is bring-your-own: your driver agent or scripts push
docs into a lens via the /mgmt/lenses/{name}/context/* endpoints. See
Connect a warehouse.
Do I have to write an eval suite?¶
No — the certified library is the suite. Every active certified answer doubles as a
regression test: its stored SQL is executed as the oracle, the question is re-asked
through generation with certified matching disabled, and the executed results are
diffed. dst test runs the full corpus; the same check gates dst apply,
scoped to the answers a push actually touches. See
Evaluation and Certified answers.
(Nothing here is answered only on this page.)