nem

command module
v0.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 28, 2026 License: MPL-2.0 Imports: 1 Imported by: 0

README

nem logo

nem

Reproducible development environments for your projects.

CI Latest release Go version

Documentation   •   Getting started   •   Guides   •   Reference

[!NOTE] nem is in active development. Expect breaking changes and rough edges — feedback and contributions are very welcome!

nem gives each project a reproducible set of developer tools and environment variables. Declare what you need in a nem.ver file — nem fetches, installs, and puts it on your PATH, identically for every teammate, agent, and CI pipeline.

  • Reproducible environments — commit a nem.ver and everyone gets the same tools and variables, on demand, per directory.
  • Least privilege by design — runs without root; downloads are checksum-verified and source builds run sandboxed.
  • Air-gapped friendly — distribute tool catalogs and packages through any OCI registry, audited like any other artifact.

Installation

Install nem using the provided installation script:

curl -fsSL https://raw.githubusercontent.com/vi-dev/nem/main/install.sh | sh

By default, nem is installed to ~/.local/bin. Add this directory to your PATH if it isn't already:

export PATH="$HOME/.local/bin:$PATH"

You can customize the installation directory and version by setting the NEM_INSTALL_DIR and NEM_VERSION environment variables:

# Install to a custom directory
curl -fsSL https://raw.githubusercontent.com/vi-dev/nem/main/install.sh | NEM_INSTALL_DIR=/usr/local/bin sh

# Install a specific version
curl -fsSL https://raw.githubusercontent.com/vi-dev/nem/main/install.sh | NEM_VERSION=v1.2.3 sh

Prebuilt binaries for Linux and macOS are also attached to every GitHub release.

[!NOTE] By default, nem uses the public vi-dev/nem-catalog package catalog (the official catalog) with no extra setup. Set NEM_USE_OFFICIAL_CATALOG=0 (or use-official-catalog: false in ~/.nem/config.yaml) to disable, or run nem catalog add to configure your own.

[!NOTE] Source-build packages run their build steps in a sandbox by default. Set NEM_SANDBOX=0 (or sandbox: false in ~/.nem/config.yaml) to disable it — builds then run with unrestricted network and filesystem access.

Quick start

nem activate
exec $SHELL
cd ~/code/my-project
nem use kubectl@v1.34.1
kubectl version --client

Activating nem also enables tab completion for the nem command in your shell (bash, zsh, fish). If you don't want to install the shell integration, you can source completions directly with eval "$(nem completion zsh)" (or the equivalent for your shell).

Documentation

Full documentation lives at vi-dev.org/nem:

  • Getting started — install, set up your first environment, and learn how nem works.
  • Guides — shell integration, managing environments, catalogs, sandboxed builds, containers, and troubleshooting.
  • Authoring packages — write, validate, and publish your own catalog.
  • Reference — CLI commands, configuration, the nem.ver format, and the pkg.yaml schema.

Container image

Signed multi-arch images are published to ghcr.io/vi-dev/nem on every release:

docker run --rm --privileged ghcr.io/vi-dev/nem version

See the container image guide for information on tag schemes, usages, provenance verification, and more.

Contributing

Contributions are welcome. The developer docs explain how nem is built:

Please open an issue to discuss substantial changes before sending a pull request.

Security

See SECURITY.md.

License

MPL-2.0.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
internal
app
env
oci
pkg
report
Package report holds reporting primitives shared by the pkg and catalog layers without creating an import cycle between them.
Package report holds reporting primitives shared by the pkg and catalog layers without creating an import cycle between them.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL