Package managers for Roblox: Wally, pesde and Rokit
How to install open-source Luau packages with Wally or pesde, pin your tools with Rokit, and get your AI to pick the right package instead of a random copy.
Most Roblox open-source code ships as packages. A package manager downloads a package and its dependencies at exact versions, so you, your team and your AI all run the same code.
Wally
Wally is the most widely used package manager for Roblox. Packages are named scope/name, like
evaera/promise or sleitnick/trove.
wally init
That creates wally.toml. Add dependencies with an exact version:
[dependencies]
Promise = "evaera/promise@4.0.0"
Trove = "sleitnick/trove@1.1.0"
[server-dependencies]
# packages only the server should see
[dev-dependencies]
# test frameworks and tools
wally install
Packages land in Packages/ (shared), ServerPackages/ and DevPackages/. Map them in default.project.json
so Rojo syncs them:
"ReplicatedStorage": { "Packages": { "$path": "Packages" } },
"ServerScriptService": { "ServerPackages": { "$path": "ServerPackages" } }
Then require them like any module:
local Promise = require(game:GetService("ReplicatedStorage").Packages.Promise)
For editor types with luau-lsp, run wally-package-types --sourcemap sourcemap.json Packages/ after installing.
If you’d rather stay inside Studio, the Studio Wally plugin searches and installs Wally packages without a
terminal.
pesde
pesde is a newer package manager that targets Roblox, Lune and plain Luau. Run pesde init,
pesde add scope/name and pesde install. It can also install Wally packages with a wally# prefix, so you can
mix both registries in one project.
Rokit (tools, not packages)
Wally and pesde manage code packages. Rokit manages tools: Rojo, Wally, Selene, StyLua and luau-lsp
helpers, pinned per project in rokit.toml.
rokit add rojo-rbx/rojo
rokit add UpliftGames/wally
rokit install
Older projects may use Aftman (aftman.toml) or Foreman (foreman.toml) for the same job.
Get your AI to pick the right package
Registries have many copies with the same name. Search for promise and you’ll find dozens of scopes. Tell your
agent:
Before adding a package, search the registry, prefer the well-known maintainer's scope,
check its repository and license, and pin an exact version in wally.toml.
Then run wally install and wally-package-types.
With the Roblox Vibecoders MCP connected, your AI can search Wally and pesde itself and read each package’s versions, dependencies, realm and license before it installs anything.