Every Elide project manifest starts with the project schema:
amends "elide:project.pkl"
This page is the field reference for the schema in protocol/manifest/*.pkl.
It lists the properties accepted by Elide today. When a property is parsed but
not currently consumed by a build or runtime path, that is called out.
Top-level Properties
| Property | Type | Default | Description |
|---|
name | String? | null | Project name. |
version | String? | null | Project version. |
description | String? | null | Human-readable project description. |
entrypoint | Listing<String>? | null | Source file path or paths used by elide run when no file is supplied. |
scripts | Mapping<String, String> | {} | Named project scripts surfaced by project tooling. |
dependencies | Dependencies | new {} | npm, PyPI, and Maven dependency declarations. |
jvm | JvmSettings? | null | JVM runtime and compiler settings. |
kotlin | KotlinSettings? | null | Kotlin compiler, toolchain, and feature settings. |
javascript | JavaScriptSettings? | null | JavaScript language settings. |
nativeImage | NativeImageSettings? | null | Project-wide Native Image option shape. Prefer artifact options today. |
engine | EngineSettings? | null | Runtime engine settings. Parsed; maxContexts is not currently consumed. |
sources | Mapping<String, SourceSetSpec or String> | main and test globs | Project source sets. |
dev | DevSettings | new {} | MCP and development metadata. |
toolchain | ToolchainSettings | new {} | Engine version-selection metadata. |
artifacts | Mapping<String, Artifact> | {} | Build artifacts such as JARs, native images, static sites, and containers. |
web | WebSettings? | new {} | Web build and CSS settings. |
testing | Testing | new {} | Test and coverage settings. |
Two read-only objects are also available during evaluation:
| Property | Type | Description |
|---|
build.manifestVersion | Int | Major manifest format version. |
elide.channel | "release" or "debug" | Channel of the Elide binary evaluating the manifest. |
elide.version | semver.Version | Semantic version of the Elide binary evaluating the manifest. |
Sources
Import Sources.pkl when using the structured form:
import "elide:Sources.pkl" as Sources
sources {
["main"] = new Sources.SourceSetSpec {
type = "source"
paths {
"src/main/java/**/*.java"
"src/main/kotlin/**/*.kt"
}
}
}
sources is a mapping from source-set name to either a simple glob string or a
SourceSetSpec.
| Property | Type | Default | Description |
|---|
type | "source", "test", "example", or "other" | "source" | Source-set purpose. test receives test behavior. |
dependsOn | Listing<String> | {} | Other source sets visible to this source set. |
paths | Listing<String> | {} | Source file paths or globs. |
The default manifest defines main = "src/**.*" and test = "test/**.*".
Default source sets other than main depend on main.
Jvm.JvmSourceSetSpec extends SourceSetSpec with:
| Property | Type | Default | Description |
|---|
resources | Mapping<String, String> | {} | Resource mount path to source path for JVM artifacts. |
Dependencies
dependencies {
npm {
packages { "react@19.0.0" }
}
pypi {
packages { "six==1.17.0" }
}
maven {
packages { "com.google.guava:guava:33.4.8-jre" }
}
}
npm
| Property | Type | Default | Description |
|---|
packages | Listing<String> | {} | npm dependencies, such as react@19.0.0. |
devPackages | Listing<String> | {} | npm packages for development-time use. |
PyPI
| Property | Type | Default | Description |
|---|
packages | Listing<String> | {} | PyPI dependencies, such as six==1.17.0 or requests>=2. |
optionalPackages | Mapping<String, Listing<String>> | {} | Named optional PyPI dependency groups. |
Maven
Import Jvm.pkl for structural Maven dependencies or repositories:
import "elide:Jvm.pkl" as Jvm
dependencies {
maven {
packages {
"com.google.guava:guava:33.4.8-jre"
new Jvm.MavenPackageSpec {
group = "com.google.guava"
name = "guava"
version = "33.4.8-jre"
}
}
}
}
Maven dependency buckets accept coordinate strings, MavenPackageSpec, or local
JAR paths. Coordinate strings may use group:artifact, group:artifact:version,
Gradle-style group:artifact:version:classifier, or Aether-style
group:artifact:extension:classifier:version.
| Property | Type | Default | Description |
|---|
packages | Listing<MavenPackageDependency> | {} | Main compile/runtime dependencies. |
devPackages | Listing<MavenPackageDependency> | {} | Installed for development workflows, not normal classpaths. |
modules | Listing<MavenPackageDependency> | {} | Dependencies placed on the JPMS module path. |
compileOnly | Listing<MavenPackageDependency> | {} | Compile-time only dependencies. |
runtimeOnly | Listing<MavenPackageDependency> | {} | Runtime-only dependencies. |
processors | Listing<MavenPackageDependency> | {} | Java annotation processors. |
testPackages | Listing<MavenPackageDependency> | {} | Dependencies for test source sets. |
kotlinPlugins | Listing<MavenPackageDependency> | {} | Kotlin compiler plugins. |
exclusions | Listing<MavenPackageDependency> | {} | Coordinates excluded from resolution and classpath calculations. |
repositories | Mapping<String, MavenRepository> | {} | Extra Maven repositories. |
enableDefaultRepositories | Boolean | true | Enable default repositories such as Maven Central. |
localRepository | String? | null | Path to a local Maven repository. |
MavenPackageSpec:
| Property | Type | Default | Description |
|---|
group | String? | null | Maven group. |
name | String? | null | Maven artifact/module name. |
version | String? | null | Version or symbolic version. |
classifier | String? | null | Classifier for this coordinate. |
coordinate | String? | null | Full coordinate string. Preferred when present. |
MavenRepositorySpec:
| Property | Type | Default | Description |
|---|
name | String? | null | Descriptive repository name. |
description | String? | null | Repository description. |
url | Uri | Required | Repository URL. |
credentials.username | String? | null | Repository username. |
credentials.password | String? | null | Repository password. |
JVM
jvm {
main = "example.Main"
target = 25
java {
compiler {
flags { "-Xlint:all" }
}
}
}
| Property | Type | Default | Description |
|---|
main | String? | null | Main class for JVM applications. |
target | "latest", "stable", "auto", 1.8, 1.9, or 8..29 | "auto" | JVM bytecode target level. |
javaHome | String? | null | Custom Java home override. |
features | JvmFeatures | new {} | JVM feature flags. |
java | JavaLanguage | new {} | Java language and compiler settings. |
flags | Listing<String> | {} | Runtime JVM flags. |
defs | Mapping<String, String> | {} | Runtime system properties. |
debug | Boolean | true | Emit debug info during compilation. |
features:
| Property | Type | Default | Description |
|---|
testing | Boolean | true | Automatically provide JVM test support where supported. |
automodules | Boolean | true | Enable JDK 9+ automatic module-path handling. |
java:
| Property | Type | Default | Description |
|---|
source | JvmTarget | "auto" | Java source version. |
release | JvmTarget | "auto" | Java release target. |
compiler.mode | "embedded", "external", or String | "embedded" | Java compiler implementation. |
compiler.flags | Listing<String> | {} | Extra flags passed to javac. |
Kotlin
kotlin {
compilerOptions {
allWarningsAsErrors = true
jvmTarget = 25
}
}
| Property | Type | Default | Description |
|---|
apiLevel | "latest", "stable", "auto", "1.9", "2.0", "2.1", or "2.2" | "auto" | Kotlin API level. |
languageLevel | Same as apiLevel | "auto" | Kotlin language level. |
compilerOptions | KotlinCompilerJvmOptions | new {} | Kotlin compiler options. |
features | KotlinFeatureOptions | new {} | Kotlin feature flags. |
toolchain | "embedded", ManagedKotlinToolchain, or CustomKotlinToolchain | "embedded" | Kotlin toolchain selection. |
plugins | Mapping<String, Mapping<String, String>> | {} | Options for Kotlin compiler plugins. |
compilerOptions:
| Property | Type | Default | Description |
|---|
optIn | Listing<String> | {} | Kotlin opt-ins. |
progressiveMode | Boolean | false | Enable progressive mode. |
extraWarnings | Boolean | false | Enable extra K2 warnings and checks. |
allWarningsAsErrors | Boolean | false | Treat warnings as errors. |
suppressWarnings | Boolean | false | Suppress warnings. |
verbose | Boolean | false | Enable verbose compiler output. |
freeCompilerArgs | Listing<String> | {} | Raw Kotlin compiler arguments. |
apiVersion | Kotlin API level | "auto" | Explicit compiler API version. |
languageVersion | Kotlin language level | "auto" | Explicit compiler language version. |
includeRuntime | Boolean | false | Include Kotlin runtime classes in output. |
noStdlib | Boolean | false | Do not automatically include Kotlin stdlib. |
javaParameters | Boolean | false | Generate Java 1.8 method parameter metadata. |
jvmTarget | JvmTarget | "auto" | Explicit JVM target for Kotlin. |
noJdk | Boolean | false | Do not automatically include the Java runtime. |
jvmTargetValidationMode | "WARNING", "ERROR", or "IGNORE" | "ERROR" | Java/Kotlin target compatibility validation. |
incremental | Boolean | true | Enable incremental compilation. |
features:
| Property | Type | Default | Description |
|---|
kapt | Boolean | true | Deprecated compatibility field; ignored. |
testing | Boolean | true | Kotlin test support. |
kotlinx | Boolean | true | Automatically include KotlinX dependencies. |
defaultPlugins | Boolean | true | Enable the default built-in compiler plugin suite. |
serialization | Boolean | kotlinx && defaultPlugins | KotlinX serialization support. |
coroutines | Boolean | kotlinx | KotlinX coroutines support. |
atomicfu | Boolean | kotlinx && defaultPlugins | KotlinX AtomicFU compiler plugin. |
powerAssert | Boolean | defaultPlugins | Kotlin Power Assert compiler plugin. |
metro | Boolean | defaultPlugins | Metro dependency-injection compiler plugin. |
reflection | Boolean | true | Kotlin reflection support. |
toolchain may be "embedded", new Kotlin.ManagedKotlinToolchain { version = "..." }, or new Kotlin.CustomKotlinToolchain { path = "..." }.
JavaScript
javascript {
ecma = "latest"
}
| Property | Type | Default | Description |
|---|
ecma | 2015..2025, "stable", or "latest" | "stable" | ECMAScript level to target. |
Native Image
Project-wide nativeImage {} uses the same option shape as native-image
artifacts. For build outputs, set options {} on NativeImage.NativeImage
artifacts so the options are tied to the target being built.
| Property | Type | Default | Description |
|---|
verbose | Boolean | false | Enable verbose Native Image output. |
driverMode | "embedded" or "external" | "embedded" | Invoke Native Image in-process or as a subprocess. |
linkAtBuildTime | NativeImageLinkAtBuildTime | new {} | Link-at-build-time settings. |
classInit | NativeImageClassInit | new {} | Class initialization policy. |
exclusions | NativeImageExclusions | new {} | Classpath/modulepath exclusions. |
optimization | "auto", "b", "s", "0", "1", "2", "3", or "4" | "auto" | Native Image optimization level. |
pgo | ProfileGuidedOptimization | new {} | Profile Guided Optimization settings. |
features | Listing<String> | {} | Native Image feature classes. |
flags | Listing<String> | {} | Extra Native Image flags. |
cflags | Listing<String> | {} | Extra C compiler flags. |
ldflags | Listing<String> | {} | Extra native linker flags. |
defs | Mapping<String, String> | {} | System properties passed during image build. |
linkAtBuildTime:
| Property | Type | Default | Description |
|---|
enabled | Boolean | true | Enable link-at-build-time by default. |
packages | Listing<String> | {} | Classes or packages to link at build time. |
classInit:
| Property | Type | Default | Description |
|---|
default | "buildtime" or "runtime" | "buildtime" | Default class initialization policy. |
buildtime | Listing<String> | {} | Classes or packages initialized at build time. |
runtime | Listing<String> | {} | Classes or packages initialized at runtime. |
exclusions:
| Property | Type | Default | Description |
|---|
all | Listing<MavenPackageDependency> | compiler/SVM internals | Excluded from all paths. |
classpath | Listing<MavenPackageDependency> | {} | Classpath exclusions. |
modulepath | Listing<MavenPackageDependency> | {} | Modulepath exclusions. |
pgo:
| Property | Type | Default | Description |
|---|
enabled | Boolean | true | Enable PGO when profiles are present. |
autoprofile | Boolean | false | Auto-build PGO support. |
instrument | Boolean | false | Build an instrumented image. |
sampling | Boolean | false | Use sampling for PGO. |
profiles | Listing<String> | {} | PGO profile filenames. |
Engine
| Property | Type | Default | Description |
|---|
maxContexts | Int? | null | Intended guest-context limit. Parsed; not currently consumed by runtime dispatch. |
Dev
import "elide:Dev.pkl" as Dev
dev {
mcp {
registerElide = true
advice = true
}
}
| Property | Type | Default | Description |
|---|
source | ProjectSourceSpec? | null | Source hosting metadata. |
mcp | McpSettings? | null | Model Context Protocol settings. |
server | DevServerSettings? | null | Development server defaults. |
source:
| Property | Type | Default | Description |
|---|
platform | "github", "gitlab", "bitbucket", "git", or String | null | Source hosting platform. |
project | String? | null | Project name or path. |
subpath | String? | null | Subpath inside the source project. |
mcp:
| Property | Type | Default | Description |
|---|
resources | Listing<McpResource> | {} | Additional MCP resources. |
registerElide | Boolean | true | Register Elide as an MCP tool. |
advice | Boolean | true | Register project advice with MCP. |
McpResource:
| Property | Type | Default | Description |
|---|
path | String | Required | Resource file path. |
name | String | "" | Resource name. |
description | String | "" | Resource description. |
mimeType | String? | null | Explicit MIME type; detected when omitted. |
server:
| Property | Type | Default | Description |
|---|
host | String | "0.0.0.0" | Development server host. |
port | UInt16 | 8080 | Development server port. |
toolchain {
engines {
["elide"] = "1.4.0"
}
}
| Property | Type | Default | Description |
|---|
engines | Mapping<String, EngineSettings or String> | {} | Accepted engine versions by name. |
EngineSettings:
| Property | Type | Default | Description |
|---|
version | String | Required | Semantic version or version range. |
Artifacts
Every artifact has:
| Property | Type | Default | Description |
|---|
dependsOn | Listing<String> | {} | Other artifacts this artifact depends on. |
JAR
import "elide:Jvm.pkl" as Jvm
artifacts {
["app"] = new Jvm.Jar {
name = "app.jar"
main = "example.Main"
}
}
| Property | Type | Default | Description |
|---|
name | String? | null | Output JAR filename. |
main | String? | null | Main class added to the manifest. |
sources | Listing<String> | { "main" } | Source sets packaged into the JAR. |
resources | Mapping<String, String> | {} | Resource mount path to source path. |
manifest | Mapping<String, String> | {} | Manifest entries. |
manifestFile | String? | null | Existing manifest file path. |
excludes | Listing<String> | {} | Exclusion patterns. |
options.compress | Boolean | true | Compress JAR entries. |
options.defaultManifestProperties | Boolean | true | Add default manifest properties. |
options.entrypoint | String? | null | Main entrypoint for the JAR. |
Sources JAR
| Property | Type | Default | Description |
|---|
sources | Listing<String> | { "main" } | Source sets packaged into the sources JAR. |
classifier | String? | null | JAR classifier, such as sources. |
excludes | Listing<String> | {} | Exclusion patterns. |
includes | Listing<String> | {} | Inclusion patterns. |
Javadoc JAR
| Property | Type | Default | Description |
|---|
sources | Listing<String> | { "main" } | Source sets used for Javadoc. |
groups | Mapping<String, Listing<String>> | {} | Package groupings. |
links | Listing<String> | {} | External documentation links. |
excludes | Listing<String> | {} | Packages or paths excluded from docs. |
windowTitle | String? | null | Browser window title. |
docTitle | String? | null | Documentation title. |
Native Image Artifact
import "elide:NativeImage.pkl" as NativeImage
artifacts {
["native"] = new NativeImage.NativeImage {
from { "app" }
entrypoint = "example.Main"
}
}
| Property | Type | Default | Description |
|---|
from | Listing<String> | {} | Artifacts used as Native Image inputs. |
name | String? | null | Output binary or library name. |
entrypoint | String? | null | Main class. |
type | "binary" or "library" | "binary" | Image type. |
moduleName | String? | null | JPMS module containing the entrypoint. |
options | NativeImageOptions | new {} | Target-specific Native Image options. |
options accepts the same fields listed in Native Image.
Static Site
import "elide:Web.pkl" as Web
artifacts {
["site"] = new Web.StaticSite {
srcs = "site"
prefix = "/"
}
}
| Property | Type | Default | Description |
|---|
srcs | String? | null | Static site source root. |
domain | String? | null | Production domain metadata. |
preview | String? | null | Preview domain metadata. |
prefix | String | "/" | URL prefix; must end with /. |
assets | String | "\(prefix)_/assets" | Public asset path. |
stylesheets | Listing<String> | {} | Stylesheets injected into pages. |
scripts | Listing<String> | {} | Scripts injected into pages. |
rewriteLinks | Boolean | true | Rewrite Markdown links during rendering. |
hosting | "workers", "github-pages", or null | null | Static site host metadata. |
Container Image
import "elide:Container.pkl" as Container
artifacts {
["image"] = new Container.ContainerImage {
image = "example/app"
from { "native" }
tags { "latest" }
}
}
| Property | Type | Default | Description |
|---|
image | String? | null | Target image coordinate. |
base | String? | null | Base image coordinate. |
tags | Listing<String> | {} | Image tags. |
output | "daemon" or "tarball" | "daemon" | Write to Docker daemon or tarball. |
format | "oci" or "docker" | "docker" | Image manifest format. |
from | Listing<String> | {} | Artifacts included in the image. |
Web
import "elide:Web.pkl" as Web
web {
css {
targets {
new Web.CssTarget {
browser = "chrome"
version = "126"
}
}
}
}
| Property | Type | Default | Description |
|---|
css | CssSettings | new {} | CSS build settings. |
minifyHtml | Boolean | true | Minify rendered HTML. |
browsers | Listing<String> | {} | Browser support metadata. css.targets wins for CSS. |
css:
| Property | Type | Default | Description |
|---|
minify | Boolean | true | Minify CSS. |
targets | Listing<CssTarget> | {} | Browser targets for CSS processing. |
CssTarget:
| Property | Type | Default | Description |
|---|
browser | "chrome", "firefox", "safari", "edge", "opera", or String | Required | Browser name. |
version | String? | null | Browser version. |
Testing
import "elide:Jvm.pkl" as Jvm
import "elide:Testing.pkl" as Testing
testing {
reports {
Testing.xmlReport()
}
coverage {
jvm {
enabled = true
reports {
new Jvm.HtmlCoverageReport {}
new Jvm.XmlCoverageReport {}
}
}
}
}
| Property | Type | Default | Description |
|---|
coverage | CoverageSettings | new {} | Coverage settings. |
reports | Listing<Testing.TestReport> | {} | Language-neutral test reports emitted by supported runners. |
coverage.jvm | JvmCoverageSettings | new {} | JVM coverage settings. |
coverage.jvm.enabled | Boolean | true | Enable JVM coverage. |
coverage.jvm.reports | Listing<JvmCoverageReport> | {} | JVM coverage reports. |
Test report classes:
| Class | name | Description |
|---|
Testing.XmlTestReport | "xml" | JUnit-compatible XML test report. JVM output is written below .dev/reports/tests/jvm/<source-set>/. |
JVM report classes:
| Class | name | Description |
|---|
Jvm.HtmlCoverageReport | "html" | HTML coverage report. |
Jvm.XmlCoverageReport | "xml" | XML coverage report. |
Jvm.CsvCoverageReport | "csv" | CSV coverage report. |
Testing.pkl exports xmlReport() for test result XML. Jvm.pkl exports
sourceSet(), htmlReport(), xmlReport(), and csvReport(); its report helpers configure coverage output.