CLI Reference

Elide supports multiple sub-commands organized by function.

Usage Syntax

Usage:
  elide srcfile.{js|ts|jsx|tsx|py|java|kt...} [OPTIONS] [--] [ARG...]
  or:  elide {script} [OPTIONS] [--] [ARG...]
  or:  elide build|test|project [OPTIONS] [TASKS...]
  or:  elide info|help [OPTIONS]
  or:  elide run|serve [OPTIONS] [FILE] [ARG...]
  or:  elide javac|kotlinc|jar|javadoc|... [OPTIONS] [SOURCES...]

Manage, configure, and run polyglot applications with Elide.

Server Commands

serve

HTTP server with static file serving and an interactive TUI dashboard. elide start is a visible alias for elide serve.

shell
$  elide serve ./public                          # serve static files
$  elide serve --host 0.0.0.0 --port 8080 ./dist # custom bind
$  elide serve --no-tui ./public                  # plain log output
Flag Default Description
--host <ADDR> 127.0.0.1 Hostname or IP to bind to.
--port <PORT> 3000 Port to serve on.
--no-tui false Disable the TUI dashboard, use plain log output.

The subject argument is a directory to serve static files from.

dev

Development server with live-reload, file watching, and an interactive TUI dashboard. Automatically enables dev mode.

shell
$  elide dev ./public
$  elide dev --no-tui ./public
$  elide dev --no-watch ./public
$  elide dev --port 8080 ./public
Flag Default Description
--host <ADDR> 127.0.0.1 Hostname or IP to bind to.
--port <PORT> 3000 Port to serve on.
--no-tui false Disable the TUI dashboard.
--no-watch false Disable file watching.

Runner Commands

run

Run a script file or a snippet of code. Elide selects an appropriate language if given a clearly identifiable source file.

shell
$  elide run app.js
$  elide run script.py
$  elide run --debugger app.js
$  elide run --coverage app.js
FlagDescription
—debugger[=MODE]Enable debugger (auto, cdp, dap).
—profiler[=MODE]Enable profiler (cputracing, cpusampling).
—coverage[=MODE]Enable code coverage collection.
—lspEnable LSP features.
—insights Activate insight scripts.
—allow-threadsPermit guest code to create host threads (denied by default).

python

Run the embedded Python interpreter with a CPython-compatible CLI. An alias for elide run with the language pinned to Python.

shell
$  elide python script.py
$  elide python -c "print('hello')"
$  elide python -m http.server
$  echo "print(1)" | elide python -
FlagDescription
-c CMDRun the given command string; trailing tokens become sys.argv.
-m MODULERun a library module as __main__.
-EIgnore PYTHON* environment variables.
-SDon't imply import site on startup.
-IIsolate from the environment and user site packages.
-BDon't write bytecode (.pyc) files.
-OIncrease the optimization level (repeatable).
-uForce unbuffered stdout/stderr.
-W ARGConfigure warnings (repeatable).
-PDon't prepend a potentially unsafe path to sys.path.
-bAccepted for compatibility; currently a no-op.
-xAccepted for compatibility; currently a no-op.
The interpreter flags above are also accepted globally, so the elide binary can stand in as python (e.g. via sys.executable).

test

Run a polyglot script, server, or interactive shell in test mode.

shell
$  elide test

Project Commands

init

Initialize a new Elide project.

shell
$  elide init

build

Run the project build or a build script.

shell
$  elide build
$  elide build --no-cache
$  elide build --inspect
FlagDescription
—inspectInspect the build.
—no-cacheDisable build cache.
—offlineBuild offline; avoid remote fetches.

install

Resolve and install all project dependencies across npm, PyPI, and Maven. See Dependencies for the full guide.

shell
$  elide install
$  elide install --slim
$  elide install --with=sources
$  elide install --fresh
FlagDescription
—slimSlim installation — skip extra Maven classifiers (sources, javadoc).
—with=Also fetch a Maven classifier — —with=sources or —with=docs (alias for javadoc); attach with =/:, a space is not parsed.
—freshIgnore caches/lockfiles and re-resolve everything.
—directCopy resolved artifacts into the project repo instead of symlinking them.
—ecosystems=Restrict install to specific ecosystems (e.g. —ecosystems=maven,npm); empty means all. Conflicts with —workspace.
—workspaceInstall every discovered ecosystem (the default; conflicts with —ecosystems).

