
Melos is a CLI tool used to help manage Dart and Flutter projects with multiple packages (also known as mono-repos). It is in active development and is in use on projects such as FlutterFire and Flame.
Splitting up large code bases into separate independently versioned packages is extremely useful for code sharing. However, making changes across many repositories is messy and difficult to track, and testing across repositories gets complicated. Melos helps solve these issues by allowing multiple packages to work together within one repository, whilst being totally independent of each other. Features include:
- Automatic versioning & changelog generation.
- Automated publishing of packages to pub.dev.
- Local package linking and installation.
- Executing simultaneous commands across packages.
- Listing of local packages & their dependencies.
Melos also works great on CI/CD environments to help automate complex tasks and challenges. If you're using GitHub you can check out the Melos GitHub Action.
Melos is for applications just as much as it is for packages that are published
to pub.dev. A workspace can contain your Flutter and Dart
applications together with the internal packages that they share, and Melos
will run your scripts, tests and analysis across all of them, generate IDE run
configurations for the applications and version them, including the build
number of a version like 1.2.3+45. Nothing has to be published to use Melos.
Melos is not limited to monorepos either. It works just as well in a repository with a single application or package, where you can still use features like versioning, changelog generation, publishing and scripts, see Single package projects.
Melos is the monorepo tool for the Dart and Flutter ecosystem. If you are coming from another ecosystem, Melos is the Dart and Flutter alternative to tools like:
- Lerna, Nx, Turborepo and Rush for JavaScript and TypeScript, which run tasks across packages and handle versioning and publishing.
- npm workspaces, Yarn workspaces and pnpm workspaces for JavaScript and TypeScript, and Cargo workspaces for Rust, which link local packages together. In Dart this part is handled by pub workspaces, which Melos builds on top of.
- Changesets, semantic-release and release-please for automated versioning, changelog generation and publishing.
Melos combines these responsibilities in a single tool that understands Dart and
Flutter packages, pubspec.yaml files and pub.dev, so that
you can run scripts and commands across packages, filter packages, and version
and publish them based on
Conventional Commits.
The following projects are using Melos:
- firebase/flutterfire
- Flame-Engine/Flame
- fluttercommunity/plus_plugins
- GetStream/stream-chat-flutter
- canonical/ubuntu-desktop-provision
- ubuntu/app-center
- 4itworks/opensource_qwkin_dart
- gql-dart/ferry
- cbl-dart/cbl-dart
- ema987/paddinger
- flutter-stripe/flutter_stripe
- danvick/flutter_form_builder
- kmartins/groveman
- ApptiveGrid/apptive_grid_flutter
- flutternetwork/WiFiFlutter
- iapicca/yak_packages
- atsign-foundation/at_mono
- atsign-foundation/at_app
- sub6resources/flutter_html
- ferraridamiano/ConverterNOW
- rrifafauzikomara/youtube_video
- mobxjs/mobx.dart
- NetGlade/auto_mappr
- myConsciousness/atproto.dart
- GrowERP Flutter ERP
- mrverdant13/coverde
- ThexXTURBOXx/flutter_web_auth_2
- woltapp/wolt_modal_sheet
- cfug/dio
- simolus3/drift
- Lyokone/flutterlocation
- FlutterGen/flutter_gen
- heftapp/graphql_codegen
- leonardocustodio/polkadart
- jhomlala/alice
- powersync/powersync.dart
- rodydavis/signals.dart
- foss42/apidash
- ReactiveX/rxdart
- StacDev/stac
- Jaspr
- starknet.dart
- flyerhq/flutter_chat_ui
- maplibre/flutter-maplibre-gl
- Khuwn-Soulutions/supabase_codegen
- G1Joshi/Booking-App
Submit a PR if you'd like to add your project to the list by updating the docs.
You can also add a README badge to your projects README to let others know about Melos ๐.
Using Melos? Add a README badge to show it off:
[](https://github.com/invertase/melos)See LICENSE for more information.

