Installing packages
Every package in the library is published to Wally, the Roblox package manager, under the kashtheking scope. There are three ways to get one into your experience. Pick by how you work, not by the package: all of them end with the same module in ReplicatedStorage.Packages.
| You work in | Use | Tooling needed |
|---|---|---|
| Roblox Studio only | Studio Wally plugin | The plugin |
| A Rojo project with a file system | Wally CLI | Rokit (or Aftman) + Wally + Rojo |
| Studio, and you want a whole system | Packager | The plugin |
Studio Wally
The Studio Wally plugin is a Wally client that runs inside Studio.
- Install Studio Wally from the Creator Store and open its widget.
- Search the package by scope and name. Every package page shows the exact string, for example
kashtheking/binder. - Press download and pick Shared module. The package and its dependencies are placed in
ReplicatedStorage.Packages.
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Binder = require(ReplicatedStorage.Packages.Binder)
The plugin re-exports the package's types, so strict-mode scripts get autocomplete with no extra steps. To update, search again and download the new version over the old one.
Wally
For a Rojo project, add packages to wally.toml and install from the command line.
- Install the toolchain once with Rokit: in your project folder run
rokit init, thenrokit add UpliftGames/wallyandrokit add rojo-rbx/rojo. - Create
wally.tomlif you do not have one (wally init), and add dependencies:
[package]
name = "you/your-game"
version = "0.1.0"
registry = "https://github.com/UpliftGames/wally-index"
realm = "shared"
[dependencies]
Binder = "kashtheking/binder@0.6.3"
Packet = "kashtheking/packet@1.0.0"
t = "kashtheking/t@1.0.0"
- Run
wally install. Packages land in aPackages/folder next towally.toml, with dependencies resolved (Binder brings in Trove, Signal and Predicates). - Map that folder in your
default.project.jsonso Rojo syncs it toReplicatedStorage.Packages:
{
"name": "your-game",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Packages": { "$path": "Packages" }
}
}
}
- For type information in your editor, generate a sourcemap (
rojo sourcemap default.project.json -o sourcemap.json) and point luau-lsp at it, or runwally-package-typesafter installing.
Versions in the docs are the latest at the time of writing; wally search kashtheking or the Wally site always has the current list.
Packager building blocks
Building blocks are whole systems, sometimes with their package dependencies bundled, distributed as .rbxm files and installed with the Packager plugin.
- Download the block's
.rbxmfrom its page. - In Studio, Insert from File in the Explorer.
- Open Packager, select the inserted package, press Unpackage. Everything moves to the services it was packaged from.
Use this when you want a finished system rather than a library to build on, or when you are teaching someone who does not want to touch tooling yet.
Which packages do what
The Packages overview groups everything by purpose. As a rule of thumb: Binder for anything attached to instances, Packet for networking, t for validation, Hitbox, CameraController and GuiHandler for the gameplay layer.
Troubleshooting
Packages.X is not a valid member: the package did not install where you are requiring from. Check whether you picked Shared or Server module, or whether Rojo is syncing thePackagesfolder.- Types are
any: in Studio Wally re-download the package (types are re-exported on download); in a Rojo project runwally-package-types --sourcemap sourcemap.json Packages/. - Two versions of Trove or Signal: harmless. Wally keeps each package's exact dependency version under
Packages/_Index.
Still stuck? Ask in the Discord.