elide.pkl Reference

Every Elide project manifest starts with the project schema:

pkl
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

PropertyTypeDefaultDescription
nameString?nullProject name.
versionString?nullProject version.
descriptionString?nullHuman-readable project description.
entrypointListing?nullSource file path or paths used by elide run when no file is supplied.
scriptsMapping{}Named project scripts surfaced by project tooling.
dependenciesDependenciesnew {}npm, PyPI, and Maven dependency declarations.
jvmJvmSettings?nullJVM runtime and compiler settings.
kotlinKotlinSettings?nullKotlin compiler, toolchain, and feature settings.
javascriptJavaScriptSettings?nullJavaScript language settings.
nativeImageNativeImageSettings?nullProject-wide Native Image option shape. Prefer artifact options today.
engineEngineSettings?nullRuntime engine settings. Parsed; maxContexts is not currently consumed.
sourcesMappingmain and test globsProject source sets.
devDevSettingsnew {}MCP and development metadata.
toolchainToolchainSettingsnew {}Engine version-selection metadata.
artifactsMapping{}Build artifacts such as JARs, native images, static sites, and containers.
webWebSettings?new {}Web build and CSS settings.
testingTestingnew {}Test and coverage settings.
Two read-only objects are also available during evaluation:
PropertyTypeDescription
build.manifestVersionIntMajor manifest format version.
elide.channel"release" or "debug"Channel of the Elide binary evaluating the manifest.
elide.versionsemver.VersionSemantic version of the Elide binary evaluating the manifest.

Sources

Import Sources.pkl when using the structured form:

pkl
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.
PropertyTypeDefaultDescription
type"source", "test", "example", or "other""source"Source-set purpose. test receives test behavior.
dependsOnListing{}Other source sets visible to this source set.
pathsListing{}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:
PropertyTypeDefaultDescription
resourcesMapping{}Resource mount path to source path for JVM artifacts.

Dependencies

pkl
dependencies {
  npm {
    packages { "react@19.0.0" }
  }
  pypi {
    packages { "six==1.17.0" }
  }
  maven {
    packages { "com.google.guava:guava:33.4.8-jre" }
  }
}

npm

PropertyTypeDefaultDescription
packagesListing{}npm dependencies, such as react@19.0.0.
devPackagesListing{}npm packages for development-time use.

PyPI

PropertyTypeDefaultDescription
packagesListing{}PyPI dependencies, such as six==1.17.0 or requests>=2.
optionalPackagesMapping>{}Named optional PyPI dependency groups.

Maven

Import Jvm.pkl for structural Maven dependencies or repositories:

pkl
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.
PropertyTypeDefaultDescription
packagesListing{}Main compile/runtime dependencies.
devPackagesListing{}Installed for development workflows, not normal classpaths.
modulesListing{}Dependencies placed on the JPMS module path.
compileOnlyListing{}Compile-time only dependencies.
runtimeOnlyListing{}Runtime-only dependencies.
processorsListing{}Java annotation processors.
testPackagesListing{}Dependencies for test source sets.
kotlinPluginsListing{}Kotlin compiler plugins.
exclusionsListing{}Coordinates excluded from resolution and classpath calculations.
repositoriesMapping{}Extra Maven repositories.
enableDefaultRepositoriesBooleantrueEnable default repositories such as Maven Central.
localRepositoryString?nullPath to a local Maven repository.
MavenPackageSpec:
PropertyTypeDefaultDescription
groupString?nullMaven group.
nameString?nullMaven artifact/module name.
versionString?nullVersion or symbolic version.
classifierString?nullClassifier for this coordinate.
coordinateString?nullFull coordinate string. Preferred when present.
MavenRepositorySpec:
PropertyTypeDefaultDescription
nameString?nullDescriptive repository name.
descriptionString?nullRepository description.
urlUriRequiredRepository URL.
credentials.usernameString?nullRepository username.
credentials.passwordString?nullRepository password.

JVM

