Amper is dead. Long live the Kotlin Toolchain. JetBrains shipped v0.11 today, and the amper and amper.bat wrappers you might have committed to your repo are now replaced by kotlin and kotlin.bat. The project graduated straight to Alpha, meaning JetBrains is publicly committed to supporting this as the unified entry point for all of Kotlin.
One CLI to rule them all: kotlin does init, build, test, publish
The headline feature is the single kotlin command. No more deciding which build tool to use before writing your first .kt. You create a project with kotlin init, build with kotlin build, run tests with kotlin test, and now publish libraries with kotlin publish. Global installation via SDKMAN! (sdk install kotlintoolchain) means you can call kotlin from any directory. The CLI auto-discovers your project's wrapper and runs the matching version, so a global install doesn't force a version lock across projects.
Maven Central publishing: one command, zero external tools
Publishing a JVM library to Maven Central has historically been a grind: sources JAR, javadoc JAR, PGP signatures, POM metadata, checksums. The Kotlin Toolchain handles all of that internally. Configure mavenCentral: enabled and signArtifacts: true in your module.yaml, provide a Maven Central user token and a PGP signing key, then run kotlin publish mavenCentral. The toolchain builds, signs, zips a deployment bundle, uploads it, and awaits validation. You can even set publishingMode: auto to skip manual verification and fully automate the release. Multiplatform library publishing isn't ready yet - only JVM libraries for now - but JetBrains says it's working on it.
Plugin API matures: custom checks, custom commands, generated files
For anyone building local plugins, v0.11 introduces three new plugin.yaml sections. checks: lets you register a custom check (e.g., a linter) that runs under the kotlin check command. commands: exposes a task as a public entry point via kotlin do <command>. And generated: replaces the old markOutputAs property, allowing you to declare generated sources, resources, and even cinterop definition files in a structured way that both humans and AI agents can parse.
Cinterop, smarter run, and IDE polish
Place .def files in a cinterop folder, and the toolchain generates native bindings - the IDE even does this during sync. The kotlin run command now auto-selects the runnable module on the host platform (e.g., windows-cli on Windows) and picks the right architecture (ARM64 vs. x86-64) when only one target is suitable. Library sources download as a background post-sync activity so you can start coding immediately. Dependency resolution is now per-module, matching CLI behavior exactly.
Default versions have been bumped: Kotlin 2.3.21, Compose Hot Reload 1.1.1, Ktor 3.4.3, SpringBoot 4.0.6. The lib product type is renamed to kmp/lib; the old lib name is deprecated and will be removed.
JetBrains is betting that a single kotlin command - no Gradle plugin wiring, no SBT incantations - will lower the barrier for newcomers and simplify CI pipelines. The ability to publish to Maven Central without installing GPG or juggling Gradle plugins is the kind of quality-of-life change that makes you wonder why we ever put up with the old way. Try it with sdk install kotlintoolchain or grab the wrapper from the getting-started guide. The CLI will even update itself with kotlin update.
Source: Kotlin Toolchain 0.11: The Next Step for Amper
Domain: blog.jetbrains.com
Comments load interactively on the live page.