Skip to content

Command Line Tools

Dev Server

Three commands cover the inner dev loop: wheels start brings a development server up, wheels stop takes it down, and wheels reload reinitializes the running application without restarting the JVM. You’ll compose these every day while iterating on a Wheels app.

You’ll use this for:

  • Running your Wheels app locally while you work on it.
  • Stopping the dev server cleanly when you’re done — or before switching branches.
  • Reinitializing framework state (routes, settings, DI bindings) after edits that require a full app reload without killing the JVM.

wheels start is the preferred way to run a Wheels app during development. It wraps LuCLI’s lower-level wheels server start with Wheels-specific bootstrap — forwarding any extra flags through to the underlying server command so things like --port and --version still work. wheels stop is a thin wrapper around wheels server stop for the project directory. wheels reload is Wheels-specific: it talks to the running app over HTTP rather than restarting anything.

Start a Wheels development server for the current project. Delegates to wheels server start under the hood and forwards extra flags to it.

wheels start [flags]

Any flags you pass are forwarded verbatim to wheels server start. The common ones are listed below — see wheels server start for the full list.

FlagDescription
-p, --port=<port>Port number for the server (e.g., 8080).
-n, --name=<name>Custom name for the server instance.
-v, --version=<version>Lucee version to use (e.g., 6.2.2.91).
--env, --environment=<env>Environment to use (e.g., dev, staging, prod).
-c, --config=<file>Configuration file to use (defaults to lucee.json).
-f, --forceForce a restart, replacing any server already running for this project.
--disable-open-browserDon’t open a browser after the server starts.
--dry-runShow the resolved configuration without starting the server.
--sandboxStart a transient background server without writing lucee.json.
example
wheels start

Prints Starting Wheels server... in cyan and hands control off to wheels server start in the current project directory. The server runs in the background and the command returns once the server is up, leaving your terminal free.

Stop the running Wheels development server for the current project.

wheels stop

Resolves the server instance from the project directory and asks LuCLI to stop it. Under the hood it runs wheels server stop scoped to the project root.

illustrative — requires running server
wheels stop

Prints Stopping Wheels server... in cyan and delegates to wheels server stop. Run it from the project root to take down the background server that wheels start brought up.

Reinitialize the running Wheels application without restarting the JVM. Useful after edits to config/settings.cfm, config/routes.cfm, config/services.cfm, or any file that is only read during framework bootstrap.

wheels reload

wheels reload detects the running server’s port automatically (from lucee.json, then .env) and hits http://localhost:<port>/?reload=true&password=<password> with the reload password it finds in your project config. If no server is running, it prints No running Wheels server detected. Start one with: wheels start and exits.

illustrative — requires running server
wheels reload

On success: Application reloaded successfully. in green. On failure — most often a password mismatch — it prints Failed to reload: <message> and hints at setting WHEELS_RELOAD_PASSWORD in .env or config/settings.cfm.

The three commands compose into a typical inner loop:

illustrative — dev loop example
# Bring the server up — it runs in the background and returns control
wheels start
# Iterate on your app
# For most CFML edits: just save the file and hit refresh.
# For config/routes/services changes, force a reload:
wheels reload
# When you're done for the day
wheels stop