Have you ever considered this? That Ubuntu machine you keep running 24/7 could actually be transformed into an “AI Command Center”—one capable of freely accessing major large language models like DeepSeek, Claude, and ChatGPT to provide you with AI services around the clock. This is no longer the stuff of science fiction, I spent two or three evenings successfully getting OpenClaw specifically the OpenClaw Zero Token project, up and running on my local machine. Today, I’m sharing this step-by-step guide on installing OpenClaw with you, in the hope that it helps you steer clear of the pitfalls I encountered along the way.

1. Why Do You Need This “Zero-Cost” Solution?

If you have ever been frustrated by the API costs associated with large language models, or concerned about token leakage, then this solution is designed specifically for you. Simply put, OpenClaw Zero Token acts as an intelligent “intermediary.” It launches a dedicated browser in the background of your computer, allowing you to log in to various AI platforms (such as DeepSeek, Qwen, etc.). It then cleverly “captures” and securely stores your login credentials (cookies). Subsequently, you can access and utilize these models free of charge through its unified interface or API. Throughout this entire process, your credentials remain stored locally, ensuring a high level of security.

  • Zero Cost: Completely free—say goodbye to the anxiety of token-based billing.
  • Extensive Model Support: Currently tested to support over a dozen platforms, including Claude, DeepSeek, Kimi, and Zhipu Qingyan.
  • Tool Calling: Supports enabling the AI ​​to perform actions such as searching and reading files, offering significant practical utility.

2. Environment Preparation: Turning Your Ubuntu into a “Bare-bones System”

In fact, the hardware requirements for this project are not particularly demanding; my primary machine — a battle-worn Intel NUC running Ubuntu 24.04 Desktop, it handles the task with ease. On the software front, you simply need to ensure that the following prerequisites are in place:

  1. Node.js >= 22.12.0: Installing directly from official sources may result in an outdated version. It is recommended to use nvm (Node Version Manager) for management, as it allows for easy installation and switching between versions. The version used in this test is 22.22.2.
  2. pnpm >= 9.0.0: Faster than npm, it is the designated package manager for this project. Version 10.33.2 was used for this test.
  3. Chrome Browser: Required; this serves as the foundation for the automated operations. This test utilizes version 147.0.7727.116.

3. Hands-on Practice for Beginners: Six Steps to Install OpenClaw Zero Token

Here are the core steps, just follow them methodically, one by one.

1. Cloning the Project and Compiling

Use the terminal to navigate to the directory where you intend to store your project, then execute:

git clone https://github.com/linuxhsj/openclaw-zero-token.git
cd openclaw-zero-token
npm install
npm run build
pnpm ui:build

Once the above steps are complete, you need to verify whether the compilation was successful.

ls dist/index.js  # The documentation mentions index.mjs, but actual testing revealed it is index.js.
ls dist/control-ui/index.html

2. Launch Chrome in Debugging Mode (Keep Running)

After successful compilation, you must launch a Chrome instance with a debugging port in the current terminal. This terminal window must remain open throughout the subsequent operations.

./start-chrome-debug.sh

After execution, a Chrome browser window will automatically pop up. You should see a “remote debugging” prompt next to the address bar.

3. Log In to Major AI Platforms

In this newly opened Chrome window, the login pages for the supported AI platforms should appear automatically. If they do not, you can manually visit and log in to all the AI ​​platforms you wish to use. For example:

  • chat.deepseek.com
  • chat.qwen.ai
  • kimi.moonshot.cn
  • claude.ai
  • etc.…

You only need to log in via the web interface once; OpenClaw will subsequently rely on this login state.

4. Run the Authorization Wizard to Capture Credentials

This is a crucial step in unblocking the “Ren and Du meridians.” Open a new terminal window, navigate to the project directory, and run:

./onboard.sh webauth

This script launches an interactive command-line interface. You will need to follow the prompts to select, one by one, the platforms you logged into earlier (e.g., deepseek-web, qwen-web, etc.). It connects to the Chrome window you left open in the previous step, automatically extracts your login credentials, and saves them.

Troubleshooting Guide: Potential Causes for Authorization Failure
This is the step where issues are most likely to occur. If you encounter a connection error such as No browser found, first verify that the start-chrome-debug.sh script from Step 1 is still running correctly. If you fail to capture credentials for a specific platform. For instance, if you see a “capture failed” message, the most probable causes are either that you are not properly logged into the browser session or that there is network instability. You can resolve this by stopping and re-executing start-chrome-debug.sh. Then, within the new browser window that pops up, log back into the specific platform in question. Finally, run ./onboard.sh webauth again, selecting only that specific platform to retry the process.

5. Start the service and enjoy the full experience.

Once all credentials have been successfully retrieved, you can launch the main service. Similarly, execute the following command within the project directory:

./server.sh start

