ende install

ende install installs dependencies and caches them for your project. For more on how Ende handles modules, see Modules and dependencies.

Examples

ende install

Use this command to install all dependencies defined in ende.json. They are installed in the global cache.

ende install [PACKAGES]

Use this command to install particular packages and add them to ende.json.

ende install jsr:@ende/testing jsr:@ende/path

Tip

You can also use ende add which is an alias to ende install [PACKAGES]

ende install --entrypoint [FILES]

Use this command to install all dependencies that are used in the provided files and their dependencies.

This is particularly useful if you use jsr:, http: or https: specifiers in your code and want to cache all the dependencies before deploying your project.

main.js
import * as colors from "jsr:@ende/fmt/colors";
import { join } from "jsr:@ende/path";
ende install -e main.js
Download jsr:@ende/fmt
Download jsr:@ende/path

ende install --global [PACKAGE_OR_URL]

Use this command to install the provided package or script as a globally available binary on your system.

This command creates a thin, executable shell script which invokes ende using the specified CLI flags and main module. It is placed in the installation root.

Example:

ende install --global --allow-net --allow-read jsr:@ende/http/file-server
Download jsr:@ende/http/file-server...

✅ Successfully installed file-server.
/Users/ende/.ende/bin/file-server

To change the executable name, use -n/--name:

ende install -g -N -R -n serve jsr:@ende/http/file-server

The executable name is inferred by default:

  • Attempt to take the file stem of the URL path. The above example would become 'file-server'.
  • If the file stem is something generic like 'main', 'mod', 'index' or 'cli', and the path has no parent, take the file name of the parent path. Otherwise settle with the generic name.
  • If the resulting name has an '@...' suffix, strip it.

To change the installation root, use --root:

ende install -g -N -R --root /usr/local/bin jsr:@ende/http/file-server

The installation root is determined, in order of precedence:

  • --root option
  • ENDE_INSTALL_ROOT environment variable
  • $HOME/.ende

Executables are placed in the bin subdirectory of the installation root, unless the root path already ends with bin, in which case it is used directly. The resulting directory must be added to the path manually if required.

echo 'export PATH="$HOME/.ende/bin:$PATH"' >> ~/.bashrc

You must specify permissions that will be used to run the script at installation time.

ende install -g -N -R jsr:@ende/http/file-server -- -p 8080

The above command creates an executable called file_server that runs with network and read permissions and binds to port 8080.

For good practice, use the import.meta.main idiom to specify the entry point in an executable script.

Example:

// https://example.com/awesome/cli.ts
async function myAwesomeCli(): Promise<void> {
  // -- snip --
}

if (import.meta.main) {
  myAwesomeCli();
}

When you create an executable script make sure to let users know by adding an example installation command to your repository:

# Install using ende install

ende install -n awesome_cli https://example.com/awesome/cli.ts

ende install --global --compile [PACKAGE_OR_URL]

Use this command to compile a package or script into a standalone, self-contained binary. The resulting executable can be distributed and run without requiring Ende to be installed on the target system.

ende install --global --compile -A -n satz jsr:@ende/satz/cli

This combines the behavior of ende compile with global installation — producing a native binary placed in the installation root (same as --global without --compile).

--quiet flag

The --quiet flag suppresses diagnostic output when installing dependencies. When used with ende install, it will hide progress indicators, download information, and success messages.

ende install --quiet jsr:@ende/http/file-server

This is useful for scripting environments or when you want cleaner output in CI pipelines.

Uninstall

You can uninstall dependencies or binary script with ende uninstall command:

ende uninstall express
Removed express
ende uninstall -g file-server
deleted /Users/ende/.ende/bin/file-server
✅ Successfully uninstalled file-server

See ende uninstall page for more details.

Command line usage:

install

Installs dependencies either in the local project or globally to a bin directory

Options

--cached-only

Require that remote dependencies are already cached.

--cert

Load certificate authority from PEM encoded file.

--check

Set type-checking behavior. This subcommand type-checks local modules by default, so passing --check is redundant; pass --check=all to also type-check remote modules. Alternatively, use the 'ende check' subcommand.

--compile

Install the script as a compiled executable.

--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.

--entrypoint, -e

Install dependents of the specified entrypoint(s).

--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.

--force, -f

Forcefully overwrite existing installation.

--frozen-lockfile

Error out if lockfile is out of date.

--global, -g

Install a package or script as a globally available executable.

--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.

--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").

--lockfile-only

Install only updating the lockfile.

--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).

--name, -n

Executable file name.

--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.

--no-save

Install the package(s) without adding them to the configuration file.

--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.

--root

Installation root.

--save-exact

Save exact version without the caret (^).

--seed

Set the random number generator seed.

--unsafely-ignore-certificate-errors

DANGER: Disables verification of TLS certificates.

--unscoped

Use the package name without its scope as the alias (ex. jsr:@david/jsonc-morph is added as jsonc-morph). Packages given an explicit alias are unaffected.

--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.