GitHub
09/18/2026, 7:22 AMmeltano discover was removed in 1502ad647. This adds meltano hub list.
$ meltano hub list meltanolabs
2026-09-18T11:52:05.347889Z [info ] meltano Environment 'dev' is active
2026-09-18T11:52:05.379754Z [info ] meltano 45 plugins match 'meltanolabs' (6 variants hidden, show with '--all')
TYPE NAME VARIANT
───────────────────────────────────────────────────
extractor tap-airbyte-wrapper meltanolabs
extractor tap-athena meltanolabs
extractor tap-beautifulsoup meltanolabs
extractor tap-cloudwatch meltanolabs
extractor tap-csv meltanolabs
extractor tap-dbt meltanolabs
extractor tap-duckdb meltanolabs
extractor tap-facebook meltanolabs
extractor tap-flipkart meltanolabs
extractor tap-ga4 meltanolabs
extractor tap-github meltanolabs
extractor tap-gitlab meltanolabs
extractor tap-gmail meltanolabs
extractor tap-gohighlevel meltanolabs
extractor tap-google-analytics meltanolabs
extractor tap-google-search-console meltanolabs
extractor tap-jaffle-shop meltanolabs
extractor tap-jira meltanolabs
extractor tap-klaviyo meltanolabs
extractor tap-kustomer meltanolabs
extractor tap-linkedin-ads meltanolabs
extractor tap-messagebird meltanolabs
extractor tap-peloton meltanolabs
extractor tap-postgres meltanolabs
extractor tap-pulumi-cloud meltanolabs
extractor tap-salesforce meltanolabs
extractor tap-service-titan meltanolabs
extractor tap-sftp meltanolabs
extractor tap-slack meltanolabs
extractor tap-snowflake meltanolabs
extractor tap-socrata meltanolabs
extractor tap-stackexchange meltanolabs
loader target-athena meltanolabs
loader target-chromadb meltanolabs
loader target-csv meltanolabs
loader target-duckdb meltanolabs
loader target-hubspot meltanolabs
loader target-mssql meltanolabs
loader target-pinecone meltanolabs
loader target-postgres meltanolabs
loader target-snowflake meltanolabs
loader target-sqlite meltanolabs
loader target-yaml meltanolabs
utility evidence meltanolabs
mapper map-gpt-embeddings meltanolabs
• Add meltano hub list, beside meltano hub ping, in text or JSON.
• List each plugin once, on the variant that Meltano installs when none is asked for. --all lists every variant, one to a row, naming the plugin once and marking the default where there is a choice.
• Narrow the list with an optional pattern, matched against a plugin name or a variant, ignoring case. A row is kept only where the pattern is visible in it.
• Filter by type with --plugin-type, the same argument type meltano add takes.
• Log the count of what matched, naming the plugin type where one was asked for, and how many matching variants were hidden. A search that matches nothing is a warning and prints no table.
• Reuse a fetched index for an hour, and fetch a fresh one with --refresh.
• Document the command in the CLI reference.
• Add 29 tests.
The count is logged rather than printed so that it reaches a reader whichever format the rows are in, and so --format json writes nothing to stdout but the rows.
Meltano Hub indexes one plugin type at a time and offers no search, so listing every type costs a request for each of them, and a pattern is applied after the plugins are fetched. That is what the cache is for: a second listing costs no request at all.
Fetching is what every other reader of the Hub keeps doing. get_plugins_of_type defaults to refresh=True, so meltano add and meltano hub ping are unchanged, and no plugin published minutes ago is hidden from the commands that install one. Only meltano hub list opts out, and any fetch fills the cache, so a listing that follows an install is served from it.
meltano hub list is gated like every other Hub reader. The 401 is raised in MeltanoHubService._get, so a user without a Meltano Cloud account gets the same error, naming meltano cloud auth login, as they do from hub ping, add and lock. A cached index is still served without a request.
The test suite mocks the Hub, so tests/conftest.py points the cache at a temporary directory for the session. Without it a test run would leave a mock response where a real meltano hub list would read it.
Checklist
• I have read the contribution guide
Was generative AI tooling used to co-author this PR?
• Yes (please specify the tool below)
Generated-by: Claude Code following the agentic coding guidelines
Related Issues
• Follows #10330
---
🤖 Generated with Claude Code
meltano/meltanoGitHub
09/18/2026, 11:58 AM