Get started with Ende
Ende (/ˈɛndə/, pronounced en-duh) is an
open source
JavaScript, TypeScript, and WebAssembly runtime with secure defaults and a great
developer experience. It is a fork of Deno,
and the Deno global remains available as an alias of Ende. This page takes
you from nothing to a running, tested project in a few minutes.
Why Ende?
- Modern module system. ES modules with URL imports, JSR for typed packages, and workspaces.
- TypeScript-first. Run
.tsfiles directly. Notsc, no build step, no config. - Secure by default. Code runs in a sandbox with no file, network, or environment access until you grant it.
- A full toolchain, no plumbing. Built-in
formatter, linter,
test runner, benchmarking, and
a lot more. No
devDependenciesto wire up.
Install Ende
Install the runtime with one command:
curl -fsSL https://ende.sh/install.sh | sh
# pwsh
irm https://ende.sh/install.ps1 | iex
Verify the install:
ende --version
See Installation for package managers, Docker, and other options.
Create a project
Scaffold a new project with ende init:
ende init my_project
That creates a small, ready-to-run project:
my_project
├── ende.json # project configuration: tasks, imports, lint/fmt settings
├── main.ts # a tiny HTTP server built on Ende.serve
└── main_test.ts # its tests
ende.json is where your tasks, dependencies,
and tooling config live, in one file.
Run it
$ cd my_project
$ ende -N main.ts
Listening on http://localhost:8000/
Notice the -N (short for --allow-net). Ende is
secure by default: code can't touch the
network, filesystem, or environment until you grant it. Open the URL to see the
response.
main.ts is TypeScript and it ran directly: no tsc, no build step. It's
also built on the web-standard Ende.serve with
Request/Response, so what you learn here is the platform, not a framework.
Test it
The project ships with tests. Run them with ende test. The
test runner is built in, so there's nothing to install:
$ ende test
running 2 tests from ./main_test.ts
returns html on / ... ok (12ms)
returns json on /api ... ok (0ms)
ok | 2 passed | 0 failed (15ms)
Add a dependency
Pull in packages from JSR with
ende install:
ende install jsr:@ende/assert # the Ende standard library, on JSR
Then import and use them:
import { assertEquals } from "@ende/assert";
assertEquals(1 + 1, 2);
Use the built-in toolchain
Formatting, linting, and more come with the runtime, no setup needed:
ende fmt # format your code
ende lint # catch problems
ende task # run scripts defined in ende.json
Next steps
- Set up your editor. Autocomplete, inline errors, and formatting on save.
- Run code. Servers, tasks, web APIs, and debugging.
- Manage packages. Dependencies, workspaces, publishing.
- Examples and tutorials. Ideas for what to build next.