Reference·InstallIndexClose
Install
One line for Linux, macOS and Windows. What it prints, what it needs, where files land, and the mistakes people make.
One line
Linux x86_64. glibc 2.38 or newer.
Apple Silicon, macOS 15 or newer, with Homebrew openssl@3 and zstd.
Windows x86_64, in PowerShell.
curl -fsSL https://nodecode.ai/install.sh | sh
It which release is current, , , beside any older version, , and .
irm https://nodecode.ai/install.ps1 | iex
It , , beside any older version, and .
Open a new shellterminal. Then:
nodecode --version
nodecode 0.0.1+8490b4803
nodecode 0.0.1+dc14c36f5
Run nodecode to start. Next: Quickstart.
Passing a flag straight to sh
sh takes it as its own option and stops: sh: 0: Illegal option --. Nothing installs.
Instead: Hand it to the installer: curl -fsSL https://nodecode.ai/install.sh | sh -s -- --no-modify-path
Setting a variable in front of curl
It reaches curl, not the installer. The run still reads the channel.
Instead: Put it in front of sh: curl -fsSL https://nodecode.ai/install.sh | NODECODE_VERSION=8490b4803 sh
Running it with sudo
It installs into root's home, /root/.local/share/nodecode. Your own shell says nodecode: command not found.
Instead: Run it as yourself. It needs no root.
Installing again after nodecode: command not found
The shell you installed from keeps the PATH it started with. A second install changes nothing.
Instead: Open a new shell. If the run ended with add … to your PATH, run the echo line it printed first.
Pasting the line into Command Prompt
irm and iex are PowerShell. cmd answers 'irm' is not recognized as an internal or external command.
Instead: Open PowerShell and paste it there.
Running nodecode in a terminal opened before the install
The installer adds it to your user PATH. A terminal that was already open keeps the old one.
Instead: Open a new terminal.
Requirements
| Needs | Without it | It prints |
|---|---|---|
| x86_64 | Stops | no Linux build for aarch64 yet |
| glibc 2.38 or newer | Stops | glibc 2.35 is too old |
curl or wget | Stops | need curl or wget to download |
tar | Stops | need tar to unpack |
libsqlite3.so.0, libssl.so.3, libcrypto.so.3 | Warns | WARNING: not found: libsqlite3.so.0 |
| A CA bundle | Warns | WARNING: no CA bundle found |
git | Warns | WARNING: git is not installed |
| Needs | Without it | It prints |
|---|---|---|
| Apple Silicon | Stops | no macOS build for Intel yet |
| macOS 15 or newer | Stops | nodecode needs 15 (Sequoia) or newer |
Homebrew openssl@3 and zstd | Stops | nodecode needs Homebrew's openssl@3 zstd |
curl or wget, and tar | Stops | need curl or wget to download |
A CA bundle at /opt/homebrew/etc/openssl@3/cert.pem | Warns | WARNING: no CA bundle at … |
git | Warns | WARNING: git is not installed |
| Needs | Without it | It prints |
|---|---|---|
| 64-bit Windows | Stops | nodecode needs 64-bit Windows |
| An AMD64 processor | Stops | nodecode ships for x86-64 Windows only today |
| Git for Windows | Warns | git is not on PATH |
No flag changes a stop. A warning lets the install go on.
Hunting for a flag past glibc 2.35 is too old
Ubuntu 22.04 and Debian 12 fail. No flag changes this.
Instead: Move to Ubuntu 24.04+, Debian 13+, Fedora 39+ or Arch.
Going on past WARNING: not found: libsqlite3.so.0
The install links the new build, then the build fails its own check: the executable did not answer. nodecode now points at a build that cannot start.
Instead: Install sqlite3 and OpenSSL 3 (sudo apt install libsqlite3-0 on Ubuntu), then run the installer again.
Going on past WARNING: no CA bundle found
Setup's provider list comes up empty. No error shows.
Instead: Install ca-certificates, then run nodecode again.
Installing openssl@3 alone
The build also opens Homebrew's zstd at every start. Without it, it does not answer at all.
Instead: brew install openssl@3 zstd, then run the installer again.
Going on past WARNING: no CA bundle at …
Setup's provider list comes up empty. No error shows.
Instead: brew reinstall ca-certificates.
Skipping Git for Windows
Shell commands run through its sh.exe. Without it they fail with git is not on PATH.
Instead: winget install --id Git.Git -e --source winget, then open a new terminal.
Going on past the git warning
Nodecode runs, but the layer, memory and checkpoint history are not committed.
Instead: Install git. xcode-select --install puts it on a Mac.
Where files land
The versions.
src/. They stay together.8490b4803/, the version in use.<newer>/ now. Nothing else moved.NODECODE_BASE_URL was set at install.current/nodecode.The versions.
src/. They stay together.dc14c36f5/, the version in use.<newer>/ now. Nothing else moved.NODECODE_BASE_URL was set at install.current/nodecode.src\.8490b4803\, the version in use. Your user PATH holds current.<newer>\ now. Your PATH did not change.NODECODE_BASE_URL was set at install.Your data lives in the home, ~/.nodecode/%USERPROFILE%\.nodecode\. See Files.
Waiting for the installer to edit your profile
It never writes to ~/.profile~/.zprofile. It prints the line to add and stops there.
Instead: Run the echo line it printed, then open a new shell.
Keeping an older nodecode first on PATH
You keep running the old build. The installer warns: 'nodecode' on your PATH is NOT the build just installed.
Instead: Remove the other one, or put ~/.local/bin ahead of it in PATH.
Copying the executable somewhere else
It reads its own src/ beside it. The two stay together.
Instead: Link it instead, as the installer does: ln -s ~/.local/share/nodecode/current/nodecode ~/bin/nodecode
Exporting NODECODE_HOME for Nodecode, then installing
install.sh reads the same name as its install folder. The versions land inside your home.
Instead: Leave it out of the install line: curl -fsSL https://nodecode.ai/install.sh | env -u NODECODE_HOME sh
Deleting an old version folder while Nodecode runs
A running Nodecode runs from the folder it started in.
Instead: Close it first. current already points at the new one.
Flags and variables
Flags go after sh -s --. Variables go in front of sh, not curl.
curl -fsSL https://nodecode.ai/install.sh | NODECODE_CHANNEL=stable sh -s -- --stage
| Flag | Does |
|---|---|
--no-modify-path | No link in ~/.local/bin. It prints the path to run. |
--stage | Lays the version out and probes it. current stays. Nothing restarts. |
--link | Points current at a version laid out earlier. No download. Needs NODECODE_VERSION. |
-h, --help | Prints help. |
With irm … | iex, set variables first. Parameters only reach the script when it runs as a file.
$env:NODECODE_VERSION = '8490b4803'; irm https://nodecode.ai/install.ps1 | iex
| Parameter | Does |
|---|---|
-Version LABEL | Installs that release. |
-FromZip PATH | Installs a local release zip. No download. |
-NoModifyPath | Leaves the user PATH alone. It prints the folder to add. |
| Variable | Default | Does |
|---|---|---|
NODECODE_VERSION | the channel's release | Installs this version. |
NODECODE_CHANNEL | stable | Names the channel pointer to read. |
NODECODE_BASE_URL | https://preview.nodecode.ai/dl | Fetches from this host. Later updates read the same host. |
NODECODE_STAGE | full | full, stage or link. Same as --stage and --link. |
NODECODE_HOME | ~/.local/share/nodecode | Install folder, for install.sh. |
NODECODE_INSTALL_DIR | %LOCALAPPDATA%\Programs\nodecode | Install folder, for install.ps1. |
NODECODE_NO_MODIFY_PATH | unset | Same as -NoModifyPath, for install.ps1. |
Using --link without a version
It stops: --link needs the version to point at: set NODECODE_VERSION.
Instead: curl -fsSL https://nodecode.ai/install.sh | NODECODE_VERSION=8490b4803 sh -s -- --link
Adding a flag from another installer
Anything else exits with code 2: install.sh: unknown argument --yes.
Instead: The flags are --no-modify-path, --stage, --link and -h.
Adding -Version after iex
iex runs the script but takes no parameters for it. PowerShell refuses the line.
Instead: Set the variable first, as above.
Upgrade
nodecode update
Installed builds also update themselves by default. A gateway running in the background moves to the new build. See Updates.
From source
Needs SBCL and just.
just build # compile the system
just test # run the core suite
just release # dump ./nodecode
./nodecode
just check runs lint, build and test.
Waiting for a source build to update itself
Automatic updates are off in a source build.
Instead: Pull and run just release again. Or install a release with the line at the top.