elide
Elide is a fast batteries-included runtime, combining support for Kotlin, JavaScript, TypeScript, and Python.
elide: verb. to omit (a sound or syllable) when speaking. to join together; to merge.
Latest: 1.0.0-beta10
Learn more at elide.dev | Docs, Guides, and Samples
[!IMPORTANT] Careful! Elide is in beta.
Elide is like Node or Python. Use it to run things:
> elide ./my-code.{ts,js,py,kts,kt}
You can use Node APIs. You can even mix languages:
// sample.mts
// use node apis
import { readFileSync } from "node:fs"
// interoperate across languages
import sample from "./sample.py"
// this is typescript - no build step needed first, like deno or bun
const x: number = 42;
console.log(sample.greeting() + ` The answer is ${x}`);
# sample.py
def greeting(name = "Elide"):
return f"Hello, {name}!"
> elide ./sample.mts
Hello, Elide! The answer is 42
Kotlin as a first-class citizen
Elide can run Kotlin with no prior build step, can build Java code identically to javac, and can build Kotlin code identically to kotlinc.

- KotlinX is supported out of the box with no need to install dependencies
- Build Kotlin to JVM bytecode, run tests, and install from Maven, all without verbose configuration
Pkl as a manifest format
Elide uses Apple's Pkl as a dialect for project manifests. This is like Elide's equivalent of package.json or pom.xml. Here's an example:
amends "elide:project.pkl"
name = "elide-test-ktjvm"
description = "Example project using Elide with Kotlin/JVM."
dependencies {
maven {
packages {
// Guava
"com.google.guava:guava:33.4.8-jre"
}
}
}
This is the manifest used above :pointup: in the _Kotlin as a first-class citizen sample.
[!NOTE] See the full sources for the
ktjvmsample here
Read more about Elide's feature highlights
Support for End-User Binaries + Containers
Elide has early support for building your apps into native binaries, too! You can even wrap these in containers, without the need for Docker.
Adding to the Kotlin as a first-class-citizen example above:
artifacts {
// Build a JAR from our Kotlin code.
["jar"] = build.jar()
// Build a native image from our JAR and classpath.
["native"] = build.nativeImage("jar")
// Wrap the native image in a container image.
["container"] = (build.containerImage("native")) {
// Set this property to a remote image. This is the target image.
image = "ghcr.io/elide-dev/samples/containers"
}
}
Now, elide build produces a JAR, a native image, and a container image, and then pushes it directly up to the registry
listed in the config:

[!NOTE] See the full sources for the
containerssample here
Installation
You can install Elide in several ways:
Script Install (Linux amd64 or macOS arm64)
curl -sSL --tlsv1.2 elide.sh | bash -s -
Homebrew (macOS)
brew tap elide-dev/elide
brew install elide
After installation, you can run elide --help or elide info to see more information.
[!NOTE] If you need a binary for a different architecture, please file an issue.
Using Elide via Docker
We provide a container image, hosted on GitHub:
docker run --rm -it ghcr.io/elide-dev/elide
Using Elide in GitHub Actions
We provide a setup action:
- name: "Setup: Elide"
uses: elide-dev/setup-elide@v3
with:
# any tag from the `elide-dev/elide` repo; omit for latest
version: 1.0.0-beta10
Using Elide from Gradle
We provide an experimental Gradle plugin which can:
- Accelerate
javaccompilations by up to 20x (drop-in!) with identical inputs and outputs - Accelerate downloading of Maven dependencies
The plugin documentation explains how it works. By native-image compiling tools like javac, JIT warmup is skipped, potentially yielding significant performance gains for projects under 10,000 classes.
plugins {
alias(elideRuntime.plugins.elide)
}
Using Elide via GitHub Codespaces
We provide a GitHub Codespace with Elide pre-installed. You can click below to try it out, right from your browser:
Contributing
Issue reports and pull requests are welcome! See our contribution guidelines or join our discord community and let us know which features you would like to see implemented, or simply participate in the discussions to help shape the future of the project.
