Distributions
Vary ships in four formats. All include the compiler, bundled JRE, and everything needed to write, run, test, format, and mutation-test Vary code.
| Distribution | Platform | Install guide |
| varyup | Linux x64, Windows x64, macOS (arm64/x64) | varyup |
| Docker image | Any | Docker |
| Linux tar.gz | Linux x64 | Linux |
| macOS tar.gz | macOS arm64, macOS x64 | macOS |
| Windows ZIP | Windows x64 | Windows |
varyup is the recommended way to install and manage toolchains. It is a single binary available from the GitHub Releases page. It downloads Vary toolchains, manages multiple versions side-by-side, and selects the active version globally or per-project.
What ships in the Docker image
The Docker image (ghcr.io/ccollicutt/vary:latest) is built on Eclipse Temurin 25 JRE.
| Component | Path in image | What it is |
| Vary compiler JAR | /opt/vary/vary.jar | Fat JAR containing the compiler, test runner, formatter, mutation engine, and language server |
vary wrapper | /usr/local/bin/vary | Shell script that loads JVM args from conf/ and runs java -jar /opt/vary/vary.jar |
| JVM configuration | /opt/vary/conf/ | JVM argument files (vary.jvmargs, vary.jvmargs.http, vary.jvmargs.repl) |
| Standard library | /opt/vary/stdlib/ | Built-in Vary modules (collections, json, math, text, fs, http, etc.) |
| Examples | /opt/vary/examples/ | Sample programs and test files |
| VS Code extension | /opt/vary/vscode-vary/ | Extension source with TextMate grammar and LSP client |
| LLM skill | /opt/vary/llm-skill/ | Language reference files for AI coding assistants |
| Eclipse Temurin 25 JRE | system | Java runtime that executes everything |
What ships in the Linux tar.gz
| Component | Path | What it is |
vary | vary | Shell launcher that loads JVM args from conf/ and runs vary.jar |
| Vary compiler JAR | vary.jar | Fat JAR (same as Docker image) |
| Eclipse Temurin 25 JRE | jre/ | Bundled Java runtime |
| JVM configuration | conf/ | JVM argument files |
| Standard library | stdlib/ | Built-in Vary modules |
| Examples | examples/ | Sample programs and test files |
| VS Code extension | vscode-vary/ | VSIX extension file |
| LLM skill | llm-skill/ | Language reference files for AI coding assistants |
| Licence | LICENSE.txt | Compiler licence |
| Third-party notices | THIRD_PARTY_NOTICES.txt | Temurin JRE licence |
What ships in the Windows ZIP
| Component | Path | What it is |
vary.exe | vary.exe | Native Go launcher that loads JVM args from conf\ and runs vary.jar |
| Vary compiler JAR | vary.jar | Fat JAR (same as Docker image) |
| Eclipse Temurin 25 JRE | jre\ | Bundled Java runtime |
| JVM configuration | conf\ | JVM argument files |
| Standard library | stdlib\ | Built-in Vary modules |
| Examples | examples\ | Sample programs and test files |
| VS Code extension | vscode-vary\ | VSIX extension file |
| LLM skill | llm-skill\ | Language reference files for AI coding assistants |
| Licence | LICENSE.txt | Compiler licence |
| Third-party notices | THIRD_PARTY_NOTICES.txt | Temurin JRE licence |
Vary licensing
| Component | Licence | Details |
| Compiler, CLI, runtime | Proprietary (free to use) | Free for personal, educational, and commercial use. Cannot be redistributed or reverse engineered. Code you write with it is yours. Licence terms may change between releases. |
| Standard library | MIT | /opt/vary/stdlib/LICENSE (Docker image) |
| Examples | MIT | /opt/vary/examples/LICENSE (Docker image) |
| LLM skill | MIT | /opt/vary/llm-skill/LICENSE (Docker image) |
| VS Code extension | MIT | /opt/vary/vscode-vary/LICENSE (Docker image) |
| varyup toolchain manager | MIT | varyup/LICENSE in the source repository |
The full licence for the compiler is at /opt/vary/LICENSE inside the Docker image, LICENSE.txt in the tar.gz/ZIP, and in the root of the project repository.
Third-party licences
The compiler is built on open-source libraries. Everything bundled in the distributions and its licence is listed below.
Java runtime
| Component | Licence | Notes |
| Eclipse Temurin 25 | GPL 2.0 with Classpath Exception | The Classpath Exception means applications running on the JVM (including Vary programs) are not subject to GPL requirements. This is the same licence used by OpenJDK. |
Compiler dependencies (inside the fat JAR)
These are bundled into vary.jar via the Shadow plugin.
| Library | Version | Licence | What it does |
| Kotlin | 2.3.0 | Apache 2.0 | Language the compiler is written in |
| ASM | 9.8 | BSD 3-Clause | JVM bytecode generation and manipulation |
| Clikt | 4.2.1 | Apache 2.0 | Command-line argument parsing |
| LSP4J | 0.21.1 | Eclipse Public Licence 2.0 | Language Server Protocol implementation |
| Kotlin Coroutines | 1.7.3 | Apache 2.0 | Async support for the language server |
| JLine | 3.25.1 | BSD 3-Clause | Terminal handling and REPL support |
| Jackson | 2.17.2 | Apache 2.0 | JSON processing |
| SQLite JDBC | 3.45.1.0 | Apache 2.0 | SQLite database driver (bundled native binaries) |
| SnakeYAML | 2.2 | Apache 2.0 | YAML configuration parsing |
| Flexmark | 0.64.8 | BSD 2-Clause | Markdown processing |
| Pebble | 3.2.2 | BSD 3-Clause | Template engine |
| PMD CPD | 7.7.0 | BSD 4-Clause | Copy-paste detection for code duplication analysis |
Quarkus framework (inside the fat JAR)
Used when running HTTP services via expose ... via http. All Quarkus components are Apache 2.0 licensed.
| Library | Version | What it does |
| Quarkus Core | 3.31.1 | Application framework and lifecycle |
| Quarkus Bootstrap | 3.31.1 | Application bootstrap and class loading |
| Quarkus REST | 3.31.1 | HTTP request handling |
| Quarkus REST Jackson | 3.31.1 | JSON serialization for REST endpoints |
| Quarkus SmallRye OpenAPI | 3.31.1 | OpenAPI spec generation |
| Quarkus Swagger UI | 3.31.1 | Interactive API documentation |
| Quarkus Vert.x HTTP | 3.31.1 | Underlying HTTP server |
| Quarkus Arc | 3.31.1 | Dependency injection |
| Jakarta WS RS API | 3.1.0 | REST endpoint annotations (EPL 2.0) |
| Jakarta CDI API | 4.0.1 | Dependency injection API (Apache 2.0) |
varyup dependencies
varyup is a standalone Go binary. These libraries are compiled into the varyup executable.
| Library | Version | Licence | What it does |
| Cobra | 1.8.1 | Apache 2.0 | Command-line interface framework |
| go-toml | 2.2.3 | MIT | TOML configuration parsing |
| x/sys | 0.43.0 | BSD 3-Clause | File locking (Unix and Windows) |
Licence summary
| Licence type | Components |
| Apache 2.0 | Kotlin, Clikt, Coroutines, Jackson, SQLite JDBC, SnakeYAML, Quarkus (all), Jakarta CDI, Cobra |
| MIT | go-toml, varyup, VS Code extension, stdlib, examples, LLM skill |
| BSD 3-Clause | ASM, JLine, Pebble, x/sys |
| BSD 4-Clause | PMD CPD |
| BSD 2-Clause | Flexmark |
| Eclipse Public Licence 2.0 | LSP4J, Jakarta WS RS |
| GPL 2.0 + Classpath Exception | Eclipse Temurin JRE |
The GPL 2.0 + Classpath Exception on the JRE does not affect code that runs on the JVM. This is the standard licence for OpenJDK and is used by virtually every Java application in production.