Croft runs data pipelines in TypeScript on one DuckDB file
Croft is a Bun-only command-line tool from Zabaca that pulls data from APIs and files, transforms it with SQL or TypeScript, keeps the tables fresh on a schedule, and lives in one DuckDB file, with Claude Code able to drive it.

Image: Zabaca / Product Hunt
Why it mattersA developer who wants a small data pipeline next to their app can now run one in TypeScript with no Python or Docker, and the coding agent they already use gets JSON output and stable error codes to work from.
A small app that needs fresh data from a few APIs usually needs a Python environment, a tool like Dagster or Airflow, and a container to run them in. Zabaca released Croft, a command-line data pipeline tool written in TypeScript, that keeps the whole pipeline in one DuckDB file and runs on Bun with nothing else installed. It launched on Product Hunt this week with 68 upvotes at the time of writing, and version 0.3.0 is on npm as @zabaca/croft under an MIT licence.
The pitch, taken from the docs at croft.zabaca.com, is that Croft does the jobs dlt, SQLMesh and Dagster do together, for people who are not data engineers and who build with Claude Code or another coding agent. Zabaca says Croft is not compatible with any of those tools and does not try to be.
How a project is shaped
A Croft project is a folder. Each file in assets/ is one table named after the file: a TypeScript file is an ingest that pulls from an API or reads a file, and a SQL file is a transform over the tables above it. One croft run brings every table up to date in dependency order. The whole warehouse lives in warehouse.duckdb, and the only runtime dependency is DuckDB's Node binding, pinned exactly, with the JSON, Parquet and ICU extensions built in.
Zabaca lists four promises on the docs. Every write is all-or-nothing, with row-level checks running before the save. Ingested data is never refetched or deleted automatically, because an API window may be gone by the time you ask again. Nothing beyond Bun needs to be installed. And the tool has two users at once: the person gets plain-language output, and the agent gets --json on every command, stable error codes, and a validation loop that reads but writes nothing.
Where the agent fits
Running croft init writes a managed block in CLAUDE.md and a pinned skill at .claude/skills/croft/SKILL.md, both stamped with the project's Croft version. The skill describes the loop the agent should use (croft context --json, croft validate --json, croft preview, croft run, croft query), the error codes it will see, and the recipes for a failed run, a backfill, a rename, or a wrong number.
Every command returns one JSON envelope with a schema version, the Croft version, the database path, a problems list and a next-step list. A destructive step, for example a rebuild that refetches an ingest, a delete, or a lossy type change, exits with code 5 and a token that only croft confirm can carry out. Zabaca's recommended Claude Code permission is to add Bash(croft confirm:*) to ask and .env to deny, so the agent is stopped before any destructive command and never reads secrets. Croft itself reads .env and redacts those values from its own output.
Croft needs Bun 1.3.14 or newer on macOS or Linux. Native Windows is not supported, though WSL works with the project kept inside the Linux filesystem. The GitHub repository at Zabaca/croft is early: three stars and about a month of commits. The traction so far is the Product Hunt number above, and no independent benchmark against dlt, SQLMesh or Dagster is published.
For a team building an app that needs its own data layer and already uses Claude Code or another coding agent, Croft removes the Python step and the server step from the setup, and gives the agent a stable interface to drive. The project is a few weeks old and still at 0.3.0, so bugs are likely and the commands may change before 1.0.
Source
This item was written by an AI system from the linked source. Reveneau is responsible for what it publishes.
Get AI News in your inbox
New developer tools, model and agent releases, and how teams are actually using them to release software. Short, and only when there is something worth reading.