pkl
jvm {
  main = "example.Main"
  target = 25
  java {
    compiler {
      flags { "-Xlint:all" }
    }
  }
}
PropertyTypeDefaultDescription
mainString?nullMain class for JVM applications.
target"latest", "stable", "auto", 1.8, 1.9, or 8..29"auto"JVM bytecode target level.
javaHomeString?nullCustom Java home override.
featuresJvmFeaturesnew {}JVM feature flags.
javaJavaLanguagenew {}Java language and compiler settings.
flagsListing{}Runtime JVM flags.
defsMapping{}Runtime system properties.
debugBooleantrueEmit debug info during compilation.
features:
PropertyTypeDefaultDescription
testingBooleantrueAutomatically provide JVM test support where supported.
automodulesBooleantrueEnable JDK 9+ automatic module-path handling.
java:
PropertyTypeDefaultDescription
sourceJvmTarget"auto"Java source version.
releaseJvmTarget"auto"Java release target.
compiler.mode"embedded", "external", or String"embedded"Java compiler implementation.
compiler.flagsListing{}Extra flags passed to javac.

Kotlin

pkl
kotlin {
  compilerOptions {
    allWarningsAsErrors = true
    jvmTarget = 25
  }
}
PropertyTypeDefaultDescription
apiLevel"latest", "stable", "auto", "1.9", "2.0", "2.1", or "2.2""auto"Kotlin API level.
languageLevelSame as apiLevel"auto"Kotlin language level.
compilerOptionsKotlinCompilerJvmOptionsnew {}Kotlin compiler options.
featuresKotlinFeatureOptionsnew {}Kotlin feature flags.
toolchain"embedded", ManagedKotlinToolchain, or CustomKotlinToolchain"embedded"Kotlin toolchain selection.
pluginsMapping>{}Options for Kotlin compiler plugins.
compilerOptions:
PropertyTypeDefaultDescription
optInListing{}Kotlin opt-ins.
progressiveModeBooleanfalseEnable progressive mode.
extraWarningsBooleanfalseEnable extra K2 warnings and checks.
allWarningsAsErrorsBooleanfalseTreat warnings as errors.
suppressWarningsBooleanfalseSuppress warnings.
verboseBooleanfalseEnable verbose compiler output.
freeCompilerArgsListing{}Raw Kotlin compiler arguments.
apiVersionKotlin API level"auto"Explicit compiler API version.
languageVersionKotlin language level"auto"Explicit compiler language version.
includeRuntimeBooleanfalseInclude Kotlin runtime classes in output.
noStdlibBooleanfalseDo not automatically include Kotlin stdlib.
javaParametersBooleanfalseGenerate Java 1.8 method parameter metadata.
jvmTargetJvmTarget"auto"Explicit JVM target for Kotlin.
noJdkBooleanfalseDo not automatically include the Java runtime.
jvmTargetValidationMode"WARNING", "ERROR", or "IGNORE""ERROR"Java/Kotlin target compatibility validation.
incrementalBooleantrueEnable incremental compilation.
features:
PropertyTypeDefaultDescription
kaptBooleantrueDeprecated compatibility field; ignored.
testingBooleantrueKotlin test support.
kotlinxBooleantrueAutomatically include KotlinX dependencies.
defaultPluginsBooleantrueEnable the default built-in compiler plugin suite.
serializationBooleankotlinx && defaultPluginsKotlinX serialization support.
coroutinesBooleankotlinxKotlinX coroutines support.
atomicfuBooleankotlinx && defaultPluginsKotlinX AtomicFU compiler plugin.
powerAssertBooleandefaultPluginsKotlin Power Assert compiler plugin.
metroBooleandefaultPluginsMetro dependency-injection compiler plugin.
reflectionBooleantrueKotlin reflection support.
toolchain may be "embedded", new Kotlin.ManagedKotlinToolchain { version = "..." }, or new Kotlin.CustomKotlinToolchain { path = "..." }.

JavaScript

