← All Releases

v0.2.33

LATEST2026-07-05

CHAT WITH MARTIN

Meet Martin — DVT's data agent. Ask your project a question in English; Martin writes the SQL, DVT guards it and answers it live through federation. Chat with Martin ships on port 46104 with the whole suite: a code-verified expert corpus inside the wheel, a / palette over your actual models and sources, sessions that persist per project, canvas charts, and assets you save for the Dashboards to come. One AI outlet: AI-Proxy — your existing subscriptions or fully offline Ollama behind one gateway.

ADDED

  • Chat with Martin on :46104, part of dvt serve (or standalone: dvt chat). Every answer executes live through the same virtualization path as the api-portal — never a stale table, and the SQL that ran is always one click away.
  • Martin is AGENTIC: he investigates with DVT's own tools before answering — run_sql through the same guard and live federation, get_columns and list_relations from the profiler's catalog, save_asset on request. Budget-capped, tool errors self-correct, and every answer that used tools shows MARTIN'S WORK: the full trace, call by call.
  • @ file references, CLI-agent style: type @ for a project-file palette; Martin reads the mentioned file (read-only, project-jailed, credentials refused) and follows YOUR project's conventions — DVT's medallion layout is a recommendation for fresh projects, never a rule.
  • Rich answers, three tiers: markdown with images and tables, theme-aware canvas charts, and sandboxed HTML artifacts — KPI cards and custom visuals render inside a no-network iframe, so a poisoned answer can't touch anything.
  • /generate-sources <connection> — the project kick-start: DVT runs the engine-correct metadata query live (every database adapter, from information_schema to Oracle's all_tables to sqlite_master), and proposes one sources.yml declaring every schema and table — meta.connection included, names collision-proofed, prune and APPLY. Zero LLM tokens as a slash command; also one of Martin's tools.
  • Plan mode, shift+tab: flip to ◔ PLAN and Martin investigates but cannot touch — write tools locked server-side — answering with a step-by-step plan of the files, configs and commands; flip to ⏵ EXECUTE and say go. The mode persists, tints the input, and badges his answers.
  • Martin DEVELOPS — behind your click: he proposes model files (config blocks composed by a tool that knows every valid DVT config and refuses illegal combos with the reason), sources.yml and schema yml at your detail level (minimal / documented / tested, meta.connection enforced), and dvt run/test/build commands — each as a card with ✓ APPLY. Writes are jailed to models/ with backups; execution is verb-whitelisted and waits for you.
  • The guard: exactly one SELECT, forbidden constructs and file-reading functions refused, LIMIT enforced and capped. /sql runs raw SQL through the same guard with no LLM in the loop.
  • The / palette: your models (with their columns) and sources autocomplete into the question; /model lists the AI models your gateway actually serves and pins your pick.
  • One AI outlet, by design: AI-Proxy (aiproxy.meta-thinking.net) — a self-hosted OpenAI-compatible gateway over the subscriptions you already own, with local Ollama routing for air-gapped floors. On-prem, one connected box serves models to the whole network. DVT never takes per-token API keys; the gateway credential lives in hub Settings, never echoed, and all chat writes answer loopback-only.
  • Sessions, markdown answers, theme-aware canvas charts (bar / line / pie / scatter), and per-result actions: SAVE ASSET, RERUN LIVE, COPY SQL, PNG, CSV. Saved assets are the seed of DVT Dashboards.
  • The expert corpus ships inside the wheel: doctrine, engine behavior, connections, honest limitations — code-verified grounding, so the assistant plays by DVT rules instead of stale dbt priors.
  • Hub → Settings → AI CREDENTIALS reworked to the connections UX: the AI-Proxy credential is a card — ACTIVE, deletable, re-addable — with a TEST button that asks the gateway for its model list, separating 'key saved wrong' from 'service down' in one click, plus the download link and install line.
  • Data Profiling on :46105 — null bars, distincts, min/max and averages for every model and source, computed live through federation: databases run their own aggregate (one row over the wire), files compute in DuckDB. No dbt package, no adapter matrix, nothing added to your DAG. Columns come from the catalog when it's fresh and are discovered live from the relation itself when it isn't — mixed-case spellings self-heal. Batch-profile with checkboxes four-at-a-time, STOP mid-flight, CLEAR what you choose; dots go green or red with the engine's real error. Profiles cache per project; RE-PROFILE is always fresh.
  • LOG IN / LOG OUT in hub → Settings → ACCOUNT: the dvt login device flow, GUI-first — the approval page opens in the browser you're already in, and the account card refreshes the moment you approve.
  • Amazon Athena graduates to full adapter support: federation extraction and federated targets via Sling, mapped straight from your dbt-athena profile (s3_staging_dir, region_name, optional s3_data_dir and workgroup).

FIXED

  • Gateways that drop the system role no longer lose the grounding — it folds into the first user turn. Gateway hiccups come back as plain-language guidance (stale model ids, auth cooldowns, rejected sampling params are retried without them) instead of raw provider JSON.
  • Bare `dvt` help rewritten to the real command surface — transform, environment, the app suite with its ports, and account commands.

Get it: pip install dvt-core==0.2.33 · wheels on PyPI for macOS (arm64 + x86_64) and Linux, Python 3.10–3.12.