buildwithnexusv0.15.1
Menu

Install

Installing takes one command, and nothing runs during npm install. The first launch downloads the binary for your platform, verifies its checksum, and starts setup.

You need Node.js 18 or later, plus either an API key (Anthropic, OpenAI, OpenRouter, Groq or Hugging Face) or a local model server such as Ollama.

npm install -g buildwithnexus
bwn                   # or the full name: buildwithnexus

First run

The first time you run bwn in a terminal, setup asks you to choose a provider, a model, and a permission mode. For the provider, paste a key or pick a local server. Before it saves anything, setup sends the model a one-token request. For Ollama it only checks that the model is installed, because a request could take minutes to load a large model. After the check, setup saves your choices to ~/.buildwithnexus/. Then describe a task, as the Quickstart shows. To change these choices later, run bwn init, or switch models mid-session with /model. Data & privacy lists what bwn sends to a remote provider and what stays on your machine.

Without a terminal, as in CI or docker run without -t, nobody can answer setup. A headless run such as bwn run "<task>" then uses the provider from --provider or the first API key in the environment, for example ANTHROPIC_API_KEY, and saves nothing. Plain bwn, with or without a task, runs setup instead. When stdin is empty, as in CI, setup prints the provider menu and reads no answer. It then saves nothing and exits with code 1.

If you use LM Studio, llama.cpp or another OpenAI-compatible server, start it before you run setup. Setup then lists the models it serves.

To upgrade later, run buildwithnexus update or npm install -g buildwithnexus@latest.

Try it in a sandbox

There are two ways to try buildwithnexus where it cannot reach the files on your machine.

GitHub Codespaces. Open a codespace on the repo to run it in your browser. The devcontainer preinstalls the binary, so run bwn when the terminal appears. To talk to a remote model, add ANTHROPIC_API_KEY or OPENAI_API_KEY as a Codespaces secret, or export it in the terminal.

Docker. This runs locally in a scratch container that Docker deletes on exit, so nothing the agent does can reach your files:

docker run -it --rm -e BWN_ALLOW_BOOTSTRAP=1 -e ANTHROPIC_API_KEY \
  node:22-slim npx -y buildwithnexus

Drop --rm to keep the sandbox between runs. To let it work on a real project, add -v "$PWD":/work -w /work, which mounts the current directory as the container's working directory.

Requirements

PlatformSupport
Linuxx86_64, aarch64 (prebuilt). The prebuilt binaries need a system with glibc 2.34 or later, for example Ubuntu 22.04+, Debian 12+, RHEL/Rocky/Alma 9+, Amazon Linux 2023 or Fedora 35+. Under WSL, the Linux distro you run needs glibc 2.34 or later too. The prebuilt binaries do not run on musl/Alpine.
macOSIntel, Apple Silicon (prebuilt)
Windowsx86_64 (prebuilt). The binary links the C runtime statically, so it does not need the Visual C++ Redistributable.
Node.js18 or later, needed only for the npm launcher
Rust1.94 or later, needed only for cargo install and source builds

On Windows, clipboard image paste, background-server control and API-key file permissions (via icacls) work natively. Hook scripts run through PowerShell, cmd, Python or Git Bash. Ctrl+Break and closing the console restore the terminal. On Windows, bwn also picks up .ps1, .cmd and .bat scripts in ~/.buildwithnexus/hooks/<Event>/ without a settings.json entry. Two things are still missing on Windows. bwn runs background servers there as plain processes instead of in tmux. The sandbox has no backend on Windows, and it has none inside WSL either.

Auto-updates

By default buildwithnexus tells you about updates and never installs them. At most once a day, a background check asks the npm registry for the latest version. When a newer one exists, the next launch prints a one-line notice that tells you to run buildwithnexus update. Startup never waits on the network. Set the auto_update policy in ~/.buildwithnexus/settings.json:

{ "auto_update": "notify" }       // default: check daily, print a notice, never install
{ "auto_update": "install" }      // check daily, silently npm install -g patch releases, announce a new minor or major
{ "auto_update": "install-any" }  // check daily and silently npm install -g any newer release
{ "auto_update": "off" }          // no checks, no notices

BWN_NO_AUTO_UPDATE=1 still works and caps "install" and "install-any" back to "notify". bwn never auto-updates cargo and source installs, because both install policies apply only when npm installed the binary. Headless runs never check. BWN_UPDATE_REGISTRY, or else the npm_config_registry environment variable, points the check at a mirror. bwn does not read the registry from .npmrc.

New in 0.15. "install" installs only patch releases within your minor version and announces a new minor or major release. "install-any" installs any newer release, as "install" did before 0.15. When a newer release exists and npm installed bwn, buildwithnexus update installs it with npm install -g. For any other install it prints the release download link and the npm and cargo commands, then exits with code 10. When bwn is already current, it prints up to date and exits with code 0. buildwithnexus update --check only reports, and exits with code 10 when a newer release exists. See What's new in 0.15.

Package security

The npm package is built to pass supply-chain scanners without warnings:

Behind a proxy. The launcher downloads the binary with Node's https module, which ignores HTTPS_PROXY unless you set NODE_USE_ENV_PROXY=1. Node 22.21+ and 24.5+ support it. For that download, a TLS-inspecting proxy also needs its CA in NODE_EXTRA_CA_CERTS. When a download fails, the launcher says which of these applies and prints the command to retry. You can also set BWN_BIN to the absolute path of a binary you built or downloaded yourself. bwn itself reads HTTPS_PROXY, HTTP_PROXY, ALL_PROXY and NO_PROXY. It also trusts the OS certificate store, so it accepts a proxy CA that IT installed with no extra settings.

Managed and corporate machines

Endpoint protection such as CrowdStrike Falcon or Microsoft Defender may block or quarantine the Windows binary. The binary is new and has few installs. The launcher also downloads it on first run and then runs it. That is the same pattern a malware loader follows, even though the launcher verifies the download's checksum. The file itself matches its release checksum and attestation, so ask IT to allowlist it.

The IT and security guide lists what bwn launches, which hosts it connects to and which files it writes. It also explains how to allowlist bwn by hash, signer or path, and includes a request you can send to your IT team.

cargo install

With Rust 1.94 or later and a C compiler, install from crates.io. API docs are on docs.rs.

cargo install buildwithnexus --locked   # installs `buildwithnexus` and the `bwn` alias
bwn --version

--locked builds with the exact dependency versions the release was tested with, because the lockfile ships in the crate. The bwn crate installs only the short name. Install it instead of buildwithnexus, not in addition, because cargo refuses a second crate that provides the same bwn binary.

Build from source

git clone https://github.com/Garretts-Apps/buildwithnexus
cd buildwithnexus
cargo build --release --manifest-path harness/Cargo.toml

Next: Quickstart →