pkl
javascript {
  ecma = "latest"
}
PropertyTypeDefaultDescription
ecma2015..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.
PropertyTypeDefaultDescription
verboseBooleanfalseEnable verbose Native Image output.
driverMode"embedded" or "external""embedded"Invoke Native Image in-process or as a subprocess.
linkAtBuildTimeNativeImageLinkAtBuildTimenew {}Link-at-build-time settings.
classInitNativeImageClassInitnew {}Class initialization policy.
exclusionsNativeImageExclusionsnew {}Classpath/modulepath exclusions.
optimization"auto", "b", "s", "0", "1", "2", "3", or "4""auto"Native Image optimization level.
pgoProfileGuidedOptimizationnew {}Profile Guided Optimization settings.
featuresListing{}Native Image feature classes.
flagsListing{}Extra Native Image flags.
cflagsListing{}Extra C compiler flags.
ldflagsListing{}Extra native linker flags.
defsMapping{}System properties passed during image build.
linkAtBuildTime:
PropertyTypeDefaultDescription
enabledBooleantrueEnable link-at-build-time by default.
packagesListing{}Classes or packages to link at build time.
classInit:
PropertyTypeDefaultDescription
default"buildtime" or "runtime""buildtime"Default class initialization policy.
buildtimeListing{}Classes or packages initialized at build time.
runtimeListing{}Classes or packages initialized at runtime.
exclusions:
PropertyTypeDefaultDescription
allListingcompiler/SVM internalsExcluded from all paths.
classpathListing{}Classpath exclusions.
modulepathListing{}Modulepath exclusions.
pgo:
PropertyTypeDefaultDescription
enabledBooleantrueEnable PGO when profiles are present.
autoprofileBooleanfalseAuto-build PGO support.
instrumentBooleanfalseBuild an instrumented image.
samplingBooleanfalseUse sampling for PGO.
profilesListing{}PGO profile filenames.

Engine

PropertyTypeDefaultDescription
maxContextsInt?nullIntended guest-context limit. Parsed; not currently consumed by runtime dispatch.

Dev

pkl
import "elide:Dev.pkl" as Dev

dev {
  mcp {
    registerElide = true
    advice = true
  }
}
PropertyTypeDefaultDescription
sourceProjectSourceSpec?nullSource hosting metadata.
mcpMcpSettings?nullModel Context Protocol settings.
serverDevServerSettings?nullDevelopment server defaults.
source:
PropertyTypeDefaultDescription
platform"github", "gitlab", "bitbucket", "git", or StringnullSource hosting platform.
projectString?nullProject name or path.
subpathString?nullSubpath inside the source project.
mcp:
PropertyTypeDefaultDescription
resourcesListing{}Additional MCP resources.
registerElideBooleantrueRegister Elide as an MCP tool.
adviceBooleantrueRegister project advice with MCP.
McpResource:
PropertyTypeDefaultDescription
pathStringRequiredResource file path.
nameString""Resource name.
descriptionString""Resource description.
mimeTypeString?nullExplicit MIME type; detected when omitted.
server:
PropertyTypeDefaultDescription
hostString"0.0.0.0"Development server host.
portUInt168080Development server port.

Toolchain

pkl
toolchain {
  engines {
    ["elide"] = "1.4.0"
  }
}
PropertyTypeDefaultDescription
enginesMapping{}Accepted engine versions by name.
EngineSettings:
PropertyTypeDefaultDescription
versionStringRequiredSemantic version or version range.

Artifacts

Every artifact has:
PropertyTypeDefaultDescription
dependsOnListing{}Other artifacts this artifact depends on.

JAR

pkl
import "elide:Jvm.pkl" as Jvm

artifacts {
  ["app"] = new Jvm.Jar {
    name = "app.jar"
    main = "example.Main"
  }
}
PropertyTypeDefaultDescription
nameString?nullOutput JAR filename.
mainString?nullMain class added to the manifest.
sourcesListing{ "main" }Source sets packaged into the JAR.
resourcesMapping{}Resource mount path to source path.
manifestMapping{}Manifest entries.
manifestFileString?nullExisting manifest file path.
excludesListing{}Exclusion patterns.
options.compressBooleantrueCompress JAR entries.
options.defaultManifestPropertiesBooleantrueAdd default manifest properties.
options.entrypointString?nullMain entrypoint for the JAR.

