---
title: Melos
description: Manage multi-package repositories.
---
> ## Documentation Index
> Fetch the complete documentation index at: https://melos.invertase.dev/llms.txt
> Use this file to discover all available pages before exploring further.

Melos is a workspace management tool for Dart and Flutter. It streamlines monorepo development by handling local linking, testing, versioning, and publishing across multiple packages.

Melos is ideal for repositories that combine applications and shared internal packages. It runs bulk scripts, generates IDE run configurations, and handles app versioning (for example, `1.2.3+45`), even if you never publish to pub.dev. You can also use it for single package projects.

Melos is trusted by major projects like [FlutterFire](https://github.com/firebase/flutterfire) and [Flame](https://github.com/flame-engine/flame). For more information, see [projects using Melos](/projects). To add yours, [submit your project](https://github.com/invertase/melos/compare).

Note: Melos 8 configures directly from the root `pubspec.yaml` file and requires Dart 3.9+.

## Key features

- **Versioning and Changelogs:** Automatically determines versions and writes changelogs based on Conventional Commits.
- **Publishing:** Pushes newly versioned packages to pub.dev.
- **Local Linking:** Makes local changes available to dependent packages without publishing.
- **Global Commands:** Runs scripts (like tests or linting) across all or selected packages simultaneously.
- **Package Listing:** Visualizes your workspace and its dependency graph.
- **Continuous Integration:** Automates commands and releases in CI, with native support via the [Melos GitHub Action](https://github.com/marketplace/actions/melos-action).

## How it compares to other tools

If you are coming from other ecosystems, Melos brings the same capabilities to Dart and `pubspec.yaml` files:

- **Task running and monorepo management** like [Lerna](https://lerna.js.org), [Nx](https://nx.dev), [Turborepo](https://turborepo.com), and [Rush](https://rushjs.io)
- **Local linking** like [npm](https://docs.npmjs.com/cli/using-npm/workspaces), [Yarn](https://yarnpkg.com/features/workspaces), [pnpm](https://pnpm.io/workspaces), and [Cargo](https://doc.rust-lang.org/cargo/reference/workspaces.html) workspaces
- **Release automation** like [Changesets](https://github.com/changesets/changesets), [semantic-release](https://semantic-release.gitbook.io), and [release-please](https://github.com/googleapis/release-please)

Note: Melos builds on top of the native Dart [pub workspaces](https://dart.dev/tools/pub/workspaces).

## Install

<CardGroup cols={2}>
  <Card title="Workspace" icon="folder-tree" href="/getting-started">
    Add Melos to a multi-package repo and run `melos bootstrap`.
  </Card>
  <Card title="Single package" icon="box" href="/getting-started/single-package">
    One application or package in the repo root, with `useRootAsPackage`.
  </Card>
</CardGroup>

## Agents

<CardGroup cols={2}>
  <Card title="Melos skills" icon="robot" href="/agents">
    Load the five skills with `dart run skills@ get` after bootstrap.
  </Card>
</CardGroup>

## Features

<CardGroup cols={2}>
  <Card title="Configure a Melos workspace" icon="sliders" href="/configuration/overview">
    Set the workspace up in the root `pubspec.yaml` file.
  </Card>
  <Card title="Workspace scripts" icon="terminal" href="/configuration/scripts">
    Define commands the workspace can run with `melos run`.
  </Card>
  <Card title="Automated releases" icon="rocket" href="/guides/automated-releases">
    Version, changelog, and publish from Conventional Commits.
  </Card>
</CardGroup>

## Help

<CardGroup cols={2}>
  <Card title="Discord" icon="comment" href="https://invertase.link/discord">
    Ask a question.
  </Card>
  <Card title="GitHub Issues" icon="bug" href="https://github.com/invertase/melos/issues">
    Report a bug or submit a feature request.
  </Card>
  <Card title="Changelog" icon="list" href="https://pub.dev/packages/melos/changelog">
    What changed in each Melos release.
  </Card>
</CardGroup>
