nuts

September 13, 2026 · View on GitHub

     __        __
  /\ \ \ _  __/ /______
 /  \/ / / / / __/ ___/
/ /\  / /_/ / /_(__  )   latest version 1.0.0.0 
\_\ \/\__,_/\__/____/    LTS version 0.8.9.0 

The package manager Java never had. Website: https://thevpc.github.io/nuts

Download License


Nuts in action

What is Nuts?

Nuts is a package manager for Java applications that focuses on the application lifecycle and isolated deployments.

Nuts manages dependencies at runtime, not at build time, by reusing Maven descriptors directly and solving the long-standing fat-jars problem efficiently:

  • It downloads only the JARs and dependencies that are actually needed on the target machine
  • Similarly, for native binaries, it retains only assets relevant for the target platform.

Nuts does not require any custom descriptors or build tools, does not change classloading behavior, it just solves dependency tree, builds the classpath and runs the application.

What makes Nuts unique is that it shares the same workspace across all applications, enables installing multiple versions of the same app, and automatically provisions the required platform binaries (JDK). A simple nuts install myapp is all you need to install the latest version of myapp and all its dependencies—including the required JDK—while optimizing network and disk usage.

Think of Nuts as uv (or npx/pipx), but for the Java ecosystem: combining runtime dependency resolution, JDK auto-provisioning, workspace isolation, and instant app execution.


Installation

Nuts can be installed via enterprise packages (RPM/DEB), standalone binaries, or quick automated scripts.

Visit the official Nuts Download Page for:

  • RPM & DEB Packages (RedHat / SUSE / Debian / Ubuntu)
  • GUI & Console Installers
  • Offline Binaries & Standalone Executable JARs (nuts-app.jar for zero-install execution)
  • Version Archives & Release LTS Builds

Quick Standalone Execution (No Install Required):

Download nuts-app-1.0.0.jar from the Download Page and run:

java -jar nuts-app-1.0.0.jar -Zy

⚡ Quick Script Installation (Developer / Evaluation)

🐧 Linux / 🍏 macOS

# Latest Release (Recommended for Developers)
curl -s https://thevpc.net/nuts/install-latest.sh | bash

# Stable Release (Production Systems)
curl -s https://thevpc.net/nuts/install-stable.sh | bash

🪟 Windows (PowerShell)

# Latest Release
powershell -Command "irm https://thevpc.net/nuts/install-latest.ps1 | iex"

# Stable Release
powershell -Command "irm https://thevpc.net/nuts/install-stable.ps1 | iex"

Restart your terminal, then verify:

nuts --version

Update existing installation

nuts update

Key Features

  • Works with existing Maven JARs — zero repackaging
  • Supports multiple repositories simultaneously, including Maven-central and Maven-compatible repositories
  • Full application lifecycle — Install, run, update, and uninstall applications — with multiple versions coexisting in the same workspace
  • Filesystem isolation — Everything is isolated in a workspace compliant to the system standards (XDG for Linux, etc...)
  • JDK provisioning — resolve required java version for each application and automatic provisioning
  • Not just Java — can manage any application, as long as a compliant descriptor is provided

Quick Examples

CommandWhat it does
nuts org.apache.netbeans:netbeansinstall and run NetBeans IDE
nuts org.springframework.boot:spring-boot-cli init --dependencies=web my-appscaffold a Spring Boot project
nuts org.jd:jd-guidecompile a JAR
nuts uninstall org.jd:jd-gui#1.6.6uninstall version jd-gui version 1.6.6
nuts update nshupdate to the newest version of java bash compatible shell
nuts org.postgresql:postgresql-server initdb -D ~/pgdatainitialize a portable PostgreSQL instance (not a java app)
nuts --at=ssh://me@myserver install myapp:2.0deploy to remote server
nuts bundle nshcreate offline deployment bundle (air-gapped deployment) of nsh with all of its dependencies
nuts search --installed --jsonlist installed apps as JSON
nuts net.thevpc.nsh:nsh#1.0.0run a specific installed version of nsh
nuts nsh -c "cp http://host/a.pdf ssh://user@server/b.pdf"cross-protocol file copy

→ See the full showcase for more examples including databases, IDEs, security tools, and games.


How Nuts relates to other tools

ToolWhat it doesRelationship to Nuts
Maven / GradleCompile-time dependency resolutionNuts reuses their descriptors at runtime
uv / uvxPython runtime provisioning, package management & instant tool executionNuts provides the equivalent all-in-one experience for the JVM (JDK auto-provisioning + Maven runtime resolution + instant app execution)
jbangRun Java scripts and JARsNuts adds workspaces, platforms, lifecycle, deployment
sdkman / jenvManage JDK versionsNuts subsumes this as part of workspace platform management
DockerIsolated application environmentsNuts is lighter — no daemon, no root, no image layers
apt / brew / snap / flatpakSystem or per-app package managementNuts is per-workspace with dependencies shared across apps in the same workspace (no per-app bundling), no root required, and portable across Linux, Windows, and macOS
AnsibleInfrastructure and configuration managementComplementary — Nuts handles the Java app lifecycle layer
jgoLaunch Java apps from Maven coordinates (Python-based)Similar launch model; Nuts is Java-native with workspaces, lifecycle, and deployment

Nuts fills the space between "compile-time dependency management" and "production deployment" that the Java ecosystem has never had a clean answer for.


Contribute

Nuts is open-source and actively developed. Contributions welcome.

Contribute on GitHub
Official documentation


License

Licensed under the GNU Lesser General Public License v3.