Command Line Tools
CFML Execution
wheels cfml, wheels run, and wheels repl are three LuCLI-level entry points for executing CFML directly. None of them bootstrap a Wheels application — they give you a raw Lucee engine for quick experiments, script files, and interactive exploration. Because they ship with LuCLI itself, the wheels binary inherits them whether you installed LuCLI standalone or through the Wheels distribution.
You’ll use this for:
- Evaluating a one-off CFML expression from the shell and piping the result elsewhere.
- Running a reusable
.cfm,.cfs, or.lucliscript file with arguments. - Dropping into an interactive CFML prompt to explore language behavior without a project.
Overview
Section titled “Overview”These three commands all execute CFML without loading your Wheels app — no routes, no models, no ORM, no config/settings.cfm. They exist at the LuCLI layer, below the Wheels module. When you need to poke at models, services, or routes with the framework fully wired in, use the project-scoped wheels console instead.
wheels cfml
Section titled “wheels cfml”Execute a CFML expression (or short script fragment) supplied on the command line.
Synopsis
Section titled “Synopsis”wheels cfml <expression> [<expression> ...]All positional arguments are joined with a single space and handed to the Lucee script engine as one expression.
Description
Section titled “Description”cfml takes one or more tokens on the command line, joins them, and runs the result through the Lucee script engine. The return value of the expression becomes the command’s execution result but is not automatically printed to stdout — if you want visible output, wrap the expression in writeOutput() or writeDump().
wheels cfml takes no command-specific flags. It accepts the global flags inherited from the root wheels command (for example, --verbose, --debug, --timing).
Example
Section titled “Example”wheels cfml 'now()'The expression runs through the Lucee engine and the process exits with code 0. To see the value, emit it explicitly:
wheels cfml 'writeOutput(1 + 2)'Sample output:
3wheels run
Section titled “wheels run”Execute a CFML script file (.cfm, .cfs) or a LuCLI batch script (.lucli).
Synopsis
Section titled “Synopsis”wheels run <script> [<arg> ...]Description
Section titled “Description”run resolves the script path relative to the current working directory, dispatches on the file extension, and executes the file:
.cfm— executed as a CFML template via the Lucee engine..cfs— executed as a CFML script file via the Lucee engine..lucli— executed as a LuCLI batch script (LuCLI’s own scripting DSL, not CFML)..cfc— not supported. Use a module entry point instead (e.g.wheels modules run <module>).
Any trailing arguments after the script path are passed through to the script. The root wheels command also accepts a bare script path as a shortcut: wheels hello.cfm behaves identically to wheels run hello.cfm.
wheels run takes no command-specific flags beyond the script path and its arguments. Global flags from the root wheels command (--verbose, --debug, --timing) still apply.
Example
Section titled “Example”wheels run hello.cfmwheels run script.cfs arg1 arg2wheels run deploy.lucliThe first invocation executes hello.cfm as a CFML template. The second runs script.cfs with two trailing arguments (available to the script). The third dispatches to the LuCLI batch runner for a .lucli file.
wheels repl
Section titled “wheels repl”Start an interactive CFML read-eval-print loop. No Wheels app, no project context — just a prompt attached to the Lucee engine.
Synopsis
Section titled “Synopsis”wheels repl [flags]Description
Section titled “Description”repl drops you into a line-edited CFML prompt (cfml> by default — the prefix reflects the active LuCLI profile). Each line you enter is handed to the Lucee script engine; non-null results print to the terminal. History persists to ~/.lucli/repl_history (500 lines) so you can arrow-back through previous expressions across sessions.
| Flag | Description |
|---|---|
-h, --help | Show command help and exit. |
-V, --version | Print LuCLI version and exit. |
repl inherits the global flags from the root wheels command as well (for example, --verbose, --debug).
Special commands (inside the REPL)
Section titled “Special commands (inside the REPL)”| Input | Behavior |
|---|---|
help or ? | Show REPL help. |
exit or quit | Exit the REPL. |
Ctrl+C | Cancel the current input line. |
Ctrl+D | Exit the REPL. |
Example session
Section titled “Example session”$ wheels repl🚀 CFML REPL - LuCLI 0.3.5ℹ Type CFML expressions to evaluate. Type 'exit' or Ctrl+D to quit.
cfml> 1 + 23cfml> dateFormat(now(), 'yyyy-mm-dd')2026-04-20cfml> exit
👋 Goodbye!Three modes compared
Section titled “Three modes compared”| Command | Use when |
|---|---|
cfml '<expr>' | One-off expression, pipe-friendly, no interactivity. |
run script.cfm | Reusable script on disk; accepts trailing arguments. |
repl | Interactive exploration, multiple expressions, history. |
All three share the same execution surface (the Lucee script engine with no Wheels app bootstrapped). Pick the one that matches how you want to deliver input.