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 | |
|---|---|
| Linux | x64 and arm64 |
| macOS | Intel (x64) and Apple silicon (arm64) |
| Windows | 64-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 doctorwarns 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
curl -fsSL <source>/install-node.sh | shFrom a folder (a share or a synced directory):
MOJOUP_NODE_SOURCE=/srv/mojoup/node sh /srv/mojoup/node/install-node.shThe 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:
- The archive must be listed in
SHA256SUMSwith the digest the index gives, and must match it. - Every unpacked file must match the package's manifest. On Windows, the executable's signature must be valid and Mojo Up's.
- The new
mojoup-node --versionmust run and report the right version. - Only then does
currentswitch 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 macOS | Windows | What it does |
|---|---|---|
MOJOUP_NODE_SOURCE | -Source | The URL or folder holding node-latest.json. |
MOJOUP_NODE_CHANNEL | -Channel | stable (default) or preview. A preview build is refused on the stable channel. |
MOJOUP_NODE_ROOT | -Root | The install folder. |
MOJOUP_NODE_BIN | Where the mojoup-node link goes. | |
-NoPath | Leave PATH alone. | |
MOJOUP_NODE_FORCE=1 | -Force | Reinstall the current version. |
MOJOUP_NODE_NO_SETUP=1 | -NoSetup | Do not start the setup wizard afterwards. |
-AllowUnsigned | Accept an executable that is not signed by Mojo Up. Only for your own unsigned builds. |
For example, to follow the preview channel on Linux:
curl -fsSL <source>/install-node.sh | MOJOUP_NODE_CHANNEL=preview shIn 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:
mojoup-node update --check # is there a newer version?
mojoup-node update # install itThe 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
- If the node runs as a service, remove it:
mojoup-node service uninstall. - Delete the install folder (see above) and the
mojoup-nodelink, or on Windows remove the folder'scurrententry from your userPATH. - To remove the node's identity and data too, delete its state directory (
~/.mojoup/nodeby 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.