The nevermore CLI
nevermore is the command-line tool that drives the Nevermore workflow: scaffolding new games and packages, installing dependencies, running tests, and deploying places to Roblox via the Open Cloud API. This page is the command reference. For the two deep workflows it links out to their own guides — Deploying with the CLI and Test Infrastructure.
Installing the CLI
You don't have to install anything to use it once — npx fetches and runs the latest version:
npx nevermore init
For day-to-day work, install it globally so nevermore is always on your PATH:
npm install -g @quenty/nevermore-cli
The CLI needs Node.js v18+. Most commands also expect the Luau toolchain (rojo, aftman) to be available — see Install for the full environment setup.
Getting help
Every command and subcommand responds to --help, and the listing is generated from the CLI itself, so it never drifts from the installed version:
nevermore --help # top-level commands
nevermore deploy --help # a command and its subcommands
nevermore deploy init --help # a specific subcommand's flags
nevermore --version # installed version (and update check)
Command overview
At a glance:
nevermore
├── init [name] scaffold a game (default), package, or plugin
│ ├── game [name]
│ ├── package [name] [description] [template]
│ └── plugin [name]
├── install [packages..] install @quenty/* packages from npm (alias: i)
├── login store a Roblox Open Cloud API key
├── test test a single package
├── deploy [target] build and upload a place
│ ├── init create deploy.nevermore.json
│ └── run [target] deploy a target (default)
├── batch <subcommand> run across many packages (change detection)
│ ├── test
│ └── deploy
└── tools <subcommand> internal CI utilities
Global options
These apply to every command:
| Flag | Description |
|---|---|
--yes | Never prompt; fail instead of asking. Use in CI and scripts. |
--dryrun | Describe what would happen without touching the file system or Roblox. |
--verbose | Show intermediate output (building, uploading, credential loading). Also disables the live spinner in favor of plain, scrollable logs. |
--help | Show help for the current command. |
--version | Print the installed CLI version. |
nevermore init
Scaffolds a new project from a template. The type is a subcommand; if you omit it, init scaffolds a game.
nevermore init # scaffold a game in the current directory
nevermore init MyGame # same, named "MyGame" (game is the default)
nevermore init game MyGame # explicit game
nevermore init package brio "Lifecycle-scoped values"
nevermore init plugin MyPlugin
| Subcommand | What it creates |
|---|---|
game [game-name] | A working Nevermore game: default.project.json, server/client entry scripts, and the default packages (loader, servicebag, binder, clienttranslator, cmdrservice). |
package [package-name] [description] [package-template] | A new package inside a monorepo. package-template is library (default) or service. |
plugin [plugin-name] | A Roblox Studio plugin wired up with loader and servicebag. |
Notes:
- Positional arguments are optional. When omitted, the name defaults to the current directory (and, for
package,descriptionand the name fall back to an existingpackage.json). Run without arguments inside a package to fill in missing standard files. gameandpluginalso run the toolchain bootstrap after scaffolding:pnpm install,git init,aftman install,npm run format, andselene generate-roblox-std. Missing tools are reported but don't abort the scaffold.--dryrunpreviews the files that would be written.
nevermore init-package and nevermore init-plugin (hyphenated) still work as hidden back-compat aliases, but the subcommand forms nevermore init package and nevermore init plugin are canonical. Prefer them.