Forest Package Manager - The Modern Package Platform for Roblox


Hey everyone!

For the past year, I’ve been building Forest, a package manager and registry designed for Roblox developers, teams, and package authors.

Forest gives you a central place to discover, install, publish, and manage reusable packages without manually copying modules between projects or maintaining your own package registry.

Website: https://forest.dev
Documentation: https://docs.forest.dev

What does Forest actually do?

Forest consists of a package registry and a command-line tool.

You run the Forest CLI from your project folder, and it installs packages as normal files on disk alongside a forest.json manifest and forest-lock.json lockfile.

forest install evaera/promise

Forest does not run inside Roblox Studio or modify your place file. For Roblox projects, the installed package files can be synced into Studio using your existing workflow, commonly through Rojo.

That means Forest fits into a normal source-controlled project instead of trying to replace the rest of your tooling.

How does Forest compare to Wally?

Wally is an important part of the Roblox ecosystem, and Forest would not exist without the package ecosystem it helped establish.

Forest is not trying to dismiss or replace that work. It is designed to provide a more complete package-management platform around the same core idea.

The main differences are:

  • A first-party hosted registry and website for discovering, inspecting, and managing packages
  • Private packages without requiring teams to operate their own registry
  • Studio accounts with members, roles, and package permissions
  • Cross-platform support for both Roblox and UEFN
  • Package license visibility and clearer package metadata
  • Built-in integrity verification using hashes recorded in the lockfile
  • Existing Wally packages available immediately through Forest’s mirror

For individual Roblox developers, the biggest improvement is that Forest provides one place to find packages, read their documentation, inspect their metadata, install them, and manage the packages they publish.

For teams, the larger difference is private package hosting and centralized access control. You can manage who belongs to a Studio, what they can access, and which packages they can publish without building and maintaining that infrastructure yourself.

Forest also installs packages as ordinary files on disk, so it works with existing tools such as Rojo rather than requiring a completely different project workflow.

A common pain point with existing Roblox package managers is losing Luau type information. Wally generates link modules in the package index, which breaks type resolution unless you run an extra tool like wally-package-types after every install. Forest installs each package as its actual source files at the top level of your Packages folder, so require resolves types natively in Luau tooling with no extra steps and no generated link modules.

Forest aims to be the complete package-management platform around what modern teams need: discovery, private packages, team management, security, and support for more than one development ecosystem.

How does Forest compare to pesde?

pesde is another a well-built open source tool with its own community registry, and it focuses on the Luau language across multiple runtimes (Roblox, Lune, and standalone Luau).

Forest takes a different approach: it is a hosted platform rather than a tool you bring infrastructure to. The registry, website, accounts, and access control are all first-party, which is what enables things like private packages without running your own registry, Studios with roles and package permissions, license detection and review on every package, the verified open source publish/download pipeline, and the synced Wally mirror with scope claiming. Forest also supports UEFN, which sits outside the Luau ecosystem entirely.

If you want a flexible multi-runtime Luau tool and are happy operating your own infrastructure for private use, pesde is a solid choice. If you want a batteries-included registry with discovery, teams, and private packages handled for you, that is what Forest is built for.

Existing Roblox packages are already available

A package manager is not particularly useful when its registry starts empty, so Forest mirrors eligible open-source packages from the Wally registry.

Mirrored packages contain the original files published by their authors. Their existing scope names are reserved, new Wally releases are kept in sync, and original authors can claim their scope by verifying the associated GitHub account.

Check out the available packages here: https://forest.dev/search

Dependencies, version ranges, lockfiles, and integrity verification work the same way for mirrored and native Forest packages.

More information about mirroring is available here: Mirrored Packages | Forest PM Docs

Features

  • Public and private packages
  • Semantic versioning and dependency resolution
  • Reproducible installs through lockfiles
  • Package discovery through the Forest registry
  • Organizations, called Studios, with members, roles, and package permissions
  • License detection and visibility
  • SHA-256 integrity verification for downloaded packages
  • Windows, macOS, and Linux support

Everything above is free for individual developers, including 10 private packages and Studios with up to 5 members. There is a single flat Pro plan for larger teams. Details: Pricing · Forest

Package security and transparency

We believe package managers deserve a higher level of scrutiny than most developer tools. They download code and place it directly into your project, so “just trust the server” is not a great answer.

Every part of Forest’s pipeline that handles package files is open source, including:

  • The Forest CLI
  • The package publishing and download gateway
  • The package CDN worker

The CLI verifies the SHA-256 hash of every package archive against the integrity value stored in your lockfile and refuses to install files that do not match.

You can read more about the open-source pipeline here: Open Source | Forest PM Docs

