What's new in 2.0

tuvl 2.0.0 (released 20 October 2026; public beta 2.0.0b3 until then — see Installation) is a redesign: workflows are graphs of typed agents, every run is durable and journaled, and projects are built spec-first. There is no 1.x compatibility layer — 1.x workflows fail to load with an error pointing at the 2.0 format. The full list of changes is in the changelog.

Highlights

  • Typed agents, seven engines


    code, tool (db / http / mcp), decide, llm, loop, human, pending — one contract (inputs, outputs, signals) for all of them. Named ends replace Response steps. Engines

  • Checked before it runs


    tuvl validate checks contracts, data flow, types and policy (V001–V029) and prints each workflow's determinism profile and worst-case token cost. Agentic Manual

  • Durable runtime


    Runs, journal and checkpoints in Postgres; leases so any worker continues any run; waits for people and tool approvals; compensation; pause, resume, abort, steer; replay. Runtime

  • Rules first, models bounded


    decide evaluates rules before a decision model and never falls back silently; loop has hard budgets, per-tool approval and a supervisor; judges are calibrated and cached. Decide · Loop and tools · Judges

  • Spec-driven


    The coding agent builds; tuvl referees. tuvl spec check checks the spec, tuvl spec verify checks the build against it, and task status is derived, never self-reported. tuvl codegen, tuvl test and tuvl lock are deterministic; tuvl mcp and 13 skills for coding agents. Spec-driven development

  • Insight 2.0


    Specs and task board, a canvas over the same YAML, runs with breakpoints and step mode, approvals, change-engine checks against pinned fixtures, judge calibration. Insight

  • REST, SSE, MCP


    gRPC is gone. OpenAPI is generated from contracts; workflows can be exported as MCP tools; @tuvl/client 2.0 generates typed clients. API

  • Ship and scale


    tuvl ship gates on validation and the lock and pins the engine version; the Helm chart can split API and worker pods. CLI

From 1.x to 2.0

1.x 2.0
steps: with kind: step types agents: with an engine: (version: tuvl/v2)
Functional + @node code agent + @agent, typed In/Out from tuvl codegen
ModelOp, APICall, MCP tool agent: use: db \| http \| mcp
Router decide agent (rules, then an optional decision model)
Agent (mode: completion / autonomous) llm agent / loop agent
HumanInTheLoop + POST /api/workflows/resume human agent + POST /api/approvals/{id}
Response step named ends in spec.outputs
kind: test + LLM judge config kind: Test (offline, mocks, replay) + type: judge artifacts
Lens / Spectrum Insight Runs page, breakpoints, step mode, Probe
gRPC / gRPC-Web REST + SSE; MCP export
/models/* CRUD for every model CRUD only for models with spec.api.crud

The examples show every pattern on 2.0.