Marquez: product and architecture
The short verdict from this Marquez review: if your organization has standardized on OpenLineage and wants a self-hosted lineage backend you fully control, Marquez is the reference implementation and the obvious default — and if you want an out-of-the-box governance platform with business glossaries, access workflows, and a vendor SLA, it is the wrong tool and you will be disappointed. Marquez is not a data catalog and, despite being filed under data-quality taxonomies, it is not a data quality or testing framework either. It is a metadata service: a Java API server with a Postgres-backed store and a web UI, published under Apache-2.0, that ingests OpenLineage events and renders them as a lineage graph. That narrowness is the product's greatest strength and the single biggest reason teams outgrow it.
Overview
Marquez (marquezproject.ai) describes itself as an open-source metadata service for collecting, aggregating, and visualizing data lineage, and the GitHub repository summarizes the same scope: "Collect, aggregate, and visualize a data ecosystem's metadata." The project carries 2,275 GitHub stars, is written primarily in Java, and is licensed Apache-2.0 — a permissive license with no copyleft obligations, which matters if you plan to fork it or embed it inside an internal platform.
The architectural center of gravity is the relationship with OpenLineage. Marquez is the reference implementation of the OpenLineage specification, and its metadata server exposes an OpenLineage-compatible endpoint for real-time collection from running jobs and applications. The practical consequence is that Marquez inherits the entire OpenLineage integration surface without writing bespoke connectors: Apache Airflow, Apache Spark, Apache Flink, dbt, and Dagster all emit events Marquez can consume as-is.
The second half of the product is the web UI, which renders a visual map of interdependencies across your ecosystem. It lets you browse stored metadata, inspect the inputs and outputs of each job, trace the lineage of an individual dataset, and review performance metrics and execution details attached to specific runs. That run-level detail is what separates Marquez from a static diagram — lineage here is a byproduct of actual execution, not a hand-maintained document.
One signal deserves candid treatment. The repository's most recent push is dated 2026-09-07, so development activity is current, but the latest tagged release is 0.50.0 from 2024-10-24. Nearly two years between tagged releases means teams that pin to published artifacts are running considerably older code than what is on the main branch. We treat the 2,275 stars and the topic tags (data-dictionary, data-discovery, data-ecosystem-metadata, data-governance, data-lineage, data-ops, data-provenance) as public adoption and positioning signals, not as evidence of production deployment counts, which the project does not publish.
Key Features and Architecture
Marquez is deliberately a small number of components doing one job well. The following are the pieces that actually determine whether it fits your stack.
- OpenLineage-compatible HTTP ingestion endpoint. The metadata server accepts OpenLineage events over HTTP in real time from running jobs, rather than scraping schedulers or parsing logs after the fact. Because the payload contract is the OpenLineage spec rather than a Marquez-proprietary format, the emitting side of your pipeline is not coupled to Marquez — you can redirect the same events to a different OpenLineage consumer later without touching pipeline code.
- Reference implementation status. Marquez is the reference implementation of OpenLineage, which is a technical statement, not a marketing one: it means the API server already works with every integration the OpenLineage community has built, including Apache Airflow, Apache Spark, Apache Flink, dbt, and Dagster. For a team already running Airflow and dbt, instrumentation is a matter of configuring the existing OpenLineage integration to point at the Marquez endpoint.
- Job/run/dataset metadata model. Marquez receives, processes, and stores lineage metadata using the OpenLineage standard, which models the world as jobs, runs, and datasets rather than as free-form assets. Storage is relational (Postgres), which means lineage is queryable with SQL if you need reporting that the UI does not provide — useful for compliance extracts and for building your own internal views.
- Run-level execution and performance metadata. Beyond graph edges, the UI surfaces execution details and performance metrics per run. This is what makes Marquez usable for incident work: you can look at a dataset, walk upstream, and see which specific run produced the version you are questioning, instead of only seeing that a dependency exists in the abstract.
- Visual lineage graph with dataset-level tracing. The web UI renders complex interdependencies as a navigable map, with the ability to browse inputs and outputs per job and trace lineage for an individual dataset. It is a purpose-built lineage explorer rather than a general search-first catalog experience.
- Self-hosted Java service under Apache-2.0. The primary language is Java, so operating it means running a JVM service alongside a Postgres database. The Apache-2.0 license imposes no share-alike requirement on modifications, which is why Marquez frequently shows up embedded inside larger internal data platforms rather than as a standalone end-user product.
The trade-off in this design is explicit: everything Marquez knows, it knows because something emitted an OpenLineage event. There is no crawler that will discover your warehouse for you.
Ideal Use Cases
Platform teams standardizing on OpenLineage. The clearest fit is a data platform group of roughly three to ten engineers that runs Airflow or Dagster for orchestration, Spark or Flink for processing, and dbt for transformation, and wants one lineage backend for all of it. Because all five of those tools are covered by OpenLineage integrations Marquez already supports, the work is instrumentation and deployment rather than connector development. We recommend Marquez for exactly this team profile — it is the lowest-friction way to turn an existing OpenLineage commitment into a working graph.
Incident triage and impact analysis in mid-size engineering organizations. For a company running hundreds to low thousands of scheduled jobs, the recurring question during an incident is "what else consumed this table before we caught the problem?" Marquez answers that by letting an on-call engineer trace a dataset's lineage and inspect the run that produced it, including execution details. Analytics engineers get the mirror-image benefit: before deprecating a model, walk downstream and see what actually reads it, as observed from run history rather than from tribal knowledge.
Regulated environments that cannot send metadata to a vendor. Financial services, healthcare, and public sector teams often cannot route pipeline metadata through a third-party SaaS control plane. A self-hosted Apache-2.0 Java service with a Postgres store keeps all lineage inside your own network boundary, and the permissive license means legal review is usually straightforward. Data provenance and data-governance are explicit topics on the repository, and the SQL-queryable store makes audit extracts tractable.
Embedding lineage inside an internal platform. Some teams do not want the Marquez UI at all; they want a lineage API behind their own portal. Apache-2.0 plus a documented ingestion contract makes that viable.
Don't use this if you need a business-facing data catalog — glossary terms, ownership workflows, certification badges, column-level policy enforcement, and non-technical search. Marquez is a lineage service, not a governance suite, and bolting those capabilities on top is a multi-quarter internal project. Equally, don't use this if you have no OpenLineage emitters and no appetite to add them, or if you have no one on staff who can operate a JVM service and a Postgres database in production.
Pricing and Licensing
Pricing details are not published in the supplied source data.
What is published is the licensing and distribution model, and it is unambiguous: Marquez is open source under Apache-2.0, distributed free of licensing charges. That model determines the cost structure more than any price list would. There are no per-seat fees, so the number of engineers, analysts, or stakeholders browsing the lineage graph has no effect on cost — a meaningful difference from commercial catalog platforms, where widening access to non-technical users is the main driver of contract growth. There is likewise no usage-based metering on events ingested or datasets tracked, so a team that instruments every Airflow DAG and every dbt model pays nothing incremental for the additional metadata volume.
The cost moves entirely to total cost of ownership on your side. You are responsible for running a Java service and a Postgres instance: compute, storage, backups, upgrades, TLS termination, authentication, and monitoring. Lineage storage grows with run volume rather than with data volume — a pipeline processing terabytes produces the same event footprint as one processing megabytes — so the database sizing question is "how many runs per day, retained for how long," and retention policy is the main lever you control. Budget for the engineering time to answer that, plus periodic Postgres maintenance.
Apache-2.0 carries no copyleft obligation, so modifications and internal embedding require no source disclosure, and there is no vendor lock-in risk on the license itself. The genuine risks are operational rather than contractual. There is no commercial SLA in the published model, which means production incidents are your team's to resolve, and the release cadence is yours to absorb: with the latest tagged release at 0.50.0 (2024-10-24) and pushes continuing through 2026-09-07, teams must decide whether to run tagged artifacts or build from a newer commit, and own the consequences either way. For organizations that require contractual support, that gap is the decisive cost factor, and it is not one money can close within this model.
Strengths & Trade-offs
Pros
- Zero connector work for five major engines. Because Marquez is the OpenLineage reference implementation, Airflow, Spark, Flink, dbt, and Dagster metadata flows in through community-maintained integrations rather than code you write and maintain. This is the single highest-leverage property of the tool.
- Lineage is derived from actual runs, not declarations. The UI exposes per-job inputs and outputs plus execution details and performance metrics, so the graph reflects what executed rather than what someone documented. Stale lineage is a common failure mode elsewhere; Marquez structurally avoids it for instrumented pipelines.
- No lock-in at either end. Apache-2.0 on the code, OpenLineage on the wire. If you replace Marquez, your emitters keep working; if you fork Marquez, the license permits it without source disclosure obligations.
- Relational, queryable metadata store. Lineage in Postgres means audit reports, custom dashboards, and bulk extracts are SQL problems, not API-pagination problems.
- Cost scales with runs, not with seats or data volume. Onboarding the whole analytics org to the lineage UI adds no licensing cost.
Cons
- Nothing is discovered automatically. Any system that does not emit OpenLineage events is invisible. Hand-rolled Python scripts, stored procedures, BI-tool transformations, and ELT vendors without OpenLineage support leave holes in the graph, and a lineage graph with silent gaps is dangerous precisely because it looks complete.
- The tagged release cadence is a real operational concern. Release 0.50.0 dates to 2024-10-24 while the repository was pushed as recently as 2026-09-07. Teams with change-control policies that require versioned artifacts are choosing between old tags and unreleased commits.
- It is not a catalog, and the category label is misleading. Despite data-discovery, data-dictionary, and data-governance appearing as repository topics, Marquez does not deliver glossary management, ownership workflows, or policy enforcement, and it does not perform data quality testing at all. Buyers who read "data-quality" as the category will mis-scope the project.
- Java plus Postgres is an operational commitment. Small analytics teams without platform engineering support will spend more time on deployment, upgrades, and auth integration than they expect, and there is no commercial SLA to fall back on.
- Adoption evidence is limited to public proxies. 2,275 GitHub stars indicate visible community interest; the project publishes no enterprise deployment counts, uptime data, or reference customer numbers, so scale evidence has to come from your own pilot.