When you see a message in the output similar to Web UI available at http://127.0.0.1:3001/..., it indicates that the launch was successful. The main interface should pop up automatically at this point, if it doesn’t, you can open that address in your browser to access a clean and streamlined chat interface. You can then directly switch between various models and start asking questions right there.

6. Daily Use and Maintenance

  • Regular Startup: From now on, whenever you wish to use it, simply run ./server.sh start.
  • Session Expiration: Web logins are time-limited. If you find that the model is unable to respond, you must log in to the corresponding webpage again within the browser running in debug mode—specifically, by repeating steps 2, 3, and 4.
  • Service Management: ./server.sh restart (restart), ./server.sh stop (stop), ./server.sh status (check status).
  • List pairing devices and allow
# Replace with actual token
npx openclaw devices list --url ws://127.0.0.1:3001 --token 123456
# Replace with actual token
npx openclaw devices approve XXX --url ws://127.0.0.1:3001 --token 123456
  • Check openclaw.json
cat /.openclaw-upstream-state/openclaw.json

Of course, unexpected issues such as network or compatibility problems, they may arise during the installation process. Below, I share the pitfalls I encountered, offered here for your reference.

4. Notes on Pitfalls

1. Dependency Version Errors When Running ‘npm install’

root@NUC:/home/nuc/openclaw-zero-token# npm install

npm error code ERESOLVE
npm error ERESOLVE could not resolve
npm error
npm error While resolving: oxlint@1.61.0
npm error Found: oxlint-tsgolint@0.16.0
npm error node_modules/oxlint-tsgolint
npm error   dev oxlint-tsgolint@"^0.16.0" from the root project
npm error
npm error Could not resolve dependency:
npm error peerOptional oxlint-tsgolint@">=0.18.0" from oxlint@1.61.0
npm error node_modules/oxlint
npm error   dev oxlint@"^1.53.0" from the root project
npm error
npm error Conflicting peer dependency: oxlint-tsgolint@0.22.0
npm error node_modules/oxlint-tsgolint
npm error   peerOptional oxlint-tsgolint@">=0.18.0" from oxlint@1.61.0
npm error   node_modules/oxlint
npm error     dev oxlint@"^1.53.0" from the root project
npm error
npm error Fix the upstream dependency conflict, or retry
npm error this command with --force or --legacy-peer-deps
npm error to accept an incorrect (and potentially broken) dependency resolution.
npm error
npm error
npm error For a full report see:
npm error /root/.npm/_logs/2026-04-26T01_28_28_756Z-eresolve-report.txt
npm error A complete log of this run can be found in: /root/.npm/_logs/2026-04-26T01_28_28_756Z-debug-0.log

This error is caused by a dependency version conflict: the version of oxlint-tsgolint in the project is 0.16.0, whereas oxlint@1.61.0 requires oxlint-tsgolint@>=0.18.0.

Solution: Use –legacy-peer-deps

npm install --legacy-peer-deps

2. Permission Error When Running ‘npm install –legacy-peer-deps’

root@NUC:/home/nuc/openclaw-zero-token# npm install --legacy-peer-deps

npm error code 128
npm error An unknown git error occurred
npm error command git --no-replace-objects ls-remote ssh://git@github.com/whiskeysockets/libsignal-node.git
npm error git@github.com: Permission denied (publickey).
npm error fatal: Could not read from remote repository.
npm error
npm error Please make sure you have the correct access rights
npm error and the repository exists.
npm error A complete log of this run can be found in: /root/.npm/_logs/2026-04-26T01_35_55_814Z-debug-0.log

This error occurs because the project attempted to clone a private repository via the SSH protocol, but your system is not configured with an SSH key, or the repository is private.

Solution: Switch from SSH to HTTPS.

git config --global url."https://github.com/".insteadOf ssh://git@github.com/
git config --global url."https://github.com/".insteadOf git@github.com:

3. Running ‘npm run build’ failed due to missing necessary dependencies.

root@NUC:/home/nuc/openclaw-zero-token# npm run build

openclaw@2026.3.28 build
pnpm canvas:a2ui:bundle && node scripts/tsdown-build.mjs && node scripts/copy-plugin-sdk-root-alias.mjs && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-startup-metadata.ts && node --import tsx scripts/write-cli-compat.ts

openclaw@2026.3.28 canvas:a2ui:bundle /home/nuc/openclaw-zero-token
bash scripts/bundle-a2ui.sh

<DIR>/a2ui.bundle.js  chunk │ size: 457.10 kB

✔ rolldown v1.0.0-rc.9 Finished in 121.95 ms

extensions/diagnostics-otel/src/service.ts (1:47) [UNRESOLVED_IMPORT] Warning: Could not resolve '@opentelemetry/api' in extensions/diagnostics-otel/src/service.ts
   ╭─[ extensions/diagnostics-otel/src/service.ts:1:48 ]
   │
 1 │ import { metrics, trace, SpanStatusCode } from "@opentelemetry/api";
   │                                                ──────────┬─────────
   │                                                          ╰─────────── Module not found, treating it as an external dependency
