System requirements
- Node 24 (recommended) or Node 22.14+ — the installer script handles this automatically
- macOS, Linux, or Windows — both native Windows and WSL2 are supported; WSL2 is more stable. See Windows.
pnpmis only needed if you build from source
Recommended: installer script
The fastest way to install. It detects your OS, installs Node if needed, installs Genesis, and launches onboarding.
macOS / Linux / WSL2
```bash
curl -fsSL https://genesis.pixelzx.com/install.sh | bash
```
Windows (PowerShell)
```powershell
iwr -useb https://genesis.pixelzx.com/install.ps1 | iex
```
To install without running onboarding:
macOS / Linux / WSL2
```bash
curl -fsSL https://genesis.pixelzx.com/install.sh | bash -s -- --no-onboard
```
Windows (PowerShell)
```powershell
& ([scriptblock]::Create((iwr -useb https://genesis.pixelzx.com/install.ps1))) -NoOnboard
```
For all flags and CI/automation options, see Installer internals.
Alternative install methods
Local prefix installer (install-cli.sh)
Use this when you want Genesis and Node kept under a local prefix such as
~/.genesis, without depending on a system-wide Node install:
curl -fsSL https://genesis.pixelzx.com/install-cli.sh | bash
It supports npm installs by default, plus git-checkout installs under the same prefix flow. Full reference: Installer internals.
npm, pnpm, or bun
If you already manage Node yourself:
npm
```bash
npm install -g @pixelzx/genesis@latest
genesis onboard --install-daemon
```
pnpm
```bash
pnpm add -g @pixelzx/genesis@latest
pnpm approve-builds -g
genesis onboard --install-daemon
```
<div class="callout note">
pnpm requires explicit approval for packages with build scripts. Run `pnpm approve-builds -g` after the first install.
</div>
bun
```bash
bun add -g @pixelzx/genesis@latest
genesis onboard --install-daemon
```
<div class="callout note">
Bun is supported for the global CLI install path. For the Gateway runtime, Node remains the recommended daemon runtime.
</div>
Troubleshooting: sharp build errors (npm)
If sharp fails due to a globally installed libvips:
SHARP_IGNORE_GLOBAL_LIBVIPS=1 npm install -g @pixelzx/genesis@latest
From source
For contributors or anyone who wants to run from a local checkout:
git clone https://github.com/PIXELZX0/Genesis.git
cd genesis
pnpm install && pnpm build && pnpm ui:build
pnpm link --global
genesis onboard --install-daemon
Or skip the link and use pnpm genesis ... from inside the repo. See Setup for full development workflows.
Install from GitHub main
npm install -g github:PIXELZX0/Genesis#main
Containers and package managers
-
Docker Containerized or headless deployments.
-
Podman Rootless container alternative to Docker.
-
Nix Declarative install via Nix flake.
-
Ansible Automated fleet provisioning.
-
Bun CLI-only usage via the Bun runtime.
Verify the install
genesis --version # confirm the CLI is available
genesis doctor # check for config issues
genesis gateway status # verify the Gateway is running
If you want managed startup after install:
- macOS: LaunchAgent via
genesis onboard --install-daemonorgenesis gateway install - Linux/WSL2: systemd user service via the same commands
- Native Windows: Scheduled Task first, with a per-user Startup-folder login item fallback if task creation is denied
Hosting and deployment
Deploy Genesis on a cloud server or VPS:
-
VPS Any Linux VPS
-
Docker VM Shared Docker steps
-
Kubernetes K8s
-
Hetzner Hetzner
-
GCP Google Cloud
-
Azure Azure
-
Railway Railway
-
Render Render
-
Northflank Northflank
Update, migrate, or uninstall
-
Updating Keep Genesis up to date.
-
Migrating Move to a new machine.
-
Uninstall Remove Genesis completely.
Troubleshooting: genesis not found
If the install succeeded but genesis is not found in your terminal:
node -v # Node installed?
npm prefix -g # Where are global packages?
echo "$PATH" # Is the global bin dir in PATH?
If $(npm prefix -g)/bin is not in your $PATH, add it to your shell startup file (~/.zshrc or ~/.bashrc):
export PATH="$(npm prefix -g)/bin:$PATH"
Then open a new terminal. See Node setup for more details.