Cloud Parts

Bruin

One Go command-line tool that ingests data, runs SQL and Python transformations and checks the results, with each step a file in your repo.

Type
Open source
Made by
Bruin Data Limited
License
Apache 2.0 (the CLI, since its first commit in 2023); the ingestr engine it installs is FSL-1.1-ALv2 since its 2026 Go rewrite (each release becomes Apache 2.0 after two years; earlier Python versions are MIT); Bruin Cloud is proprietary
Facts checked
6 October 2026

What it is

A Bruin project is a git repository. .bruin.yml at the root holds environments and connection credentials; each pipeline folder has a pipeline.yml and an assets/ folder, and every asset is one file. A SQL asset starts with a /* @bruin ... @bruin */ YAML header giving the table name, the platform (duckdb.sql, bigquery.sql, snowflake.sql and so on), how to materialize it (table, view or an incremental strategy such as merge) and its upstream depends. Python assets carry the same kind of header and run in their own uv environment. An ingestr asset copies a table from a source connection into the warehouse. bruin run executes assets in dependency order, inside your warehouse, and after each one runs its column checks (not_null, unique, non_negative, custom SQL); a failing blocking check stops everything downstream. bruin lineage shows upstream and downstream assets, and the SQL parser can trace lineage down to columns.

The CLI keeps no server and no scheduler: you run it on a laptop, a VM or GitHub Actions, and the schedule in pipeline.yml is read by Bruin Cloud or your own scheduler. Bruin Data Limited, an English company incorporated in June 2023, builds it alongside ingestr, its ingestion engine. Bruin Cloud bills per second at $0.01 per credit: SQL assets, and Python or ingestion assets on the default 256 MB size, cost 250 credits ($2.50) an hour, rising to $160 an hour at 16 GB, and AI tasks cost 100 to 300 credits each. New accounts get $100 of credits; the Scale plan adds committed-use discounts, SSO and an SLA.

Why teams pick it

  • Ingestion, transformation, quality checks and lineage in one tool and one file format, instead of three or four products glued together
  • A single Go binary with no server, so the same pipeline runs locally and in CI
  • Wide platform support: 28 warehouse and lake platforms (BigQuery, Snowflake, Databricks, DuckDB, Postgres, ClickHouse, Trino and more) and over 130 ingestion sources
  • SQL, Python and R assets in the same pipeline, with Python isolated per asset by uv
  • Apache 2.0 CLI and an open-source VS Code extension that renders queries, lineage and checks

Watch out for

  • Young: still version 0.x after three years, with releases almost daily (0.11.773 on 6 October 2026) and a small community next to Airbyte or dbt
  • The ingestion engine is not plain open source any more: ingestr 1.x is under the Functional Source License, which bars competing uses until each release turns Apache 2.0 after two years
  • No scheduler or retry service in the CLI: production scheduling means Bruin Cloud, cron, GitHub Actions or another orchestrator
  • Assets use Bruin’s own comment-header format, so pipelines do not move to dbt or Airflow without rewriting
  • Lakehouse support (Iceberg and DuckLake through DuckDB or Trino) is still marked beta

Alternatives

What all etl & elt pipelines have in common →
AirbyteCommercialAn ELT platform you can host yourself: hundreds of connectors, each a Docker image speaking one JSON protocol, scheduled by services on Kubernetes.Apache NiFiOpen sourceA Java dataflow server you program by drawing a graph of processors in a web UI, with buffered queues, back pressure and a record of where every piece of data went.ArtieCommercialA managed change data capture service that copies every insert, update and delete from production databases into a warehouse, aiming for under a minute of delay.DagsterOpen sourceA Python data orchestrator built around assets: you declare the tables, files and models that should exist, and Dagster works out what to run.dbtOpen sourceSQL `select` statements in git, built into warehouse tables in dependency order, with tests and docs alongside.EstuaryCommercialA managed data-movement platform that captures changes from databases and SaaS sources into collections kept as JSON files in your own bucket, then keeps warehouses and other systems in sync, in real time or on a schedule.FivetranCommercialManaged connectors that copy data from SaaS apps, databases and files into your warehouse or lake, billed by the rows that change each month.MeltanoOpen sourceA command-line ELT tool that runs Singer taps and targets from a `meltano.yml` project kept in git.OLakeOpen sourceAn open-source tool in Go that copies databases, Kafka topics and S3 files into Apache Iceberg tables (or plain Parquet), with full loads, incremental syncs and CDC, and no Kafka, Debezium, Spark or Flink in between.