Getting started

You can install the CLI from our download page

Then:

forest i username/packageName

(forest i is shorthand for forest install)

The full setup and package authoring guides are available in the documentation:

https://docs.forest.dev

Using Forest with AI assistants

The registry exposes a public JSON API, so AI tools like Claude Code, Cursor, and ChatGPT can search for packages, read their readmes and license information, and even inspect a package’s source files before recommending anything.

If you use a coding agent, point it at https://forest.dev/llms.txt, or see the guide at Forest for AI Agents | Forest PM Docs for a copy-paste snippet for your project’s CLAUDE.md or AGENTS.md.

Why build another package manager?

Forest started because I wanted to make package management on Roblox safer and more accessible, and cultivate an ecosystem that lets users spend more time building, and less time worrying about their tooling.

Wally proved that package management works well for Roblox. Forest is an attempt to build on that foundation with hosted accounts, private packages, team permissions, package discovery, license information, an independently verifiable package pipeline, and support for platforms beyond Roblox.

This is still an actively developed project, and feedback from people actually using it is far more useful than another month of me arguing with myself about API naming.

I would especially appreciate feedback around:

  • The installation and migration experience
  • Package layout and dependency behavior
  • Features needed by larger Roblox teams
  • Missing documentation
  • Packages you would like to publish or see supported

You can explore Forest at https://forest.dev and read the documentation at https://docs.forest.dev.

Thanks for taking a look!

7 Likes

looks very perspective compared to wally cuz wally is old and often horrible.

Sounds awesome! Can’t wait to check it out!

1 Like

How does it compare to pesde tho?

Pesde is mostly just a wrapper for Wally and doesn’t really offer the registry or private package hosting that Forest is pushing. If you aren’t looking for team permissions or UEFN support, there isn’t much of a difference in how they handle dependencies.

Full disclosure - I am good friends with Mr. Stratiz here so my opinion is a little biased.

That said, I am objectively impressed with the ease of installation and use that Forest provides. It’s really quite easy to get set up using the CLI and converted from wally dependencies. Anybody who’s familiar with npm/Node packages will immediately recognize the format.

Another thing I appreciate is that when it installs packages, it installs the actual package at the top level instead of going the crazy wally route of creating an index module for every package. This means that types resolve properly instead of needing to use JohnnyMorganz’s wally-package-types mutator in order to get wally packages to have working type exports.

All in all, this is a great package manager.

1 Like

Thanks for the kind words, everyone!

@amol8590 Good question! The short version is pesde is a well-made open source tool with its own registry and is focused on Luau across multiple runtimes (Roblox, Lune, standalone Luau).

Forest is a hosted platform: first-party registry and website, private packages without self-hosting anything, Studio accounts with roles and permissions, license review on every package, a fully synced Wally mirror with scope claiming, and UEFN support. pesde and Forest have different philosophies and are not necessarily direct competition. If you want a multi-runtime Luau tool, pesde is solid; if you want the automatically managed, “batteries-included” route, that is Forest.

Post has been updated with this as well!

Would there be ANY possible way to mirror pesde luau/roblox packages in Forest? I could make a PR.

1 Like

Absolutely feasible, and it’s something we’ve looked into.

Forest already mirrors the Wally registry, and pesde is structurally similar in a lot of ways that matter. A good chunk of the existing mirror pipeline would carry over.

The open problems are the interesting part:

  1. Targets - A pesde version can ship separate roblox / luau / lune targets. Forest would likely import the roblox target and we’re still deciding what to do with plain-luau packages. Lune is out of scope.
  2. Install-time linking - Wally-mirrored packages get shims so old script.Parent.X requires resolve in Forest’s layout. pesde resolves dependencies differently (generated linkers / build_files for rojo), so we’d need to work out what a converted pesde tarball should look like so requires actually resolve after forest install.
  3. Cross-registry collisions - Many authors publish the same scope and even the same packages to both Wally and pesde. We’re working out clear rules for merging or superseding so you don’t end up with duplicate packages, and so claiming a scope claims it across both sources.

So tl;dr: possible, but it’s more of a design problem than a code problem right now. If you’re serious about contributing, the most useful first step probably wont be a PR, but it’s helping nail down those initial design decisions. Happy to open a discussion / hop in the Discord to scope it out with the community properly from there!

Hey ya’ll,

Wanted to provide some updates on what we’ve been working on on the website:

New features (live!)

  • Darkmode
  • Profile pictures for Studios and Users (Gifs supported!)
  • Package Profile pictures for pro users
  • Audit log for studios
  • Package analytics (up to a year!)

Check them all out here: https://forest.dev/

1 Like