Library / SDK
meltano/meltano avatar
meltano/meltano

Meltano: a declarative CLI for Singer-based ELT pipelines

Meltano: the declarative code-first data integration engine that powers your wildest data and ML-powered product ideas. Say goodbye to writing, maintaining, and scaling your own API integrations.

2,644 stars272 forksPythonMIT

At a glance

What is it?
Meltano wraps Singer taps and targets in a project directory with YAML plugin definitions and a CLI. It suits teams that want to version their extraction and loading logic instead of running a hosted connector platform.
Who is it for?
Adopt Meltano if you want Singer taps and targets driven from a versioned project directory and you are comfortable owning the scheduler and the database. Do not adopt it if you need a hosted control plane or a visual pipeline builder, because the README describes a CLI and a Hub, not a service.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 1, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The integration maintenance problem Meltano targets

Every company that pulls data from SaaS APIs eventually writes the same code twice: once to authenticate and paginate against the source, and again to reshape the response into rows a warehouse will accept. That code breaks when the vendor changes a field name or rotates an auth scheme. Meltano's answer is to stop writing it. The README frames the project as a way to "Say goodbye to writing, maintaining, and scaling your own API integrations," and the mechanism is a catalogue of pre-built connectors rather than a framework you extend by hand.

The audience is data engineers who already think in terms of extract and load stages and are willing to run a command-line tool. The pyproject description calls Meltano "your CLI for ELT+" and lists dbt among its keywords, which signals the intended shape of a stack: Meltano moves data, dbt transforms it. If your team has no one who can read a YAML file and debug a Python process, this is a poor fit from the start.

How a Meltano project, the Hub and Singer fit together

A Meltano project is a directory. Plugins are declared in YAML, and the CLI reads that declaration to install and invoke the underlying executable. Meltano Hub is the registry: the README calls it "the single source of truth to find any Meltano plugins as well as Singer taps and targets," and notes that users can add plugins so they become "immediately discoverable and usable within Meltano."

Singer supplies the actual data movement contract. A tap reads from a source and emits records; a target consumes them and writes to a destination. Meltano does not replace that protocol, it orchestrates it, which is why the repository topics include both tap and target. The practical consequence is that the quality of any given connector is the quality of that tap or target, not of Meltano itself. A broken tap is a broken pipeline regardless of how clean the project file looks.

The CLI is built on Click, and the dependency list includes SQLAlchemy and Alembic, which indicates a local state database that Meltano migrates as it upgrades. That database is part of your project directory and part of your backup story.

Installing Meltano and checking the container images

The README points to an Installation guide rather than giving pip commands inline, so the canonical path is the documentation at docs.meltano.com. The package is published on PyPI, and the repository's pyproject.toml sets requires-python to ">=3.10", so confirm your interpreter before installing.

Meltano also ships container images. The README distinguishes them explicitly: slim images are "optimized size, includes cloud storage support" and full images "includes all database connectors and build tools." The README gives these two commands to check a version.

bash
docker run --rm meltano/meltano:latest-slim --version
docker run --rm meltano/meltano:latest --version

Each prints the Meltano version and exits. If you need MSSQL or PostgreSQL connectivity, the README steers you to the full image, and it links a Containerization guide for detailed usage.

Once the CLI is on your machine, the workflow is project-based: you initialise a project, add a plugin from the Hub, configure its credentials, and run it. The README does not print those commands, so follow the Getting Started guide for the exact syntax rather than copying a sequence from this article. What you should expect after a run is log output from the tap and then from the target, ending in a completed state message. When a tap fails, the error surfaces from the tap process, not from Meltano, and that distinction matters when you are debugging.

Where Meltano stops and you start

Meltano runs a pipeline when you tell it to. It is not a scheduler, and the README does not present it as one. If you need a pipeline to fire at 02:00 every day, you bring cron, Airflow, Dagster, or a CI job and have it invoke Meltano. That is a real boundary, and teams that expect a built-in scheduler from a tool with a UI badge will be disappointed.

The second boundary is connector quality. Meltano Hub aggregates taps and targets, and the README describes the Hub as curated by Meltano and the community. Curation is not the same as a support contract. A tap that has not been updated for a vendor's API change will fail, and your options are to wait, to patch the tap, or to write your own. The README's mention of 600+ APIs is a count of what is listed, not a guarantee about any individual connector.

