Step-by-step guide for installing QuadWork on macOS. Designed for both humans and AI coding agents.
node --version # Need 20+ (24 recommended)
git --version
gh --versionNode.js 20+ (via nvm — strongly recommended):
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
source ~/.zshrc
nvm install 24
nvm use 24Why nvm? The QuadWork install step below uses
npm install -g. With a Homebrew or.pkgNode, global installs target/usr/local/lib/node_modules/and fail withEACCES: permission deniedunless you usesudo. nvm puts the global prefix inside~/.nvm/, sonpm install -gworks without elevated permissions.
Git (included with Xcode Command Line Tools):
xcode-select --installGitHub CLI:
brew install ghgh auth loginThis is interactive — the operator must complete the browser-based auth flow. Ask the user to run this command if not already authenticated.
Verify:
gh auth status
# You should see: "Logged in to github.com account <username>"Install one or more of the supported agent CLIs:
# Claude Code (Anthropic)
npm install -g @anthropic-ai/claude-code
# Codex CLI (OpenAI)
npm install -g @openai/codex
# Gemini CLI (Google) — if using Gemini agents
npm install -g @google/gemini-cliEach CLI requires a one-time interactive login:
# Claude Code — follow the login prompt
claude
# Codex — follow the login prompt
codexThese are interactive steps. Ask the operator to run each command and complete the login flow.
npm install -g quadwork@latestVerify:
quadwork --version
# You should see the version number (e.g., 1.14.5)If you see an error like:
npm error code EACCES
npm error syscall mkdir
npm error path /usr/local/lib/node_modules/quadwork
your Node is installed system-wide (Homebrew or the .pkg installer) and the global prefix is not writable by your user. Pick one:
- Switch to nvm (recommended) — see the Prerequisites section above, then re-run
npm install -g quadwork@latest. - Run once with
npx(no global install):npx quadwork@latest init npx quadwork@latest start
- Install with
sudo(not recommended — leaves root-owned files in your globalnode_modules):sudo npm install -g quadwork@latest
quadwork initThis is interactive. The operator will be prompted to configure their first project (name, repo, working directory, agent backends).
quadwork startYou should see output like:
QuadWork dashboard: http://localhost:8400
Open the dashboard URL in your browser to access the web UI.
- Open the dashboard at
http://localhost:8400 - Click "+ New Project" or navigate to
/setup - Fill in the project details:
- Name: Your project name
- Repo: GitHub repo in
owner/repoformat - Working directory: Absolute path to the repo clone
- Agent backends: Choose Claude, Codex, or Gemini for each agent role
- Click Create
QuadWork will:
- Create worktree directories for each agent (e.g.,
project-head/,project-dev/,project-re1/,project-re2/) - Seed AGENTS.md files for each role
On first launch, Claude Code agents may get stuck at a "Do you trust this directory?" prompt. QuadWork v1.14.5+ automatically pre-trusts worktree directories for Claude-configured agents during project creation.
If agents are still stuck (e.g., upgraded from an older version), manually pre-trust each worktree:
# Run in each worktree directory
cd /path/to/project-head && claude -p "echo ok"
cd /path/to/project-dev && claude -p "echo ok"
cd /path/to/project-re1 && claude -p "echo ok"
cd /path/to/project-re2 && claude -p "echo ok"- Open the project page in the dashboard
- Click the Discord widget
- Enter your Discord bot token and channel ID
- Click Start
- Open the project page in the dashboard
- Click the Telegram widget
- Enter your Telegram bot token and chat ID
- Click Start
Note: Bridges are configured per-project in
~/.quadwork/config.json. See the dashboard Telegram/Discord widgets for setup.
# Stop the server (Ctrl+C if running in foreground)
# Or if running in background:
quadwork stop
# Restart
quadwork startFor persistent background operation on Mac, consider using pm2:
npm install -g pm2
pm2 start "quadwork start" --name quadwork
pm2 save