lloyAlloy on GitHub
A first project
Docs

A first project

Updated

alloy init asks a few questions, and -y takes the recommended answers. It writes alloy.toml and, when the folder has no Luau configuration, one .config.luau with strict mode and the @alloy alias. It also writes ember.toml, an agent guide, and a src folder with client, server, and shared. Sources compile under build, and the runtime sits beside them as alloy.luau.

Shell
mkdir game && cd game
alloy init -y       # alloy.toml, .config.luau, ember.toml, AGENTS.md, src/
alloy build         # src/**/*.aly -> build/**/*.luau
alloy flux          # the compile, the type check, and the lints
alloy test --run    # one lest spec per source with a @test, then lest
Alloysrc/shared/hello.aly
-- src/shared/hello.aly
struct Greeting
    name: string
    times: number = 1
end

local g = new Greeting { name = "world" }

for _ = 1, g.times do
    print(`hello, {g.name}`)
end

Point Rojo, or any sync tool, at build. An unchanged output is not rewritten, so the sync stays quiet.

Packages come from Ember. Set language = "alloy" in the [target] of ember.toml. embr add then installs Alloy and Luau packages, and embr publish runs alloy build before it packs. Alloy itself runs no package manager.