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.
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 |
| Via server JAR | /opt/vary/via.jar | Fat JAR for the Via self-hosted application server (operator binary) |
via wrapper | /usr/local/bin/via | Operator launcher that runs the Via server 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 |
| 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) |
via | via | Operator launcher for the Via self-hosted application server |
| Via server JAR | via.jar | Fat JAR for the Via server |
| 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 |
| 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 |
The Via self-hosted application server is a Linux-only operator tool, so it ships only in the Docker image and Linux tar.gz - not in the Windows ZIP or macOS tar.gz.
| 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.
The compiler is built on open-source libraries. Everything bundled in the distributions and its licence is listed below.
| 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. |
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.6 | 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.22.0 | BSD 4-Clause | Copy-paste detection for code duplication analysis |
Used when running HTTP services via expose ... via http and the
declarative api/service DSL. The Vary HTTP runtime owns route metadata,
authentication, CSRF, sessions, and API token verification; application
code never imports these libraries directly.
| Library | Version | Licence | What it does |
|---|---|---|---|
| Javalin | 7.2.0 | Apache 2.0 | Embedded HTTP transport for generated Vary route metadata |
| pac4j | 6.4.1 | Apache 2.0 | Authentication and authorization core |
| pac4j-oidc | 6.4.1 | Apache 2.0 | OIDC Authorization Code + PKCE client |
| Nimbus JOSE/JWT | 10.8 | Apache 2.0 | JWT/JWS/JWK parsing, signing, and verification |
| OAuth2/OIDC SDK | 11.37 | Apache 2.0 | OIDC discovery, token requests, and userinfo |
varyup is a standalone Go binary. These libraries are compiled into the varyup executable.
| Library | Version | Licence | What it does |
|---|---|---|---|
| Cobra | 1.10.2 | Apache 2.0 | Command-line interface framework |
| go-toml | 2.2.4 | MIT | TOML configuration parsing |
| sigstore-go | 1.1.4 | Apache 2.0 | Sigstore signature verification for downloaded toolchains |
| x/sys | 0.43.0 | BSD 3-Clause | File locking (Unix and Windows) |
| Licence type | Components |
|---|---|
| Apache 2.0 | Kotlin, Clikt, Coroutines, Jackson, SQLite JDBC, SnakeYAML, Javalin, pac4j, pac4j-oidc, Nimbus JOSE/JWT, OAuth2/OIDC SDK, Cobra, sigstore-go |
| 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 |
| 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.