Skip to main content

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 inUseTooling needed
Roblox Studio onlyStudio Wally pluginThe plugin
A Rojo project with a file systemWally CLIRokit (or Aftman) + Wally + Rojo
Studio, and you want a whole systemPackagerThe plugin

Studio Wally​

The Studio Wally plugin is a Wally client that runs inside Studio.

  1. Install Studio Wally from the Creator Store and open its widget.
  2. Search the package by scope and name. Every package page shows the exact string, for example kashtheking/binder.
  3. 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.

  1. Install the toolchain once with Rokit: in your project folder run rokit init, then rokit add UpliftGames/wally and rokit add rojo-rbx/rojo.
  2. Create wally.toml if 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"
  1. Run wally install. Packages land in a Packages/ folder next to wally.toml, with dependencies resolved (Binder brings in Trove, Signal and Predicates).
  2. Map that folder in your default.project.json so Rojo syncs it to ReplicatedStorage.Packages:
{
"name": "your-game",
"tree": {
"$className": "DataModel",
"ReplicatedStorage": {
"Packages": { "$path": "Packages" }
}
}
}
  1. For type information in your editor, generate a sourcemap (rojo sourcemap default.project.json -o sourcemap.json) and point luau-lsp at it, or run wally-package-types after 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.

  1. Download the block's .rbxm from its page.
  2. In Studio, Insert from File in the Explorer.
  3. 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 the Packages folder.
  • Types are any: in Studio Wally re-download the package (types are re-exported on download); in a Rojo project run wally-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.