───╯

extensions/diagnostics-otel/src/service.ts (3:32) [UNRESOLVED_IMPORT] Warning: Could not resolve '@opentelemetry/exporter-logs-otlp-proto' in extensions/diagnostics-otel/src/service.ts
   ╭─[ extensions/diagnostics-otel/src/service.ts:3:33 ]
   │
 3 │ import { OTLPLogExporter } from "@opentelemetry/exporter-logs-otlp-proto";
   │                                 ────────────────────┬────────────────────
   │                                                     ╰────────────────────── Module not found, treating it as an external dependency
───╯
... ...

Found 24 errors in 10 files.

Errors  Files
     9  extensions/matrix/src/matrix/client/file-sync-store.ts:11
     1  extensions/matrix/src/matrix/client/logging.ts:1
     5  extensions/matrix/src/matrix/sdk.ts:11
     1  extensions/matrix/src/matrix/sdk/crypto-bootstrap.ts:1
     1  extensions/matrix/src/matrix/sdk/crypto-node.runtime.ts:7
     2  extensions/matrix/src/matrix/sdk/decrypt-bridge.ts:1
     1  extensions/matrix/src/matrix/sdk/event-helpers.ts:1
     1  extensions/matrix/src/matrix/sdk/idb-persistence.ts:3
     1  extensions/matrix/src/matrix/sdk/recovery-key-store.ts:3
     2  extensions/matrix/src/matrix/sdk/verification-manager.ts:5
 ELIFECYCLE  Command failed with exit code 1.

The build failed due to missing dependencies. The project requires the installation of numerous external dependencies to build successfully, please install all required dependencies first.

# Install OpenTelemetry-related dependencies.
npm install --legacy-peer-deps @opentelemetry/api @opentelemetry/exporter-logs-otlp-proto @opentelemetry/exporter-metrics-otlp-proto @opentelemetry/exporter-trace-otlp-proto @opentelemetry/resources @opentelemetry/sdk-logs @opentelemetry/sdk-metrics @opentelemetry/sdk-node @opentelemetry/sdk-trace-base @opentelemetry/semantic-conventions

# Install Twitch-related dependencies.
npm install --legacy-peer-deps @twurple/auth @twurple/chat @twurple/api

# Install Nostr-related dependencies.
npm install --legacy-peer-deps nostr-tools

# Install Matrix-related dependencies.
npm install --legacy-peer-deps matrix-js-sdk fake-indexeddb @matrix-org/matrix-sdk-crypto-nodejs

# Install other missing dependencies.
npm install --legacy-peer-deps @pierre/diffs zca-js @microsoft/teams.apps @microsoft/teams.api @urbit/aura @aws-sdk/client-s3 @aws-sdk/s3-request-presigner

4. Unable to Launch Chrome Debugging Mode

System: Linux
Chrome: /opt/google/chrome/google-chrome
User Data Directory: /root/.config/chrome-openclaw-debug

Launching Chrome in debug mode...
Port: 9222

Chrome Log: /tmp/chrome-debug.log
Waiting for Chrome to launch...
✗ Chrome failed to launch

Please check:
1. Chrome path: /opt/google/chrome/google-chrome
2. Whether port 9222 is in use: lsof -i:9222
3. User data directory permissions: /root/.config/chrome-openclaw-debug
4. Launch log: /tmp/chrome-debug.log

Attempt to launch manually:
"/opt/google/chrome/google-chrome" --remote-debugging-port=9222 --user-data-dir="/root/.config/chrome-openclaw-debug"
root@NUC:/home/nuc/openclaw-zero-token# "/opt/google/chrome/google-chrome" --remote-debugging-port=9222 --user-data-dir="/root/.config/chrome-openclaw-debug"

The problem is that Chrome does not allow running as the root user, unless the --no-sandbox argument is added.

Solution: Exit the root user and run as a standard user. Alternatively, if running as root, use the --no-sandbox argument and execute the command in a new terminal window.

"/opt/google/chrome/google-chrome" --remote-debugging-port=9222 --user-data-dir="/root/.config/chrome-openclaw-debug" --no-sandbox

5. Detected an outdated Node.js version.

You can install the latest version of Node.js using the NodeSource repository.

# Update the system and install necessary dependencies
sudo apt update
sudo apt install -y curl ca-certificates gnupg

# Add NodeSource Repository (Version 22.x)
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -

# Install Node.js (npm will be installed along with it)
sudo apt install -y nodejs

At this point, your local, OpenClaw Zero Token setup is complete. Although this OpenClaw installation tutorial involves quite a few steps, each one is clearly outlined. The entire process feels more like building your own personalized AI workstation. Moving forward—whether you are batch-processing documents or comparing responses from different models, everything will be much more seamless and efficient. Most importantly, there is no need to constantly ration your usage, you can instantly enjoy total freedom from token limits.