Sources JAR

PropertyTypeDefaultDescription
sourcesListing{ "main" }Source sets packaged into the sources JAR.
classifierString?nullJAR classifier, such as sources.
excludesListing{}Exclusion patterns.
includesListing{}Inclusion patterns.

Javadoc JAR

PropertyTypeDefaultDescription
sourcesListing{ "main" }Source sets used for Javadoc.
groupsMapping>{}Package groupings.
linksListing{}External documentation links.
excludesListing{}Packages or paths excluded from docs.
windowTitleString?nullBrowser window title.
docTitleString?nullDocumentation title.

Native Image Artifact

pkl
import "elide:NativeImage.pkl" as NativeImage

artifacts {
  ["native"] = new NativeImage.NativeImage {
    from { "app" }
    entrypoint = "example.Main"
  }
}
PropertyTypeDefaultDescription
fromListing{}Artifacts used as Native Image inputs.
nameString?nullOutput binary or library name.
entrypointString?nullMain class.
type"binary" or "library""binary"Image type.
moduleNameString?nullJPMS module containing the entrypoint.
optionsNativeImageOptionsnew {}Target-specific Native Image options.
options accepts the same fields listed in Native Image.

Static Site

pkl
import "elide:Web.pkl" as Web

artifacts {
  ["site"] = new Web.StaticSite {
    srcs = "site"
    prefix = "/"
  }
}
PropertyTypeDefaultDescription
srcsString?nullStatic site source root.
domainString?nullProduction domain metadata.
previewString?nullPreview domain metadata.
prefixString"/"URL prefix; must end with /.
assetsString"\(prefix)_/assets"Public asset path.
stylesheetsListing{}Stylesheets injected into pages.
scriptsListing{}Scripts injected into pages.
rewriteLinksBooleantrueRewrite Markdown links during rendering.
hosting"workers", "github-pages", or nullnullStatic site host metadata.

Container Image

pkl
import "elide:Container.pkl" as Container

artifacts {
  ["image"] = new Container.ContainerImage {
    image = "example/app"
    from { "native" }
    tags { "latest" }
  }
}
PropertyTypeDefaultDescription
imageString?nullTarget image coordinate.
baseString?nullBase image coordinate.
tagsListing{}Image tags.
output"daemon" or "tarball""daemon"Write to Docker daemon or tarball.
format"oci" or "docker""docker"Image manifest format.
fromListing{}Artifacts included in the image.

Web

pkl
import "elide:Web.pkl" as Web

web {
  css {
    targets {
      new Web.CssTarget {
        browser = "chrome"
        version = "126"
      }
    }
  }
}
PropertyTypeDefaultDescription
cssCssSettingsnew {}CSS build settings.
minifyHtmlBooleantrueMinify rendered HTML.
browsersListing{}Browser support metadata. css.targets wins for CSS.
css:
PropertyTypeDefaultDescription
minifyBooleantrueMinify CSS.
targetsListing{}Browser targets for CSS processing.
CssTarget:
PropertyTypeDefaultDescription
browser"chrome", "firefox", "safari", "edge", "opera", or StringRequiredBrowser name.
versionString?nullBrowser version.

Testing

pkl
import "elide:Jvm.pkl" as Jvm

testing {
  coverage {
    jvm {
      enabled = true
      reports {
        new Jvm.HtmlCoverageReport {}
        new Jvm.XmlCoverageReport {}
      }
    }
  }
}
PropertyTypeDefaultDescription
coverageCoverageSettingsnew {}Coverage settings.
coverage.jvmJvmCoverageSettingsnew {}JVM coverage settings.
coverage.jvm.enabledBooleantrueEnable JVM coverage.
coverage.jvm.reportsListing{}JVM coverage reports.
JVM report classes:
ClassnameDescription
Jvm.HtmlCoverageReport"html"HTML coverage report.
Jvm.XmlCoverageReport"xml"XML coverage report.
Jvm.CsvCoverageReport"csv"CSV coverage report.
Helper functions are also exported from Jvm.pkl: sourceSet(), htmlReport(), xmlReport(), and csvReport().