aube

Run Elide's embedded npm package manager (aube). Arguments after -- pass through to aube.

shell
$  elide aube -- install --ignore-scripts
$  elide aube -- --help

uv

Run Elide's embedded Python package manager (uv). Arguments after -- pass through to uv.

shell
$  elide uv -- pip install rich
$  elide uv -- --help
Note

aube and uv run only in the native Elide binary. They are handled directly by the native entrypoint and are not available when running Elide in JVM mode.

project

Manage Elide projects defined by elide.pkl or other manifests. Two subcommands are available: project info prints resolved project metadata, and project advice reports actionable suggestions about the project.

shell
$  elide project           # summary
$  elide project info      # resolved project metadata
$  elide project advice    # actionable project suggestions

Licensing Commands

pro

Manage Elide Pro licensing.

Subcommands:
CommandDescription
pro activate Activate Elide Pro with a license token.
`pro use FILE>`Install an offline license key or file.
pro whoamiDisplay current license information.
pro yeetRemove the current license.
shell
$  elide pro activate elide_pro_1234567890abcdef
$  elide pro use /path/to/license.key
$  elide pro whoami
$  elide pro yeet

Lifecycle Commands

upgrade

Self-update the Elide binary using TUF (The Update Framework) for verified, secure updates.

shell
$  elide upgrade
$  elide upgrade --check
$  elide upgrade --channel preview
FlagDefaultDescription
—checkfalseCheck for updates without applying.
—forcefalseForce update even if on latest version.
—channel build channelRelease channel (release, preview, nightly); defaults to the channel this build came from. Local/dev or unknown-channel builds fall back to release.

info

Show information about the current Elide installation. Prints the Elide masthead followed by version, build, platform, and provider details; pass --quiet (-q) to omit the masthead.

shell
$  elide info
$  elide info -q                 # omit the masthead
$  elide info --cargo-lockfile   # print embedded Cargo.lock
FlagDescription
—cargo-lockfilePrint the embedded Cargo.lock and exit.

JVM Toolchain Commands

These commands expose embedded JVM tools. All accept tool-specific flags after --.
CommandDescription
javacJava compiler (up to JDK 25).
kotlincKotlin compiler.
jarBuild and manage Java Archives.
javadocGenerate Java documentation.
javapJava class file disassembler.
jdepsJava class dependency analyzer.
native-imageNative Image compiler.
jibContainer image builder for JVM/native apps.
javaRun a JAR or class via the embedded JVM (drop-in java).
javaformatJava code formatter.
ktfmtKotlin code formatter.
mvnEmbedded Maven build tool.
shell
$  elide javac -- [JAVAC_OPTIONS] [SOURCES...]
$  elide kotlinc -- [KOTLINC_OPTIONS] [SOURCES...]
$  elide jar -- [TOOL_OPTIONS] [FILES...]
$  elide native-image [OPTIONS]

Developer Tools

lsp

Run an LSP (Language Server Protocol) instance for an Elide project.

shell
$  elide lsp

mcp

Run an MCP (Model Context Protocol) server for an Elide project.

shell
$  elide mcp
$  elide mcp --mode stdio
$  elide mcp --mode http --host localhost --port 8125
FlagDefaultDescription
—mode noneOperating mode: stdio or http.
—host localhostBind host (HTTP mode).
—port 8125Bind port (HTTP mode).

help

Show the documentation you are reading right now in the terminal.

shell
$  elide help
$  elide help "something to search"

To show documentation in languages other than your own:

shell
$  elide help --lang fr
$  elide help -luk

To show all supported languages:

shell
$  elide help --languages

repl

Start an interactive polyglot REPL. Running elide with no arguments in a TTY also drops into the REPL.

shell
$  elide repl

Other Commands

format (alias fmt)

Format source files across languages. With no file arguments it formats the project's manifest sources; otherwise it formats the files passed after --.

shell
$  elide format             # format the project's manifest sources
$  elide fmt -- src/app.ts  # format specific files

manifest

Inspect the resolved project manifest (elide.pkl).

shell
$  elide manifest

classpath

