Warning
Waldo is not required for Roblox development. Wally is the package manager and it works perfectly well on its own. Waldo is simply just a convenience over the top of it.
Waldo never installs packages. waldo add edits wally.toml and stops, so run wally install
yourself, or let whatever build step you already have do it for you.
This exists for people who "can't be asked" to hand-edit wally.toml every time they want
a package. That is the whole pitch.
Waldo is the add command Wally does not have.
waldo add resolves the latest compatible version, writes it into the right section of
wally.toml, and stops.
$ waldo add sleitnick/trove
added Trove = "sleitnick/trove@1.8.0" to [dependencies]
run `wally install` to fetch itAsk for a version and Waldo writes what you typed. waldo add roblox/roact@1.4.4 is a
compatible range and not a pin, because that is what the syntax means to Wally. Waldo
inherits that rather than inventing around it.
waldo remove roblox/roact is the way back out. waldo list shows what is in there
already.
Rokit is the shortest way in. It asks you to trust the tool the first time and remembers the answer.
$ rokit add morgann1/waldoPrebuilt archives for Windows, macOS and Linux hang off every
release. Unzip one and put waldo on your
PATH.
Building it yourself needs Rust 1.85 or newer, because the crate is on edition 2024.
$ cargo install --git https://github.com/morgann1/waldo --tag v1.1.0 --lockedPut it in a different section. -S is [server-dependencies] and -D is
[dev-dependencies]. The section is created if it is not there yet.
$ waldo add lm-loleris/profilestore -S
added Profilestore = "lm-loleris/profilestore@1.0.3" to [server-dependencies]
$ waldo add roblox/testez -D
added Testez = "roblox/testez@0.4.1" to [dev-dependencies]Name it yourself. The alias is what your Luau code will require, and Waldo derives one
from the package name unless you say otherwise.
$ waldo add lm-loleris/profilestore -S -A profile_store
added profile_store = "lm-loleris/profilestore@1.0.3" to [server-dependencies]Move an existing dependency to another version.
$ waldo add roblox/roact@1.4.2
updated Roact from roblox/roact@1.4.4 to roblox/roact@1.4.2Take one back out. A section left empty goes with it.
$ waldo remove roblox/roact
removed Roact from [dependencies]
run `wally install` to update PackagesSee what is already there. Waldo reads the file and never the index.
$ waldo list
[dependencies]
Promise evaera/promise@4.0.0
Roact roblox/roact@1.4.4
[server-dependencies]
ProfileStore lm-loleris/profilestore@1.0.3
[dev-dependencies]
TestEZ roblox/testez@0.4.1Shared code replicates to clients and server code must not, so a server package in
[dependencies] is refused. This is an error and never a warning.
$ waldo add lm-loleris/profilestore
error: `lm-loleris/profilestore` is a server package, so it cannot go in
`[dependencies]`. Shared code replicates to clients, and server code must not. Try `-S`.Misspell a package and Waldo looks for what you meant.
$ waldo add roblox/ract
error: could not find `roblox/ract` in the index. Did you mean `roblox/react`?