Settings

jup uses environment variables, project declarations, jup.lock, and a small supported part of .npmrc. It has no general config file or plugin system.

Prefer JUP_* names. Only settings that existed in Corepack also accept their matching COREPACK_* name. JUP_* wins when both are present, even when its value is empty.

#Project behavior

VariableUseful valuesPurposeProject env?
JUP_ENABLE_PROJECT_SPEC0Ignore project pins and version files.Yes
JUP_ENABLE_STRICT0Let a different package manager use its fallback.Yes
JUP_ENABLE_AUTO_PIN1Add a package-manager pin when a project has none.Yes
JUP_DEFAULT_TO_LATEST0Use jup's built-in default instead of querying latest.Yes
JUP_DEFAULT_TTLhours, default 24How long jup keeps a remembered global default before re-checking it. 0 never re-checks.Yes
JUP_ENABLE_PRERELEASES1Include prereleases in implicit selection.Yes
JUP_MINIMUM_RELEASE_AGEhoursExclude younger implicit choices.Yes
JUP_FROZEN_LOCKFILE1Refuse creation, refresh, or removal of jup.lock entries.Yes
JUP_ENABLE_PM_LOCKFILE0Ignore the package manager's own lockfile: the version it recorded there, and the major its lockfileVersion implies for a project with no spec.Yes
JUP_SPEC_FILEpathRead project pin fields from another file.No

An exact request is not filtered by minimum release age, and neither is jup self-upgrade, which fetches jup itself rather than a package manager. Invalid or negative age values are errors.

A global default that jup chose for you is re-checked once a day, and the version you had is kept if the check fails or you are offline. A default you set yourself with jup cache install -g is never re-checked; run jup cache install -g <name>@latest to move it. jup info marks each recorded default (pinned) or (expired).

#Network and registry

VariableUseful valuesPurposeProject env?
JUP_ENABLE_NETWORK0Refuse jup's network requests.Yes
JUP_NPM_REGISTRYURLRegistry for the built-in table.Yes
JUP_REGISTRY_<NAME>URLRegistry/mirror for one tool.Yes
JUP_NETWORK_TIMEOUTmillisecondsConnection and idle timeout.Yes
JUP_NETWORK_RETRIESintegerGET retry attempts, capped at 10.Yes
JUP_NPM_TOKENsecretBearer authentication.No
JUP_NPM_USERNAMEstringBasic-auth user.No
JUP_NPM_PASSWORDsecretBasic-auth password.No
JUP_CAFILEpathAdd a PEM CA bundle.No
JUP_STRICT_SSL0Disable TLS checks and warn.No

The default timeout is 30 seconds. Retry 0 disables retries. Standard proxy variables are also supported; see Registries.

#Verification and downloads

VariableUseful valuesPurposeProject env?
JUP_REQUIRE_SIGNATURES1Refuse registry-integrity fallback.Yes
JUP_ALLOW_UNVERIFIED1Allow an otherwise unverified artifact and warn.No
JUP_INTEGRITY_KEYSJSON, 0, emptyReplace or disable trusted registry keys.No
JUP_ENABLE_UNSAFE_CUSTOM_URLS1Allow a known tool to use a custom URL.No

Every artifact download prints ↓ Downloading <name> <version> from <url> to stderr, through the jup command and through a tool shim alike. It is a notice, not a question: jup never waits for an answer and never reads stdin, so a run behaves the same in a terminal, in a pipeline and in CI. There is no setting to turn it off, and a cached run downloads nothing and prints nothing.

#Paths, shims, and execution

VariablePurposeProject env?
JUP_HOMERoot of the store and managed state.No
JUP_ENV_FILEChoose an env file path, or 0 to disable env files.No
JUP_SHIM_DIRECTORYDefault directory for enable and disable.No
JUP_NODE_EXECPATHNode.js used when a JavaScript entry must be spawned.No
JUP_HOST_RUNTIMEDurable runtime used when pinning shim interpreters.No
JUP_QUIET_ADVISORIES1 hides optional advisory lines.No

Default JUP_HOME is under $XDG_CACHE_HOME/jup, %LOCALAPPDATA%\jup on Windows, or the platform home cache directory.

JUP_QUIET_ADVISORIES does not hide errors, download notices, auto-pin notices, validation warnings, or Yarn Switch notices.

#Project env files

jup searches for the nearest .jup.env. If it is absent in a directory, jup tries .corepack.env there. The nearest file wins, and the search stops at the project boundary.

Example:

JUP_ENABLE_STRICT=0
JUP_NETWORK_TIMEOUT=60000
JUP_REQUIRE_SIGNATURES=1

Only JUP_ and COREPACK_ keys are considered. A real environment value wins. Protected variables are ignored; security-sensitive attempts print a warning. JUP_ENV_FILE=0 disables this feature. When you set an explicit env-file path, there is no fallback filename.

#Corepack-compatible names

These settings also accept COREPACK_ in place of JUP_:

  • ENABLE_PROJECT_SPEC, ENABLE_STRICT, ENABLE_AUTO_PIN;
  • DEFAULT_TO_LATEST, ENABLE_NETWORK;
  • ENABLE_UNSAFE_CUSTOM_URLS;
  • ENV_FILE, HOME;
  • NPM_REGISTRY, NPM_TOKEN, NPM_USERNAME, NPM_PASSWORD;
  • INTEGRITY_KEYS.

New jup-only settings do not accept a made-up COREPACK_ form.

#Variables jup sets

jup sets both old and new spellings for:

  • JUP_ROOT / COREPACK_ROOT — jup's installation root;
  • JUP_MIGRATE_FROM / COREPACK_MIGRATE_FROM — the previous pin during use/up, or unknown.

For native child chains it can also forward JUP_HOST_RUNTIME.

#Ambient variables

jup also reads normal host variables for proxies, home/cache locations, PATH, PATHEXT, shell hints, npm's global prefix, CI detection, debug logging, and color. Set DEBUG to a value containing jup or corepack for diagnostics. Use NO_COLOR or FORCE_COLOR to control jup's own styling.

Run jup info to inspect effective settings without making a request.

jup  Pin and run the right package manager or runtime for every project.