moon is a free, open source orchestration & scheduling project written in Rust and released under MIT. It has 4,105 GitHub stars, 252 forks and 99 open issues, and was last pushed 8 hours ago. On this registry it ranks #34 of 64 tracked projects in Orchestration & Scheduling, with 5 head-to-head comparisons available. It gained 2 stars over the last 3 tracked days.

What is moon?

What it is

moon is a repository management, organization, orchestration, and notification tool for the web ecosystem, written in Rust under the MIT license. It is a build system and monorepo management tool whose concepts are heavily inspired by Bazel and other build systems. The project is associated with build-system, monorepo-tooling, ci-cd, Node.js, JavaScript, Bun, Deno, Go, Python, and Ruby topics.

The problem moon addresses is the operational complexity of maintaining a web-ecosystem repository. The README lists questions about package manager choice, language version, package imports, and build commands. moon aims to streamline this by naming projects and tasks, reducing package.json script confusion, keeping tool versions consistent across developer environments, and allowing incremental adoption project by project or task by task.

Key capabilities

  • Smart hashing collects inputs from multiple sources so builds are deterministic and reproducible, and remote caching persists builds, hashes, and caches between teammates and CI/CD environments.
  • The integrated toolchain automatically downloads and installs explicit versions of tools across the workspace or per project, while Linux, macOS, and Windows are supported.
  • moon generates a project graph for dependency and dependent relationships, and a dependency graph can reduce workloads and increase performance.
  • The action pipeline executes actions in parallel and in order using a thread pool and dependency graph, and action distribution can spread actions across multiple machines.
  • Incremental builds rebuild only changed projects, while code generation, dependency workspaces, code ownership, flakiness detection, webhook events, terminal notifications, and Git hooks support organization and workflow enforcement.

Who uses it and how

  • Web-ecosystem monorepo teams use moon to replace scattered package.json scripts with project names and task names for builds and repository actions.
  • Development teams use the integrated toolchain to keep Node.js or another language version consistent across every developer environment.
  • CI/CD environments use remote caching, action distribution, webhook events, and Git hooks to share build state, increase throughput, gather pipeline insights, and enforce contributor workflows.

Getting started

The provided README excerpt does not list Docker image names, package manager commands, or hosted deployment instructions; it links to documentation at https://moonrepo.dev and the homepage https://moonrepo.dev/moon.

When to use it — and when not to

Use moon when a web-ecosystem monorepo needs a Rust-based build system with incremental adoption, smart hashing, remote caching, orchestration, and multi-platform support. Avoid it if a complete setup path must come from the README alone, because the excerpt only links to documentation and warns that not all features are currently supported. Because no hosted option is listed, teams must operate moon within their own repository and CI/CD workflows.

project readme (upstream, from github) — read inline

moon

moon is a repository management, organization, orchestration, and notification tool for the web ecosystem, written in Rust. Many of the concepts within moon are heavily inspired from Bazel and other popular build systems.

Why use moon?

Working in a developer ecosystem can be very involved, especially when it comes to managing a repository effectively. Which package manager to use? Which language version to use? How to import packages? How to build code? So on and so forth. moon aims to streamline this entire process and provide a first-class developer experience.

  • Increased productivity - With Rust as our foundation, we can ensure robust speeds, high performance, and low memory usage. Instead of long builds blocking you, focus on your work.
  • Exceptional developer experience - As veterans, we're well aware of the pain points and frustrations. Our goal is to mitigate and overcome these obstacles.
  • Incremental adoption - At its core, moon has been designed to be adopted incrementally and is not an "all at once adoption". Migrate project-by-project, or task-by-task, it's up to you!
  • Reduced scripts confusion - package.json scripts can become unwieldy, very quickly. No more duplicating the same script into every package, or reverse-engineering which root scripts to use. With moon, all you need to know is the project name, and a task name.
  • Ensure correct versions - Whether it's Node.js or another language, ensure the same version of each tool is the same across every developer's environment. No more wasted hours of debugging.
  • Automation built-in - When applicable, moon will automatically install node_modules, or sync package dependencies, or even sync TypeScript project references.
  • And of course, the amazing list of features below!

Features

Not all features are currently supported, view the documentation for an accurate list!

Management
  • Smart hashing - Collects inputs from multiple sources to ensure builds are deterministic and reproducible.
  • Remote caching - Persists builds, hashes, and caches between teammates and CI/CD environments.
  • Integrated toolchain - Automatically downloads and installs explicit versions of tools for consistency across the entire workspace or per project.
  • Multi-platform - Runs on common development platforms: Linux, macOS, and Windows.
Organization
  • Project graph - Generates a project graph for dependency and dependent relationships.
  • Code generation - Easily scaffold new applications, libraries, tooling, and more!
  • Dependency workspaces - Works alongside package manager workspaces so that projects have distinct dependency trees.
  • Code ownership - Declare owners, maintainers, support channels, and more. Generate CODEOWNERS.
Orchestration
  • Dependency graph - Generates a dependency graph to increase performance and reduce workloads.
  • Action pipeline - Executes actions in parallel and in order using a thread pool and our dependency graph.
  • Action distribution - Distributes actions across multiple machines to increase throughput.
  • Incremental builds - With our smart hashing, only rebuild projects that have been changed since the last build.
Notification
  • Flakiness detection - Reduce flaky builds with automatic retries and passthrough settings.
  • Webhook events - Receive a webhook for every event in the pipeline. Useful for metrics gathering and insights.
  • Terminal notifications - Receives notifications in your chosen terminal when builds are successful... or are not.
  • Git hooks - Manage Git hooks to enforce workflows and requirements for contributors.

Contributors

Special thanks to the wonderful people who have contributed to this project:

Contributors

Frequently asked questions

Is moon free to use?

moon is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does moon do?

A build system and monorepo management tool for the web ecosystem, written in Rust.

What is moon written in?

moon is primarily written in Rust. Its source is publicly available at https://github.com/moonrepo/moon, and it has 4,105 GitHub stars.