ende repl

Special variables

The REPL provides a couple of special variables, that are always available:

Identifier Description
_ Yields the last evaluated expression
_error Yields the last thrown error
Ende 2026.10.17
exit using ctrl+d or close()
> "hello world!"
"hello world!"
> _
"hello world!"
> const foo = "bar";
undefined
> _
undefined

Special functions

The REPL provides several functions in the global scope:

Function Description
clear() Clears the entire terminal screen
close() Close the current REPL session

--eval flag

--eval flag allows you to run some code in the runtime before you are dropped into the REPL. This is useful for importing some code you commonly use in the REPL, or modifying the runtime in some way:

ende repl --allow-net --eval 'import { assert } from "jsr:@ende/assert@^2026.10.15"'
Ende 2026.10.17
exit using ctrl+d, ctrl+c, or close()
> assert(true)
undefined
> assert(false)
Uncaught AssertionError
    at assert (https://jsr.io/@ende/assert/1.0.0/assert.ts:21:11)
    at <anonymous>:1:22

--eval-file flag

--eval-file flag allows you to run code from specified files before you are dropped into the REPL. Like the --eval flag, this is useful for importing code you commonly use in the REPL, or modifying the runtime in some way.

Files can be specified as paths or URLs. URL files are cached and can be reloaded via the --reload flag.

If --eval is also specified, then --eval-file files are run before the --eval code.

ende repl --eval-file=https://docs.ende.sh/examples/welcome.ts,https://docs.ende.sh/examples/local.ts
Download https://docs.ende.sh/examples/welcome.ts
Welcome to Ende!
Download https://docs.ende.sh/examples/local.ts
Ende 2026.10.17
exit using ctrl+d or close()
> local // this variable is defined locally in local.ts, but not exported
"This is a local variable inside of local.ts"

Relative Import Path Resolution

If --eval-file specifies a code file that contains relative imports, then the runtime will try to resolve the imports relative to the current working directory. It will not try to resolve them relative to the code file's location. This can cause "Module not found" errors when --eval-file is used with module files:

ende repl --eval-file=https://jsr.io/@ende/encoding/1.0.0/ascii85.ts
error in --eval-file file https://jsr.io/@ende/encoding/1.0.0/ascii85.ts. Uncaught TypeError: Module not found "file:///home/_validate_binary_like.ts".
    at async <anonymous>:2:13
Ende 2026.10.17
exit using ctrl+d or close()
>

Tab completions

Tab completions are a crucial feature for quick navigation in the REPL. After hitting tab key, Ende will now show a list of all possible completions.

ende repl
Ende 2026.10.17
exit using ctrl+d or close()
> Ende.read
readTextFile      readFile          readDirSync       readLinkSync      readAll           read
readTextFileSync  readFileSync      readDir           readLink          readAllSync       readSync

Keyboard shortcuts

Keystroke Action
Ctrl-A, Home Move cursor to the beginning of line
Ctrl-B, Left Move cursor one character left
Ctrl-C Interrupt and cancel the current edit
Ctrl-D If line is empty, signal end of line
Ctrl-D, Del If line is not empty, delete character under cursor
Ctrl-E, End Move cursor to end of line
Ctrl-F, Right Move cursor one character right
Ctrl-H, Backspace Delete character before cursor
Ctrl-I, Tab Next completion
Ctrl-J, Ctrl-M, Enter Finish the line entry
Ctrl-K Delete from cursor to end of line
Ctrl-L Clear screen
Ctrl-N, Down Next match from history
Ctrl-P, Up Previous match from history
Ctrl-R Reverse Search history (Ctrl-S forward, Ctrl-G cancel)
Ctrl-T Transpose previous character with current character
Ctrl-U Delete from start of line to cursor
Ctrl-V, Ctrl-Q Insert the subsequent character verbatim instead of performing any Action associated with it. For example, to insert a newline while editing a multi-line history entry, press Ctrl-V then Ctrl-J (Ctrl-J is the ASCII Control Character Line Feed)
Ctrl-W Delete word leading up to cursor (using white space as a word boundary)
Ctrl-X Ctrl-U Undo
Ctrl-Y Paste from Yank buffer
Ctrl-Y Paste from Yank buffer (Meta-Y to paste next yank instead)
Ctrl-Z Suspend (Unix only)
Ctrl-_ Undo
Meta-0, 1, ..., - Specify the digit to the argument. – starts a negative argument.
Meta < Move to first entry in history
Meta > Move to last entry in history
Meta-B, Alt-Left Move cursor to previous word
Meta-Backspace Kill from the start of the current word, or, if between words, to the start of the previous word
Meta-C Capitalize the current word
Meta-D Delete forwards one word
Meta-F, Alt-Right Move cursor to next word
Meta-L Lower-case the next word
Meta-T Transpose words
Meta-U Upper-case the next word
Meta-Y See Ctrl-Y
Ctrl-S Insert a new line

ENDE_REPL_HISTORY

By default, Ende stores REPL history in an ende_history.txt file within the ENDE_DIR directory. The location of your ENDE_DIR directory and other resources, can be found by running the ende info.

You can use ENDE_REPL_HISTORY environmental variable to control where Ende stores the REPL history file. You can set it to an empty value, Ende will not store the history file.

Command line usage:

repl

Start an interactive Read-Eval-Print Loop (REPL) for Ende

Options

--cached-only

Require that remote dependencies are already cached.

--cert

Load certificate authority from PEM encoded file.

--config, -c

Configure different aspects of ende including TypeScript, linting, and code formatting. Typically the configuration file will be called ende.json or ende.jsonc and automatically detected; in that case this flag is not necessary.

--env-file

Load environment variables from local file Only the first environment variable with a given key is used. Existing process environment variables are not overwritten, so if variables with the same names already exist in the environment, their values will be preserved. Where multiple declarations for the same environment variable exist in your .env file, the first one encountered is applied. This is determined by the order of the files you pass as arguments.

--eval

Evaluates the provided code when the REPL starts.

--eval-file

Evaluates the provided file(s) as scripts when the REPL starts. Accepts file paths and URLs.

--frozen-lockfile

Error out if lockfile is out of date.

--import-map

Load import map file from local file or remote URL.

--inspect

Activate inspector on host:port [default: 127.0.0.1:9229]. Host and port are optional. Using port 0 will assign a random free port.

--inspect-brk

Activate inspector on host:port, wait for debugger to connect and break at the start of user script.

--inspect-publish-uid

--inspect-wait

Activate inspector on host:port and wait for debugger to connect before running user code.

--json

--location

Value of globalThis.location used by some web APIs.

--lock

Check the specified lock file. (If value is not provided, defaults to "./ende.lock").

--min-dep-age

(Unstable) The age in minutes, ISO-8601 duration or RFC3339 absolute timestamp (e.g. '120' for two hours, 'P2D' for two days, '2025-09-16' for cutoff date, '2025-09-16T12:00:00+00:00' for cutoff time, '0' to disable).

--no-check

Skip type-checking. If the value of "remote" is supplied, diagnostic errors from remote modules will be ignored.

--no-config

Disable automatic loading of the configuration file.

--no-lock

Disable auto discovery of the lock file.

--no-remote

Do not resolve remote modules.

--preload

A list of files that will be executed before the main module.

--reload, -r

Reload source code cache (recompile TypeScript). With no value, reloads everything. Pass a comma-separated list of specifiers to reload only those modules; jsr:@ende/http/file-server,jsr:@ende/assert/equals reloads specific modules.

--seed

Set the random number generator seed.

--unsafely-ignore-certificate-errors

DANGER: Disables verification of TLS certificates.

--v8-flags

To see a list of all available flags use --v8-flags=--help Flags can also be set via the ENDE_V8_FLAGS environment variable. Any flags set with this flag are appended after the ENDE_V8_FLAGS environment variable.

--vendor

Toggles local vendor folder usage for remote modules.