Mojo UpDocs
Nodes

Install a node

Install mojoup-node on Linux, macOS or Windows with one command, and what the machine needs first.

mojoup-node installs with one command. The install script downloads the package for your operating system and processor, checks it, puts mojoup-node on your PATH, and on a first install starts the setup wizard. It needs no administrator rights.

What the machine needs

Supported
Linuxx64 and arm64
macOSIntel (x64) and Apple silicon (arm64)
Windows64-bit (x64)

Beyond that, a node needs:

  • Git, because every repository a node serves is a git repository and each agent works in its own worktree.
  • At least one agent tool installed and signed in as the user the node runs as: for example Claude Code, Codex or GitHub Copilot CLI. A tool that is itself an npm package (Claude Code is installed with npm i -g @anthropic-ai/claude-code) needs Node.js on the machine; the node does not provide one.
  • Disk space for agent worktrees. mojoup-node doctor warns when the state directory has less than 5 GB free and fails below 0.5 GB.
  • Outbound HTTPS to your organisation's platform, or to Mojo Up AI Cloud. No inbound port is needed unless the node is a team hub. See Configuration, files and ports.

Your install source

The install scripts read from an install source: a web address or a folder holding the node's packages (node-latest.json, the archives, SHA256SUMS and the scripts install-node.sh and install-node.ps1). Ask your administrator or Mojo Up for the address. The commands below write it as <source>.

Install

Terminal
curl -fsSL <source>/install-node.sh | sh

From a folder (a share or a synced directory):

Terminal
MOJOUP_NODE_SOURCE=/srv/mojoup/node sh /srv/mojoup/node/install-node.sh

The node is installed to ~/.local/share/mojoup/node and linked from ~/.local/bin/mojoup-node. Run as root, it goes to /opt/mojoup/node and /usr/local/bin. Make sure ~/.local/bin is on your PATH.

On a first install in a terminal, the script hands over to mojoup-node setup. Carry on with Join a node, or follow the whole path in the Add a node tutorial.

What the script checks

Every install and update is checked before it is used:

  1. The archive must be listed in SHA256SUMS with the digest the index gives, and must match it.
  2. Every unpacked file must match the package's manifest. On Windows, the executable's signature must be valid and Mojo Up's.
  3. The new mojoup-node --version must run and report the right version.
  4. Only then does current switch to the new version. The version before it is kept, so a node still running from it is never broken.

Running the script again is safe. It does nothing when the newest version is already installed.

Install options

Linux and macOSWindowsWhat it does
MOJOUP_NODE_SOURCE-SourceThe URL or folder holding node-latest.json.
MOJOUP_NODE_CHANNEL-Channelstable (default) or preview. A preview build is refused on the stable channel.
MOJOUP_NODE_ROOT-RootThe install folder.
MOJOUP_NODE_BINWhere the mojoup-node link goes.
-NoPathLeave PATH alone.
MOJOUP_NODE_FORCE=1-ForceReinstall the current version.
MOJOUP_NODE_NO_SETUP=1-NoSetupDo not start the setup wizard afterwards.
-AllowUnsignedAccept an executable that is not signed by Mojo Up. Only for your own unsigned builds.

For example, to follow the preview channel on Linux:

Terminal
curl -fsSL <source>/install-node.sh | MOJOUP_NODE_CHANNEL=preview sh

In a container or on a machine without systemd

Use the Linux install inside the container. Where there is no service manager, mojoup-node service install says so and starts the node as a background daemon instead; you can also run mojoup-node run as the container's main process, which stops cleanly on SIGTERM. Keep the state directory on a volume so the node keeps its identity when the container is replaced, and join it with a join key so there is no code to approve.

Updating

The node updates from the same source it was installed from:

Terminal
mojoup-node update --check   # is there a newer version?
mojoup-node update           # install it

The update stops the node, tries the new version, and starts the node again on whichever version worked. If the new version does not start within two minutes, the node stays on the old one and its settings are put back. By default a running node checks for updates ten minutes after it starts and every six hours, and records what it found (node.autoUpdate: notify); mojoup-node status then says an update is available. Set node.autoUpdate to install to install updates automatically, or off to stop checking.

Uninstall

  1. If the node runs as a service, remove it: mojoup-node service uninstall.
  2. Delete the install folder (see above) and the mojoup-node link, or on Windows remove the folder's current entry from your user PATH.
  3. To remove the node's identity and data too, delete its state directory (~/.mojoup/node by default). Do this only if you will not use the node again: a node that joins again is a new node and needs a new approval.

On this page