← All Releases

v0.2.16

2026-07-03

THE API PORTAL

DVT grows a serving layer: switch any model on for REST consumption from a themed local portal — column-level access control, optional API keys, live queries against the model's own engine. Around it, the new DVT app suite on ports 46100–46109: one dvt serve starts the hub, the catalog, and the api-portal.

ADDED

  • The api-portal (port 46102): every model in your project, searchable, each with an exposure switch and per-column access control. Enabled models serve GET /api/v1/models/<name> with equality filters, limit/offset pagination (max 1000), and JSON rows — live-queried from the model's target engine on every call, whatever that engine is.
  • Optional API keys: the portal generates a dvt_ bearer token (stored hashed, shown once) and a switch turns enforcement on or off.
  • The dvt hub (port 46100): the front door — buttons into the catalog and api-portal, your license and plan at a glance, and which DVT apps are running.
  • dvt serve: one command starts the whole suite as detached processes — dvt serve -s api-portal starts exactly one. dvt kill remains the off switch, and dvt kill -s catalog|api-portal|hub takes down exactly one app: the same -s vocabulary in both directions.
  • DVT owns ports 46100–46109 — far from every tool that usually squats on a data engineer's machine. The catalog moves to 46101 (from 8080); 46103+ are reserved for what's next.

CHANGED

  • dvt retract now clears a dropped model's local incremental bookkeeping ({{ this }} indexes, ran-flags, replicas, signatures) — the project leaves no footprint, and a retracted incremental's next run behaves like a first run, no --full-refresh needed.
  • All DVT web apps bind to localhost by default; --host widens deliberately, with a loud warning.

FIXED

  • dvt retract drops override-target models where the loader actually put them (the override output's profile schema), and quotes postgres-family identifiers so a schema named 'default' — a reserved word — retracts cleanly.

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