# Get Started This guide provides the demo setup steps for the OpenClaw service, EC-RAG service, Router service, Compressor service, and the UI service. ## Table of Contents - [1. Set Up Router and Compressor Services](#1-set-up-router-and-compressor-services) - [2. Set Up EC-RAG](#2-set-up-ec-rag) - [3. Set Up OpenClaw](#3-set-up-openclaw) - [3.1 Install and Onboard OpenClaw](#31-install-and-onboard-openclaw) - [3.2 Configure `openclaw.json`](#32-configure-openclawjson) - [3.3 Install Repository Skills into the OpenClaw Agent Directory](#33-install-repository-skills-into-the-openclaw-agent-directory) - [3.4 Enable the Skill in OpenClaw Configuration](#34-enable-the-skill-in-openclaw-configuration) - [4. Set Up the UI](#4-set-up-the-ui) - [5. Test the Configuration](#5-test-the-configuration) - [6. Use the Knowledgebase Skill](#6-use-the-knowledgebase-skill) ## 1. Set Up Router and Compressor Services The Router and Compressor services are set up separately. See the [Inference Router](https://docs.openedgeplatform.intel.com/2026.2/edge-ai-libraries/inference-router/index.html) microservice for the full instructions on generating the configuration and starting both services. ## 2. Set Up EC-RAG To install and launch EC-RAG, set up the EC-RAG pipeline, and build the knowledge base, follow the instructions in [`OPEA EC-RAG Setup Guide`](https://github.com/opea-project/GenAIExamples/blob/main/EdgeCraftRAG/docs/Advanced_Setup.md). For the latest model support, you can modify the EC-RAG vLLM backend image version and configuration like this: ```bash # clone OPEA EC-RAG repo git clone https://github.com/opea-project/GenAIExamples.git cd GenAIExamples/EdgeCraftRAG # change the vllm image version and related config: sed -i \ -e '/--disable-log-requests/d' \ -e 's@ source /opt/intel/oneapi/setvars.sh --force &&@@' \ -e 's@intel/llm-scaler-vllm:0.11.1-b7@intel/llm-scaler-vllm:0.21.0-b1@g' \ -e 's@VLLM_OFFLOAD_WEIGHTS_BEFORE_QUANT=1@VLLM_OFFLOAD_WEIGHTS_BEFORE_QUANT=0@g' \ docker_compose/intel/gpu/arc/compose.yaml ``` Below is a reference pipeline configuration: ```bash - `HOST_IP`: `` - `DOC_PATH`: `${PWD}/workspace` - `TMPFILE_PATH`: `${PWD}/workspace` - `LLM_MODEL`: `Qwen/Qwen3.5-35B-A3B` - `MODEL_PATH`: `` - `MAX_MODEL_LEN`: `60000` - `QUANTIZATION`: `fp8` - `GPU_MEMORY_UTIL`: `0.65` ``` ## 3. Set Up OpenClaw ### 3.1 Install and Onboard OpenClaw If you do not have OpenClaw yet, install it from the official repository at . Install `openclaw@2026.5.6`: ```bash npm install -g openclaw@2026.5.6 ``` Use the following choices in the onboarding wizard. Skip all online provider/channel/skill configuration for now and configure them manually in the following sections: ```bash openclaw onboard --install-daemon ``` | Wizard Step | Selection | |---|---| | Onboarding mode | **QuickStart** | | Model / auth provider | **Skip for now** | | Filter models by provider | **All providers** | | Default model | **Keep current** | | Select channel | **Skip for now** | | Configure skills now | **No** | | Enable hooks | **Skip for now** | | How do you want to hatch your bot? | **Do this later** | If you are using an internally packaged version or a preinstalled environment, make sure you can access the following: - OpenClaw executable - `openclaw.json` configuration file - A usable agent workspace, for example `~/.openclaw/workspace` ### 3.2 Configure `openclaw.json` Before editing the configuration, stop the `openclaw gateway` service: ```bash openclaw gateway stop ``` Edit `~/.openclaw/openclaw.json`. The `~/.openclaw/openclaw.json` file generated by `openclaw onboard` already includes the basic skeleton such as `gateway`, `tools.profile`, and `agents.list[main]`, so **you do not need to replace the entire file**. Merge the following sections into it: - `models.providers`: add the `minimax`, `vllm`, and `proxy-101` providers - `tools`: append web search using `tavily` - `agents`: - configure `subagents` - add `vllm/Qwen/Qwen3.5-35B-A3B`, `minimax/MiniMax-M2.7`, `proxy-101/auto`, and `proxy-101/Qwen/Qwen3.5-35B-A3B` under `models` - configure `model` - configure `llm` - `plugins`: add the `tavily` configuration - `gateway`: configure `controlUi` ```json { "agents": { "defaults": { "workspace": "${HOME}/.openclaw/workspace", "compaction": { "mode": "safeguard" }, "subagents": { "maxConcurrent": 2, "maxSpawnDepth": 1, "maxChildrenPerAgent": 1, "model": "proxy-101/Qwen/Qwen3.5-35B-A3B", "runTimeoutSeconds": 1500 }, "models": { "vllm/Qwen/Qwen3.5-35B-A3B": {}, "minimax/MiniMax-M2.7": { "alias": "Minimax" }, "proxy-101/auto": { "alias": "Router" }, "proxy-101/Qwen/Qwen3.5-35B-A3B": { "alias": "Router-Qwen3.5-35B-A3B" }, "minimax/MiniMax-M2.7-highspeed": {} }, "model": { "primary": "proxy-101/auto", "fallbacks": [ "vllm/Qwen/Qwen3.5-35B-A3B", "minimax/MiniMax-M2.7-highspeed", "proxy-101/Qwen/Qwen3.5-35B-A3B", "minimax/MiniMax-M2.7" ] }, "llm": { "idleTimeoutSeconds": 800 } }, "list": [ { "id": "main" }, { "id": "auto", "name": "auto", "subagents": { "model": "vllm/Qwen/Qwen3.5-35B-A3B" }, "workspace": "${HOME}/.openclaw/workspace-auto", "agentDir": "${HOME}/.openclaw/agents/auto/agent", "model": { "primary": "proxy-101/auto" } }, { "id": "intro-self", "name": "intro-self", "workspace": "/tmp/intro-self", "agentDir": "${HOME}/.openclaw/agents/intro-self/agent", "model": "proxy-101/auto" } ] }, "gateway": { "mode": "local", "auth": { "mode": "token", "token": "" }, "port": 18789, "bind": "loopback", "tailscale": { "mode": "off", "resetOnExit": false }, "controlUi": { "allowedOrigins": [ "http://localhost:18789", "http://127.0.0.1:18789", "http://localhost:7000", "http://127.0.0.1:7000" ], "allowInsecureAuth": true, "dangerouslyDisableDeviceAuth": true }, "nodes": { "denyCommands": [ "camera.snap", "camera.clip", "screen.record", "contacts.add", "calendar.add", "reminders.add", "sms.send", "sms.search" ] } }, "session": { "dmScope": "per-channel-peer" }, "tools": { "profile": "coding", "web": { "search": { "provider": "tavily", "enabled": true } } }, "models": { "mode": "merge", "providers": { "proxy-101": { "baseUrl": "http://localhost:8000/v1", "apiKey": "fake", "api": "openai-completions", "models": [ { "id": "Qwen/Qwen3.5-35B-A3B", "name": "Qwen/Qwen3.5-35B-A3B", "reasoning": false, "input": [ "text" ], "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }, "contextWindow": 128000, "maxTokens": 8192 }, { "id": "auto", "name": "auto", "reasoning": false, "input": [ "text" ], "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }, "contextWindow": 200000, "maxTokens": 8192 } ] }, "vllm": { "baseUrl": "http://localhost:8086/v1", "api": "openai-completions", "apiKey": "VLLM_API_KEY", "models": [ { "id": "Qwen/Qwen3.5-35B-A3B", "name": "Qwen/Qwen3.5-35B-A3B", "reasoning": false, "input": [ "text" ], "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }, "contextWindow": 90000, "maxTokens": 8192 } ] }, "minimax": { "baseUrl": "https://api.minimaxi.com/anthropic", "models": [ { "id": "MiniMax-M2.7", "name": "MiniMax M2.7", "reasoning": true, "input": [ "text", "image" ], "cost": { "input": 0.3, "output": 1.2, "cacheRead": 0.06, "cacheWrite": 0.375 }, "contextWindow": 204800, "maxTokens": 131072 } ], "api": "anthropic-messages", "apiKey": "${MINIMAX_API_KEY}", "authHeader": true } } }, "plugins": { "entries": { "tavily": { "enabled": true, "config": { "webSearch": { "apiKey": "${TAVILY_API_KEY}" } } }, "vllm": { "enabled": true }, "minimax": { "enabled": true } } }, "skills": { "entries": { "competitive_analysis_PDF_generator": { "enabled": true } } } } ``` Remember to put `MINIMAX_API_KEY` into `${HOME}/.openclaw/.env`. Do not use `~/` in `openclaw.json`, because it is not allowed. ### 3.3 Install Repository Skills into the OpenClaw Agent Directory Skill files in this repository cannot remain only in the repository. They must be copied into the workspace of the corresponding OpenClaw agent so that OpenClaw can load them. The most common target directory is: - `~/.openclaw/workspace/skills/` If you only need `competitive_analysis_PDF_generator`, copy it as follows: ```bash mkdir -p ~/.openclaw/workspace/skills cp -r ./skills/competitive_analysis_PDF_generator ~/.openclaw/workspace/skills/ ``` ### 3.4 Enable the Skill in OpenClaw Configuration After copying the skill directory, you also need to enable it in `openclaw.json`: ```json { "skills": { "entries": { "competitive_analysis_PDF_generator": { "enabled": true } } } } ``` This step tells OpenClaw: - This skill exists - The agent is allowed to load it at runtime After copying, restart the gateway: ```bash openclaw gateway restart ``` Verify whether the skill is available: ```bash openclaw tui # In tui: /reset # Then ask: "Can you use competitive_analysis_PDF_generator?" ``` ## 4. Set Up the UI Use Docker Compose to build and start the UI container: ```bash cd /ui/docker # Set the required environment variables. # VITE_AUTH_TOKEN should match gateway.auth.token in openclaw.json. export VITE_AUTH_TOKEN= export SERVER_HOST= # Build the UI image. docker compose -f build.yaml build # Start the UI container. docker compose -f compose.yaml up -d ``` By default, the UI is available at: ```text http://:7000 ``` ## 5. Test the Configuration Install `weasyprint`: ```bash sudo apt install weasyprint ``` After completing the setup steps above, verify the configuration as follows: 1. Open the UI in a browser: `http://:7000` 2. Enter the verification prompt: ```text Generate a competitive analysis report for Unitree Robotics G1 Basic and comparable products on the market. ``` Expected result: The UI should display a professional HTML/PDF report comparing the Unitree Robotics G1 Basic with other products, generated using the `competitive_analysis_PDF_generator` skill. ## 6. Use the Knowledgebase Skill If the Large Language Model (LLM) is not strong enough to use the knowledgebase skill automatically, add the following instruction to OpenClaw's `AGENTS.md`: ```text For any user question, query, summarization, overview, or comparison, you must use the knowledgebase skill! Do not answer questions by searching for files! ``` Insert the text into the "Tools" chapter in `$HOME/.openclaw/workspace/AGENTS.md`, for example: ```md ## Tools Skills provide your tools. When you need one, check its `SKILL.md`. Keep local notes (camera names, SSH details, voice preferences) in `TOOLS.md`. For any user question, query, summarization, overview, or comparison, you must use the knowledgebase skill! Do not answer questions by searching for files! ```