Third, the local state database is a genuine operational detail. Alembic migrations run against it on upgrade, which means an upgrade is not always a no-op. Snapshot the project directory before a major version bump.

Meltano compared with Airbyte and dlt

Airbyte is the closest comparison in the related searches, and the difference is architectural. Airbyte centres on a server with a UI, a connector catalogue it maintains, and workers that execute syncs. Meltano centres on a CLI and a project directory you own. If your organisation needs a hosted control plane with a browser interface, Airbyte's model matches that requirement and Meltano's does not. If your organisation wants the pipeline definition in the same Git repository as the rest of the code, Meltano's model matches and Airbyte's adds a component you have to run.

dlt is a different kind of alternative. Where Meltano orchestrates existing Singer taps and targets, dlt is a Python library you write against directly. That means more code and more control. Meltano gives you less code and less control. The trade is real in both directions, and the deciding question is whether a maintained tap already exists for your source.

The related searches also pair Meltano with dbt, which is a category error worth correcting. Meltano moves data between systems; dbt transforms data already inside a warehouse. The pyproject keywords list both, and the intended pattern is to run them together, not to choose between them.

Licence, maintenance and upgrade cost

Meltano is distributed under the MIT licence, and the pyproject.toml declares "license = MIT" with the LICENSE file listed under license-files. MIT is permissive: you can use, modify and redistribute the code, including commercially, provided the copyright notice and permission notice are preserved. That applies to the Meltano engine. It does not automatically apply to every tap and target you install from the Hub, since each connector carries its own licence. Check those individually before shipping a pipeline into a regulated environment. This is a description of the licence text, not legal advice.

On maintenance, the last push to the default branch was on 2026-09-23, and the most recent release listed is v4.3.0 from 2026-09-21. There is also a v3.9.5 release from 2026-07-22, which tells you the 3.x line is still receiving patches alongside 4.x. If you are on 3.x, plan the move deliberately: the version jump is large, and the Alembic-managed state database will be migrated during the upgrade.

The dependency list is long and pinned with upper bounds, including Click, SQLAlchemy, Jinja2 and virtualenv. Upper bounds protect you from surprise breakage but also mean Meltano has to release to pick up a new major of any of them. Budget for periodic version bumps rather than assuming a set-and-forget install.

Editorial conclusion

Adopt Meltano if you want Singer taps and targets driven from a versioned project directory and you are comfortable owning the scheduler and the database. Do not adopt it if you need a hosted control plane or a visual pipeline builder, because the README describes a CLI and a Hub, not a service. Before committing, verify that the tap you need exists on Meltano Hub, check which Python version your environment provides against the requires-python floor of 3.10, and confirm whether the slim or full container image contains the database drivers your target needs.

Frequently asked questions

How do I install Meltano?

The README directs readers to the Installation guide at docs.meltano.com rather than listing pip commands. Meltano is also published as Docker images on Docker Hub, and the README gives docker run --rm meltano/meltano:latest-slim --version as a way to check the version of the slim image.

What is Meltano?

Meltano describes itself as a declarative code-first data integration engine, and its pyproject.toml calls it a CLI for ELT+. It runs Singer taps and targets from a project directory, with plugins declared in YAML.

Is Meltano open source and free to use?

The repository is licensed under MIT, and the pyproject.toml declares license = MIT with the LICENSE file included in license-files. That covers the Meltano engine, though individual taps and targets from Meltano Hub carry their own licences.

What is the difference between Meltano and Singer?

Singer is the protocol that defines how a tap emits records and how a target consumes them. Meltano orchestrates those taps and targets from a project directory, and Meltano Hub is described in the README as the source of truth for finding both Meltano plugins and Singer taps and targets.

What does Meltano do?

It runs extraction and loading jobs built from Singer taps and targets, configured through a project directory rather than hand-written integration code. The README presents it as a way to avoid writing and maintaining your own API integrations.

Is Meltano free?

The engine is MIT-licensed, so there is no licence fee for Meltano itself. Individual taps and targets from Meltano Hub are separate projects with their own licences.

Official sources

  1. License: MIT
  2. meltano/meltano on GitHub
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/meltano-meltano.svg)](https://hysenlabs.com/projects/meltano-meltano)