Resolve and print the project's JVM classpath.
FlagDescription
—offlineResolve without contacting remote repositories.
shell
$  elide classpath

Global Options

All commands support these global options:

Option Description
-h, --help Show help text for any command.
-V, --version Print version information and exit. On Linux x86_64, --version is intercepted before runtime init for instant response.
-v, --verbose Enable verbose output (debug logging). Sets ELIDE_LOG=debug.
--debug Activate debugging features and trace-level logging. Sets ELIDE_LOG=trace.
-q, --quiet Squelch most output.
-p, --project <PATH> Path to a specific project directory.
--color Force color mode.
--no-color Force no-color mode.
--error-format <FORMAT> Uncaught-error output format: pretty (default, decorative box on stdout) or plain (a parseable Name: message line plus an at <name> (<file>:<line>:<column>) stack on stderr, for scripts and test harnesses). Same effect as ELIDE_ERROR_FORMAT.
--timeout <DURATION> Timeout to apply when exiting (human-readable, e.g. 30s, 5m).
--locale <LOCALE> Override the display locale.
--use-version <VERSION> Delegate to a specific installed Elide version.
--ignore-version Ignore .elideversion and --use-version; run the current binary.
--no-telemetry Disallow telemetry. Has no effect on unlicensed EAP builds.
--no-sidecar Disable sidecar process; forces UDP fallback for telemetry on Linux.
--cloud Enable cloud connection (overrides default for subcommand).
--no-cloud Disable cloud connection.
--no-native Disallow native access.
--coverage[=MODE] Enable code coverage collection. (--debugger / --profiler are not global — see the run command.)
-X, --vm <KEY=VALUE> Set a VM/engine property (can be repeated).
--insights <FILES> Activate insight scripts.
--sandbox Enable the filesystem capability sandbox (deny by default). Implied by any --allow-read / --allow-write.
--allow-read[=PATHS] Grant filesystem read access. Bare --allow-read grants all reads; --allow-read=PATH[,PATH] scopes it. May be passed multiple times.
--allow-write[=PATHS] Grant filesystem write access. Bare --allow-write grants all writes; --allow-write=PATH[,PATH] scopes it. May be passed multiple times.
--fs-audit Log each filesystem access decision to stderr (sandbox audit).
--transport <BACKEND> Select the network transport backend: auto, nio, epoll, io_uring, or kqueue.
--pkgst / --no-pkgst Use the pkg.st accelerated package proxies (on by default); --no-pkgst hits upstream registries directly.
-s, --snippet=<CODE> (alias --code) Execute an inline snippet (like Node/CPython -c): the first value is code, any following values become script arguments.
-l, --language=<LANG> Language for --snippet: js, ts, or py (defaults to JavaScript).
-Xmx<SIZE> / -XX:MaxHeapSize=<SIZE> JVM-style maximum-heap sizing for the isolate (e.g. 512m, 8g); recognized only before --.
--safe-close Force a clean shutdown even in one-shot mode (needed for PGO profiling).
--crash Immediately crash (for testing).
-- Separator between Elide options and positional parameters / script arguments.
Tip: Argfiles

Elide supports argument files (argfiles). Prefix a filename with @ to read options from that file, one per line. Arguments after -- are never expanded.

Exit Codes

Code Meaning
0 Successful execution or --help / --version.
1 Generic failure: invalid arguments, server error, configuration error, license gate block, EAP expired, initialization failure.
2 Exception in user code (guest language runtime error).

On Linux x86_64, --version exits via a raw syscall(exit_group, 0) before the Rust runtime initializes, so the exit code is always 0.

Environment Variables

Variable Description
ELIDE_LOG Log level (trace, debug, info, warn, error). Overridden by --verbose and --debug.
ELIDE_ERROR_FORMAT Set to plain to emit a parseable Name: message line plus stack frames to stderr for uncaught errors (the eshost / Test262 shell-host contract) instead of the decorative box. Same effect as --error-format=plain.
ELIDE_JS_TEST262 Internal — for the Test262 conformance harness only. Set to 1 to expose the GraalJS $262 host object (createRealm, evalScript, detachArrayBuffer, global, gc) via js.test262-mode. Off by default; $262 is never present in normal runs.

See Also