# openclaw-zero-token **Repository Path**: iuact/openclaw-zero-token ## Basic Information - **Project Name**: openclaw-zero-token - **Description**: 同步https://github.com/linuxhsj/openclaw-zero-token.git更新 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2026-04-18 - **Last Updated**: 2026-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpenClaw Zero Token **Use LLMs without API tokens** — log in via browser once, then call ChatGPT, Claude, Gemini, DeepSeek, Qwen (intl/cn), Doubao, Kimi, Zhipu GLM, Grok, Manus and more for free through a unified gateway. [License: MIT](https://opensource.org/licenses/MIT) English | [简体中文](README.zh-CN.md) --- ## Table of Contents - [Overview](#overview) - [How It Works](#how-it-works) - [Quick Start](#quick-start) - [Usage](#usage) - [Configuration](#configuration) - [Troubleshooting](#troubleshooting) - [Roadmap](#roadmap) - [Adding New Platforms](#adding-new-platforms) - [File Structure](#file-structure) - [Security Notes](#security) - [Sync With Upstream](#upstream-sync) - [Contributing](#contributing) - [License](#license) - [Acknowledgments](#acknowledgments) - [Disclaimer](#disclaimer) --- ## Overview OpenClaw Zero Token is a fork of [OpenClaw](https://github.com/openclaw/openclaw) that focuses on **removing API token cost** by driving the official web UIs (browser login) instead of paid API keys. ### Why Zero Token? | Traditional usage | Zero Token way | | -------------------- | ------------------------ | | Buy API tokens | **Completely free** | | Pay per request | No enforced quota | | Credit card required | Browser login only | | API tokens may leak | Credentials stored local | ### Supported providers | Provider | Status | Models (examples) | | ----------------------- | --------- | ---------------------------------------------------- | | DeepSeek | ✅ tested | deepseek-chat, deepseek-reasoner | | Qwen International | ✅ tested | Qwen 3.5 Plus, Qwen 3.5 Turbo | | Qwen China | ✅ tested | Qwen 3.5 Plus, Qwen 3.5 Turbo | | Kimi | ✅ tested | Moonshot v1 8K / 32K / 128K | | Claude Web | ✅ tested | claude-sonnet-4-6, claude-opus-4-6, claude-haiku-4-6 | | Doubao | ✅ tested | doubao-seed-2.0, doubao-pro | | ChatGPT Web | ✅ tested | GPT-4, GPT-4 Turbo | | Gemini Web | ✅ tested | Gemini Pro, Gemini Ultra | | Grok Web | ✅ tested | Grok 1, Grok 2 | | GLM Web (Zhipu) | ✅ tested | glm-4-Plus, glm-4-Think | | GLM Web (International) | ✅ tested | GLM-4 Plus, GLM-4 Think | | Manus API | ✅ tested | Manus 1.6, Manus 1.6 Lite (API key, free quota) | ### Tool calling All supported models can call **local tools** (`exec`, `read_file`, `list_dir`, `browser`, `apply_patch`, etc.) so that agents can run commands, read/write workspace files, and automate the browser. | Provider type | Tools | Notes | | ----------------------------------------------------------- | ----- | ---------------------------------------------------------------------- | | Web (DeepSeek, Qwen, Kimi, Claude, Doubao, GLM, Grok, etc.) | ✅ | Inject XML tool descriptions in `system`, parse `` streams. | | ChatGPT Web / Gemini Web / Manus API | ✅ | Similar via tool descriptions + multi-turn context + ``. | | OpenRouter / OpenAI-compatible APIs | ✅ | Uses native `tools` / `tool_calls`. | | Ollama | ✅ | Uses native `/api/chat` tools. | Agent file access is restricted by the configured **workspace** directory (see `agents.defaults.workspace`). ### Extra features **AskOnce: one question, answers from all models.** AskOnce can broadcast a single query to multiple configured providers and show their replies side by side. ![AskOnce: ask once, multi-model answers](askonce.png) --- ## How It Works ### High-level architecture ```text ┌─────────────────────────────────────────────────────────────────────────────┐ │ OpenClaw Zero Token │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ Web UI │ │ CLI/TUI │ │ Gateway │ │ Channels │ │ │ │ (Lit 3.x) │ │ │ │ (Port API) │ │ (Telegram…) │ │ │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ │ │ │ │ │ └──────────────────┴──────────────────┴──────────────────┘ │ │ │ │ │ ┌────────▼────────┐ │ │ │ Agent Core │ │ │ │ (PI-AI Engine) │ │ │ └────────┬────────┘ │ │ │ │ │ ┌───────────────────────────────────────────────────────────────────────┐ │ │ │ Provider Layer │ │ │ │ DeepSeek Web (Zero Token) ✅ │ │ │ │ Qwen Web intl/cn (Zero Token) ✅ │ │ │ │ Kimi (Zero Token) ✅ │ │ │ │ Claude Web (Zero Token) ✅ │ │ │ │ Doubao (Zero Token) ✅ │ │ │ │ ChatGPT Web (Zero Token) ✅ │ │ │ │ Gemini Web (Zero Token) ✅ │ │ │ │ Grok Web (Zero Token) ✅ │ │ │ │ GLM Web (Zero Token) ✅ │ │ │ │ Manus API (Token) ✅ │ │ │ └───────────────────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────┘ ``` ### DeepSeek auth flow (example) ```text 1. Start browser openclaw gateway ──▶ Chrome (CDP: 18892, user-data-dir) 2. User logs in Browser ──▶ https://chat.deepseek.com (scan / password login) 3. Capture credentials Playwright CDP ──▶ listen network requests └─▶ intercept Authorization header + cookies 4. Store credentials auth.json ◀── { cookie, bearer, userAgent } 5. Call web API DeepSeek WebClient ──▶ DeepSeek Web API ──▶ chat.deepseek.com (reuses stored cookie + bearer token) ``` --- ## Quick Start > **Platforms** > > - 🍎 **macOS** / 🐧 **Linux**: follow [START_HERE.md](START_HERE.md); full install/config in [INSTALLATION.md](INSTALLATION.md). > - 🪟 **Windows**: use WSL2 and then follow the Linux steps. Install WSL2: `wsl --install`, docs: ### Requirements - Node.js >= 22.12.0 - pnpm >= 9.0.0 - Chrome browser - OS: macOS, Linux, or Windows (via WSL2) ### Helper scripts (first-time & daily use) You can either run `./start.sh` directly, or follow the steps below manually. ```text First-time: 1. Build npm install && npm run build && pnpm ui:build 2. Start Chrome ./start-chrome-debug.sh 3. Login sites Qwen intl/cn, Kimi, DeepSeek, ... 4. Onboard ./onboard.sh webauth 5. Start server ./server.sh start Daily: start-chrome-debug.sh → onboard.sh → server.sh start server.sh [start|stop|restart|status] manages the gateway ``` **Script overview (core 3 scripts):** | Script | Purpose | When to use | | ----------------------- | -------------------------- | ------------------------------------------------------------------------ | | `start-chrome-debug.sh` | Start Chrome in debug mode | Step 2: open browser on port 9222 for logins + onboarding | | `onboard.sh` | Auth/onboarding wizard | Step 4/5: select provider (e.g. `deepseek-web`) and capture credentials | | `server.sh` | Manage gateway service | Step 6 & daily use: `start` / `stop` / `restart` / `status` on port 3001 | ### Installation #### Clone the repo ```bash git clone https://github.com/linuxhsj/openclaw-zero-token.git cd openclaw-zero-token ``` #### Install dependencies ```bash pnpm install ``` #### Step 1: Build ```bash pnpm build pnpm ui:build ``` #### Step 2: Configure authentication ```bash # (Optional but recommended before the very first ./onboard.sh webauth) # Copy the example config to your local state directory: # cp .openclaw-state.example/openclaw.json .openclaw-upstream-state/openclaw.json # On first run, onboard.sh will prompt whether to copy the configuration file, just select yes. # It will copy .openclaw-state.example/openclaw.json to .openclaw-upstream-state/openclaw.json; # for non-first runs, there's no need to copy these configuration files. # Start Chrome in debug mode ./start-chrome-debug.sh # IMPORTANT: Do not close this terminal, otherwise subsequent steps will fail. # Keep this terminal open throughout the process. # Log into each web model once (for example DeepSeek) # https://chat.deepseek.com/ # Run onboarding wizard # IMPORTANT: Open a new terminal for this step (do not use the same terminal as the previous step, # because the ./start-chrome-debug.sh terminal needs to stay open). ./onboard.sh webauth # Or use the built version node openclaw.mjs onboard # Example DeepSeek flow in the wizard: # ? Auth provider: DeepSeek (Browser Login) # # ? DeepSeek Auth Mode: # > Automated Login (Recommended) # capture cookies/tokens automatically # Once you see that auth succeeded, you are done. # To add more providers later, just run ./onboard.sh webauth again. ``` Follow the prompts (choose e.g. **DeepSeek (Browser Login)** and **Automated Login (Recommended)**). To add more providers later, just run `./onboard.sh webauth` again. #### Step 3: Start the gateway ```bash ./server.sh ``` This will start the HTTP gateway and Web UI. --- ## Usage ### Web UI After `./server.sh` the Web UI is started automatically. Open it in your browser and chat with any configured model. #### Switch models Use `/model` inside the chat box: ```bash # Switch to Claude Web /model claude-web # Switch to Doubao /model doubao-web # Switch to DeepSeek /model deepseek-web # Or specify exact models /model claude-web/claude-sonnet-4-6 /model doubao-web/doubao-seed-2.0 /model deepseek-web/deepseek-chat ``` #### List available models ```bash /models ``` > **Important:** Only providers configured via `./onboard.sh webauth` are written into `openclaw.json` and shown in `/models`. The output shows: - All available providers (e.g. `claude-web`, `doubao-web`, `deepseek-web`) - Models under each provider - Currently active model - Aliases and config Example: ```text Model Input Ctx Local Auth Tags doubao-web/doubao-seed-2.0 text 63k no no default,configured,alias:Doubao Browser claude-web/claude-sonnet-4-6 text+image 195k no no configured,alias:Claude Web deepseek-web/deepseek-chat text 64k no no configured ``` ### HTTP API ```bash curl http://127.0.0.1:3001/v1/chat/completions \ -H "Authorization: Bearer YOUR_GATEWAY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-web/deepseek-chat", "messages": [{"role": "user", "content": "Hello!"}] }' ``` ### CLI / TUI ```bash node openclaw.mjs tui ``` --- ## Configuration ### Example `openclaw.json` ```json { "auth": { "profiles": { "deepseek-web:default": { "provider": "deepseek-web", "mode": "api_key" } } }, "models": { "providers": { "deepseek-web": { "baseUrl": "https://chat.deepseek.com", "api": "deepseek-web", "models": [ { "id": "deepseek-chat", "name": "DeepSeek Chat", "contextWindow": 64000, "maxTokens": 4096 }, { "id": "deepseek-reasoner", "name": "DeepSeek Reasoner", "reasoning": true, "contextWindow": 64000, "maxTokens": 8192 } ] } } }, "gateway": { "port": 3001, "auth": { "mode": "token", "token": "your-gateway-token" } } } ``` --- ## Troubleshooting ### First run: use the onboarding wizard (recommended) ```bash ./onboard.sh webauth ``` The wizard will create all required directories and basic files. ### Fix issues: doctor command If you already ran the project but see missing-directories or similar errors: ```bash node dist/index.mjs doctor ``` The doctor command will: - ✅ Check all required directories - ✅ Create missing directories - ✅ Fix common permission issues - ✅ Validate config file structure - ✅ Detect multiple conflicting state directories - ✅ Print detailed suggestions **Limitations:** - ❌ Does **not** create `openclaw.json` - ❌ Does **not** create `auth-profiles.json` - ✅ If those are missing/corrupt, rerun `./onboard.sh webauth` --- ## Roadmap ### Current focus - ✅ DeepSeek Web, Qwen intl/cn, Kimi, Claude Web, Doubao, ChatGPT Web, Gemini Web, Grok Web, GLM Web, GLM intl, Manus API — all tested - 🔧 Improve credential capture robustness - 📝 Documentation improvements ### Planned - 🔜 Auto-refresh for expired web sessions --- ## Adding New Platforms To add a new web provider you usually need: ### 1. Auth module (`src/providers/{platform}-web-auth.ts`) ```ts export async function loginPlatformWeb(params: { onProgress: (msg: string) => void; openUrl: (url: string) => Promise; }): Promise<{ cookie: string; bearer: string; userAgent: string }> { // Automate browser login and capture credentials } ``` ### 2. API client (`src/providers/{platform}-web-client.ts`) ```ts export class PlatformWebClient { constructor(options: { cookie: string; bearer?: string }) {} async chatCompletions(params: ChatParams): Promise { // Call platform web API } } ``` ### 3. Stream handler (`src/agents/{platform}-web-stream.ts`) ```ts export function createPlatformWebStreamFn(credentials: string): StreamFn { // Handle provider-specific streaming format } ``` --- ## File Structure ```text openclaw-zero-token/ ├── src/ │ ├── providers/ │ │ ├── deepseek-web-auth.ts # DeepSeek login capture │ │ └── deepseek-web-client.ts # DeepSeek API client │ ├── agents/ │ │ └── deepseek-web-stream.ts # Streaming response handling │ ├── commands/ │ │ └── auth-choice.apply.deepseek-web.ts # Auth flow │ └── browser/ │ └── chrome.ts # Chrome automation ├── ui/ # Web UI (Lit 3.x) ├── .openclaw-zero-state/ # Local state (ignored) │ ├── openclaw.json # Config │ └── agents/main/agent/ │ └── auth.json # Credentials (sensitive) └── .gitignore # Includes .openclaw-zero-state/ ``` --- ## Security Notes 1. **Credential storage**: cookies and bearer tokens live in local `auth.json` and must **never** be committed. 2. **Session lifetime**: web sessions expire; you may need to re-login from time to time. 3. **Rate limiting**: web endpoints may enforce rate limits; they are not suited for heavy production workloads. 4. **Compliance**: this project is for personal learning and experimentation. Always follow each platform’s Terms of Service. --- ## Sync With Upstream OpenClaw This project is based on OpenClaw. To sync upstream changes: ```bash git remote add upstream https://github.com/openclaw/openclaw.git git fetch upstream git merge upstream/main ``` --- ## Contributing PRs are welcome, especially for: - Bug fixes - Documentation improvements --- ## License [MIT License](LICENSE) --- ## Acknowledgments - [OpenClaw](https://github.com/openclaw/openclaw) — original project - [DeepSeek](https://deepseek.com) — excellent AI models --- ## Disclaimer This project is for learning and research only. When using it to access any third-party service, you are responsible for complying with that service’s Terms of Use. The authors are not liable for any issues caused by misuse of this project.