Introduction
Valved is a control plane plus an AI harness, over independently-versioned dlt/dbt/sql components — not a project that contains them. The value proposition: build, schedule, and monitor pipelines — all with AI.
Valved schedules, orchestrates, and monitors dlt (extract & load) + dbt (transform) + sql pipelines. Its AI harness builds and deploys those components for you — or you bring your own, built outside Valved, and Valved just orchestrates them.
The two halves
Section titled “The two halves”The control plane is the thing you run (valved serve, backed by Postgres). It holds the orchestration entities — pipelines, steps, schedules, jobs, runs, deploys — plus versioned references to your code components. It does not contain the components’ code. Each component is independently versioned and follows its own repo / CI-CD / lifecycle. A pipeline references each component by name and composes them into a step DAG.
The AI harness is a Claude-Code-style agentic engine that authors those components. A main orchestration loop classifies your intent and delegates to domain subagents:
- a DLT engineer — writes dlt sources, resources, and pipelines
- a dbt engineer — writes dbt models, tests, and schema docs
- a pipeline engineer — composes components into a step DAG
- a SQL specialist — writes, explains, and modifies ad-hoc and
sql-step SQL against a connection’s dialect - an explorer — answers read-only questions about your project (
valved ask)
Alongside these sit three read-only reviewers (dlt-qa, dlt-security, dbt-qa) that vet what the engineers author — see Every authored diff is reviewed — and a separate recovery agent that handles failed runs.
The harness supplies terminal-grade tools — edit, create_file, bash (allowlisted and gated per command), glob, grep, read_file — alongside domain tools like sql, dbt_manifest, dbt_conventions, dbt_verify, dlt_library, and rest_api_explore. Agents do not all get the same set: each declares its grant in its own definition, and the grants are narrow on purpose. The DLT engineer holds bash, because it has to run the pipeline it wrote; the dbt engineer does not, and reaches the warehouse through sql and dbt_verify instead.
Every agent then runs behind a permission gate with four modes in a total order: read_only < plan < build < deploy. An agent file declares only a ceiling (max_mode); the mode it actually runs at is min(caller's mode, that ceiling). Write tools are denied below build regardless of what an agent was granted, which is why a valved plan run can read, introspect, and design but cannot touch a file.
Verifying by execution
Section titled “Verifying by execution”Agents are built to ground claims in real tool output rather than assert them. The DLT engineer holds gated bash and is directed not to consider its work done until the pipeline runs green. The dbt engineer holds dbt_verify, which runs real dbt build / dbt run / dbt test over a required selector and returns the per-model result.
How far that goes depends on your project:
dbt_verifyis only offered when the engine is on disk. The project needs exactly one[components.dbt]block, that block must pindbt_engineanddbt_version, and the pinned engine must be present in Valved’s managed venv — which is whatvalved connectinstalls for a bundled component. If any of that is missing the tool is simply not handed to the agent (no error, no warning), and the dbt engineer authors without executing. A dbt component discovered by convention alone carries no pin, so it never gets the tool; neither does one configured withdbt_env = "external", sinceconnectinstalls nothing into the managed venv for it.- Materializing subcommands need
buildmode.build,run,seed, andsnapshotwrite to the warehouse, sodbt_verifyrefuses them belowbuild. Duringvalved planthe agent can rundbt test, but nothing is materialized — by design, since a plan is reviewed before any code is written.
Every authored diff is reviewed
Section titled “Every authored diff is reviewed”After the engineers author, the orchestrator — not the engineer, which never reviews its own work — routes the resulting diff through a sequence of adversarial reviewers before any build is recorded.
- The reviewers are read-only. They are delegated at
read_only, and each declaresmax_mode: read_only, so the clamp holds twice. They report; they never edit or fix. - They see only
{diff, goal}. Never the engineer’s transcript, reasoning, or self-assessment. The diff is rendered from the engineers’ harness-tracked authored file set against a pre-build snapshot, per file, so a multi-engine build cannot hide one engineer’s work behind another’s. - The sequence follows who authored. dlt work is reviewed by
dlt-qathendlt-security; dbt work bydbt-qa. A build that touched both runs all three, de-duplicated and order-stable. blockerandmajorfindings stop the build. NoBuildrow is written, the plan staysdrafted, and the findings come back to you.minorandinfofindings surface as warnings and let the build through.
Two adoption modes, both first-class
Section titled “Two adoption modes, both first-class”- Build-with-Valved — the AI authors components into your repos, and the control plane schedules them.
- Orchestration-only — you bring existing dlt/dbt/sql, Valved references them by version and only composes, schedules, and monitors. This is a central path, not a corner case — it’s exactly why the control plane references components rather than owning them.
Who Valved is for
Section titled “Who Valved is for”- The staff data engineer at a mid-size company who owns the data platform, has dbt on Snowflake, maintains a few dozen pipelines, and wants to delegate the routine 60% of their work.
- The analytics engineer who lives in dbt and wants agent assistance for model authoring, refactoring, and test generation that respects their team’s conventions.
- The agent developer building their own data-stack agent who wants a programmable backend (REST / MCP) that can plan, build, deploy, and run pipelines — Valved is headless by default. Note the surfaces are not at parity: project setup is CLI-only, and
POST /plansaccepts only{goal, pipeline_name}, so the CLI’splan --refinehas no REST or MCP equivalent.
Valved targets the SMB-to-mid-market segment. It is not designed for the long tail of large-enterprise platform requirements (multi-cluster orchestration, fine-grained RBAC across thousands of resources, custom asset-graph orchestration) — those teams are better served by Airflow or Dagster.