* fix(runtime): require Node builds with lossless SQLite reads * fix(runtime): preserve upgrades and guard sealed workers Validate downloaded Node before switching the active runtime alias, reject unsupported sealed-worker runtimes, and keep the Gateway error fixture on a supported Node release. Document the approved ARMv7 and older macOS compatibility losses and decoder fix boundaries. * test(runtime): use typed process exports in worker fixture * test(runtime): align installer fixtures without growing test shards * test(runtime): align release and guest runtime fixtures * fix(test): canonicalize Windows temp roots for Node 24 Expand Windows short paths before creating test directories and owned child environments. Node 24 filesystem watchers otherwise abort when native long event paths differ from inherited short temporary paths. Preserve explicit custom-root spelling and existing cleanup ownership. * test(ci): run Windows temp-root regressions in the native lane
3.8 KiB
| summary | read_when | title | ||
|---|---|---|---|---|
| Run the OpenClaw Gateway on ChromeOS inside a Crostini Linux container |
|
ChromeOS |
ChromeOS runs Linux software through Crostini, a managed Debian container that Google exposes as the "Linux development environment". The Gateway runs inside that container exactly like any other Linux install, so the Linux guide applies in full. This page covers the ChromeOS specific setup and the gotchas that differ from a plain Linux host.
Node is the primary, default, and recommended runtime. Bun 1.4+ builds with
WAL-reset-safe node:sqlite can run the CLI and Gateway as an explicit opt-in,
and Bun can also run package scripts. The installation path below uses Node.
Enable the Linux container
Turn on Crostini before installing anything:
- Open ChromeOS Settings.
- Go to About ChromeOS then Developers.
- Next to Linux development environment, select Set up and follow the prompts. ChromeOS downloads the Debian container and opens a Terminal.
Run every command below inside that Terminal.
Quick path
-
Install via the installer script (it installs a supported Node for you):
curl -fsSL https://openclaw.ai/install.sh | bash -
Onboard and install the service:
openclaw onboard --install-daemon -
Confirm the Gateway is running:
openclaw gateway status
Full server guidance lives in the Linux guide and the Gateway runbook.
Prefer the native install over Docker
On a single user Chromebook, use the native npm install (the installer script,
or npm i -g openclaw@latest --allow-scripts=openclaw on npm 12 or npm
11.16+) rather than Docker. On npm 11.15 and earlier, omit
--allow-scripts=openclaw.
Docker works inside Crostini, but Docker in Crostini adds friction: if you use the Claude Code CLI as your model runtime, it has to be installed and logged in inside a persisted container home, which is easy to lose on a container rebuild. The native install keeps the CLI and its login on the Crostini filesystem directly, so a Docker image rebuild cannot wipe it.
Node version
The Node version available in a Crostini container may be below OpenClaw's minimum. OpenClaw requires Node 24.16+ or Node 26.1+; Node 26 is the recommended default. The installer script detects a missing or unsupported Node version and provisions a supported release automatically.
If you installed Node yourself before OpenClaw, upgrade it before installing OpenClaw:
node -v
See Node install guidance for the supported versions.
Provider keys and environment variables
The Gateway runs as a systemd user service, so an export VAR=... in an
interactive Terminal is not inherited by the already-installed service.
Put provider keys in ~/.openclaw/.env instead, one per line:
DEEPSEEK_API_KEY=your-key-here
Then restart so the service picks them up:
openclaw gateway restart
See Environment variables for the full precedence and source rules.
Crostini is not always on
Do not treat Crostini as an always-on host. After a ChromeOS reboot, open the Terminal once to start the Linux environment before relying on the Gateway.
Then verify the service:
openclaw gateway status