How it fits with other technologies

assets/mart/revenue_daily.sql: a DuckDB asset with checks, run with `bruin run` · sql

/* @bruin
name: mart.revenue_daily
type: duckdb.sql
materialization:
  type: table
depends:
  - raw.orders
columns:
  - name: order_date
    type: date
    checks:
      - name: not_null
      - name: unique
  - name: revenue
    type: double
    checks:
      - name: non_negative
@bruin */

SELECT CAST(created_at AS DATE) AS order_date,
       SUM(amount)              AS revenue
FROM raw.orders
GROUP BY 1

What one Bruin pipeline replaces#

Bruin’s docs describe it as what you would get if “dbt, Airbyte, and Great Expectations had a lovechild”. This is how each job maps.

JobIn BruinUsually a separate tool
Ingestioningestr assets (YAML) or Python assetsAirbyte, Fivetran, Meltano
TransformationSQL, Python and R assets with materializationsdbt
Data qualityColumn and custom checks that block downstream assetsGreat Expectations, dbt tests
Lineagebruin lineage and column-level lineage from SQL parsingA data catalog
SchedulingBruin Cloud, or your own cron or CIAirflow, Dagster

Bruin Cloud compute prices#

Pay as you go at $0.01 per credit, billed per second while an asset runs. List prices checked on 6 October 2026.

Asset sizeCredits per hourPrice per hour
SQL asset250$2.50
Python or ingestion, 256 MB (default)250$2.50
1 GB1,000$10
4 GB4,000$40
16 GB16,000$160
  • AI tasks cost 100 to 300 credits ($1 to $3) each. New accounts get $100 of credits and 50 AI tasks; the self-hosted CLI is free.

See it in a real stack

No architecture uses Bruin yet. Drop it into the playground and wire it up yourself.Open playground →
Where it came from2023–2026

Burak Karakan and Sabri Karagönen started Bruin Data in 2023, incorporating in England that June. Their complaint was the modern data stack itself: one tool to ingest, another to transform, another to check quality, another to orchestrate, and a pile of glue between them. Karakan’s launch post sketches the setup teams typically described: Airflow triggering Airbyte and waiting on sensors, calling dbt Cloud, spinning up pods for checks, while analysts wait six weeks for a new chart.

The first commit landed in July 2023 and v0.1.0 was tagged that December. In early 2024 the team split ingestion out as ingestr, a command-line tool that copies a table from a source URI to a destination URI, first written in Python on top of dlt. Bruin CLI and its VS Code extension were launched publicly in December 2024, with a hosted Bruin Cloud announced alongside.

In 2026 ingestr was rewritten in Go for version 1.0 and moved from MIT to the Functional Source License, while the Bruin CLI stayed Apache 2.0.

Why it’s built this way

One tool for ingestion, transformation and quality
The founders saw most breakages and delays in the glue between separate products, and argued that work which belongs together should live in one framework.
Assets as files with an embedded YAML header
Keeping configuration next to the SQL or Python in the same file means the whole pipeline is versioned, reviewed and run from a git repo.
Written in Go
A single static binary is easy to install anywhere, from a laptop to GitHub Actions, without a Python environment for the CLI itself.

Timeline

  1. 2023

    Bruin Data incorporated in June; first commit in July; v0.1.0 in December

  2. 2024

    ingestr released in February; public launch of Bruin CLI in December

  3. 2026

    ingestr 1.0 rewritten in Go and relicensed under FSL

Sources18 · facts checked 6 October 2026

Improve this page on GitHub