Skip to main content
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, but tailored for web development. You can think of moon as a tool that sits firmly in the middle between Bazel (high complexity, full structure), and make/just/etc scripts (low complexity, no structure).

Why use moon?

Working in a language’s ecosystem can be very involved, especially when it comes to managing a repository effectively. Which language version to use? Which dependency manager to use? How to use packages? Or how to build packages? moon aims to streamline this entire process and provide a first-class developer experience.

Increased productivity

With Rust as our foundation, we ensure robust speeds, high performance, and low memory usage. Instead of long builds blocking you, focus on your work.

Exceptional developer experience

As veterans of developer tooling, 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 tasks confusion

No more duplicating the same task into every project, or reverse-engineering which root scripts to use. With moon, all you need to know is the project name and task name.

Key Features

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 Node.js and other tools for consistency across the entire workspace or per project. Project graph - Generates a project graph for dependency and dependent relationships. Dependency graph - Generates a dependency graph to increase performance and reduce workloads. Incremental builds - With our smart hashing, only rebuild projects that have been touched since the last build. Multi-platform - Runs on common development platforms: Linux, macOS, and Windows.

Supported Languages

moon’s long-term vision is to robustly support multiple programming languages so that a repository composed of projects with differing languages and tools can all work in unison.
LanguageTier 1Tier 2Tier 3
Bash/Batch--
Bun (JavaScript, TypeScript)
Deno (JavaScript, TypeScript)
Go
Node (JavaScript, TypeScript)
PHP--
Python🟣🟣
Ruby--
Rust
Other (Kotlin, Java, C#, …)--
  • Tier 1: Project categorization - Projects can configure their primary language
  • Tier 2: Ecosystem platformization - Deep integration with the language’s ecosystem
  • Tier 3: Toolchain integration - Language is directly supported in the toolchain and automatically downloaded
  • 🟣 = Partially supported (experimental)

Next Steps

Install moon

Get started by installing moon on your system

Setup Workspace

Initialize moon in your repository

Build docs developers (and LLMs) love