Docs
Elide elide

The next runtime.

One binary for native performance in your favorite language.

curl -sSL --tlsv1.2 elide.sh | bash -s -
Read the docs →
Hello.kt
// Built-in compiler.

fun greeting(name: String = "Elide") = "Hello, ${name}!"

fun main() {
  val x = 42
  println(greeting() + " The answer is ${x}")
}
$ elide kotlinc -- Hello.kt
elide.pkl
// Typed deps -- no XML, no pom.xml
amends "elide:project.pkl"

name = "my-app"

dependencies {
  maven {
    packages {
      "io.ktor:ktor-server-core:3.1.1"
      "io.ktor:ktor-server-netty:3.1.1"
    }
  }
}
$ elide install
elide.pkl
artifacts {
  ["classes"] = new Jvm.Jar {
    sources { "main" }
  }
  ["native"] = new Native.NativeImage {
    from { "classes" }
  }
}
$ elide build :native
elide.dev 2026
Next.js
500ms
Elide
5ms
100x faster than Next.js
kotlinc
2.6s
Elide
71ms
36x faster than kotlinc
javac
345ms
Elide
13.5ms
25x faster than javac
CPython
15ms
Elide
5ms
3x faster than CPython
~5ms cold start

SSR cold-start benchmarks on Linux x64. See methodology.

Hello.kt
// Built-in compiler.

fun greeting(name: String = "Elide") = "Hello, ${name}!"

fun main() {
  val x = 42
  println(greeting() + " The answer is ${x}")
}
$ elide kotlinc -- Hello.kt
elide.pkl
// Typed deps -- no XML, no pom.xml
amends "elide:project.pkl"

name = "my-app"

dependencies {
  maven {
    packages {
      "io.ktor:ktor-server-core:3.1.1"
      "io.ktor:ktor-server-netty:3.1.1"
    }
  }
}
$ elide install
elide.pkl
artifacts {
  ["classes"] = new Jvm.Jar {
    sources { "main" }
  }
  ["native"] = new Native.NativeImage {
    from { "classes" }
  }
}
$ elide build :native

First-class citizen. No prior build step. KotlinX out of the box. Maven dependencies with zero config.

.kt

hello.kt
import kotlinx.serialization.json.Json
import kotlinx.serialization.Serializable

@Serializable
data class Config(val name: String, val port: Int)

fun main() {
  val config = Json.decodeFromString<Config>("""{"name":"elide","port":3000}""")
  println("Running ${config.name} on port ${config.port}")
}

NORMAL hello.kt 10L, 285B
$ elide run hello.kt
Running elide on port 3000

Pkl as a manifest format. Like package.json or pom.xml, but typed and composable. Maven dependencies resolve automatically.

project.pkl
amends "elide:project.pkl"

name = "elide-test-ktjvm"
description = "Example project using Elide with Kotlin/JVM."

dependencies {
  maven {
    packages {
      "com.google.guava:guava:33.4.8-jre"
    }
  }
}

NORMAL project.pkl 12L, 210B
Agents

Elide lets your agents see inside running programs so they can help modify behavior live. An AI agent can test code as it builds, inspect runtime state, and iterate without restarting. The runtime becomes a collaborator, not a black box.

Performance

100x faster than Next.js isn't a theoretical benchmark. It's what happens when you compile JavaScript to native machine code instead of interpreting it. Same for Python. Same for Kotlin.

Safety

You don't have to rewrite in Rust to get memory safety. Elide sandboxes your existing JavaScript, Python, and JVM code at the runtime level. The safety comes from the runtime, not the language.

Productivity

No more "which Node version." No more "which JDK." No more "which Python." One binary, every language, every developer on the team.

Compatibility

No migration guide because there's nothing to migrate. Same file extensions, same imports, same APIs. Faster output.

Script
$ curl -sSL --tlsv1.2 elide.sh | bash -s -
Homebrew
$ brew install elide-dev/elide/elide
Docker
$ docker run --rm -it ghcr.io/elide-dev/elide
GitHub Actions
uses: elide-dev/setup-elide@v3