[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-vllm-openclaw-vsr-bridge":3,"mdc--mxq9ca-key":51,"related-repo-vllm-openclaw-vsr-bridge":532,"related-org-vllm-openclaw-vsr-bridge":541},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":46,"sourceUrl":49,"mdContent":50},"openclaw-vsr-bridge","integrate vLLM Semantic Router","Install vLLM Semantic Router in agent-safe mode, import supported OpenClaw model providers into canonical VSR config, and rewrite OpenClaw to target VSR.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"vllm","vLLM","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fvllm.png","vllm-project",[13,17,18,21],{"name":14,"slug":15,"type":16},"LLM","llm","tag",{"name":9,"slug":8,"type":16},{"name":19,"slug":20,"type":16},"Routing","routing",{"name":22,"slug":23,"type":16},"Agents","agents",4962,"https:\u002F\u002Fgithub.com\u002Fvllm-project\u002Fsemantic-router","2026-07-18T05:48:09.091161",null,753,[30,31,32,33,34,35,36,15,37,38,39,40,41,42,43,44,45,8],"ai-gateway","bert-classification","fine-tuning","golang","huggingface-candle","huggingface-transformers","kubernetes","llmrouter","mcp","mixture-of-models","openclaw","pii-detection","prompt-engineering","prompt-guard","rust","semantic-router",{"repoUrl":25,"stars":24,"forks":28,"topics":47,"description":48},[30,31,32,33,34,35,36,15,37,38,39,40,41,42,43,44,45,8],"Intelligent Mixture-of-Models Router for Efficient Heterogeneous LLMs Inference","https:\u002F\u002Fgithub.com\u002Fvllm-project\u002Fsemantic-router\u002Ftree\u002FHEAD\u002Fdashboard\u002Fbackend\u002Fskillpacks\u002Fopenclaw-vsr-bridge","---\nname: openclaw-vsr-bridge\ndescription: Install vLLM Semantic Router in agent-safe mode, import supported OpenClaw model providers into canonical VSR config, and rewrite OpenClaw to target VSR.\nuser-invocable: true\n---\n\n# OpenClaw VSR Bridge\n\n## When To Use\n\n- Use this skill when an OpenClaw agent should install VSR without auto-launching the dashboard.\n- Use this skill when an existing `openclaw.json` should be moved under VSR management.\n- Use this skill when you want the OpenClaw model base URL rewritten only after canonical `config.yaml` is written successfully.\n\n## Requirements\n\n- `curl`\n- `bash`\n- write access to the OpenClaw config path and the target VSR config path\n\n## Workflow\n\n1. Check whether VSR is already installed with `command -v vllm-sr`.\n2. If VSR is missing, run the supported installer in agent-safe mode:\n\n   ```bash\n   curl -fsSL https:\u002F\u002Fvllm-sr.ai\u002Finstall.sh | bash -s -- --mode cli --runtime skip --no-launch\n   ```\n\n3. Locate the OpenClaw config in this order unless the user already gave you a path:\n   - `$OPENCLAW_CONFIG_PATH`\n   - `.\u002Fopenclaw.json`\n   - `~\u002F.openclaw\u002Fopenclaw.json`\n4. Import the OpenClaw model providers into canonical VSR config:\n\n   ```bash\n   vllm-sr config import --from openclaw --source \u003Copenclaw.json> --target config.yaml\n   ```\n\n5. Do not pass `--force` unless the user explicitly approves overwriting existing backup files.\n6. After a successful import, report:\n   - the imported logical model names\n   - the canonical target config path\n   - the rewritten OpenClaw config path\n   - the rewritten OpenClaw base URL\n   - the backup file paths, if any\n7. Suggest the next validation commands:\n\n   ```bash\n   vllm-sr validate config.yaml\n   vllm-sr config router --config config.yaml\n   ```\n\n8. If the user wants runtime verification after validation, suggest:\n\n   ```bash\n   vllm-sr serve --config config.yaml\n   curl http:\u002F\u002F127.0.0.1:8899\u002Fv1\u002Fmodels\n   ```\n\n## Boundaries\n\n- Do not invent a second installer path. Use the supported installer above.\n- Do not rewrite OpenClaw before the VSR target config has been written successfully.\n- Do not import OpenClaw rooms, teams, browser settings, command settings, or memory history into VSR.\n",{"data":52,"body":54},{"name":4,"description":6,"user-invocable":53},true,{"type":55,"children":56},"root",[57,65,72,109,115,141,147,502,508,526],{"type":58,"tag":59,"props":60,"children":61},"element","h1",{"id":4},[62],{"type":63,"value":64},"text","OpenClaw VSR Bridge",{"type":58,"tag":66,"props":67,"children":69},"h2",{"id":68},"when-to-use",[70],{"type":63,"value":71},"When To Use",{"type":58,"tag":73,"props":74,"children":75},"ul",{},[76,82,96],{"type":58,"tag":77,"props":78,"children":79},"li",{},[80],{"type":63,"value":81},"Use this skill when an OpenClaw agent should install VSR without auto-launching the dashboard.",{"type":58,"tag":77,"props":83,"children":84},{},[85,87,94],{"type":63,"value":86},"Use this skill when an existing ",{"type":58,"tag":88,"props":89,"children":91},"code",{"className":90},[],[92],{"type":63,"value":93},"openclaw.json",{"type":63,"value":95}," should be moved under VSR management.",{"type":58,"tag":77,"props":97,"children":98},{},[99,101,107],{"type":63,"value":100},"Use this skill when you want the OpenClaw model base URL rewritten only after canonical ",{"type":58,"tag":88,"props":102,"children":104},{"className":103},[],[105],{"type":63,"value":106},"config.yaml",{"type":63,"value":108}," is written successfully.",{"type":58,"tag":66,"props":110,"children":112},{"id":111},"requirements",[113],{"type":63,"value":114},"Requirements",{"type":58,"tag":73,"props":116,"children":117},{},[118,127,136],{"type":58,"tag":77,"props":119,"children":120},{},[121],{"type":58,"tag":88,"props":122,"children":124},{"className":123},[],[125],{"type":63,"value":126},"curl",{"type":58,"tag":77,"props":128,"children":129},{},[130],{"type":58,"tag":88,"props":131,"children":133},{"className":132},[],[134],{"type":63,"value":135},"bash",{"type":58,"tag":77,"props":137,"children":138},{},[139],{"type":63,"value":140},"write access to the OpenClaw config path and the target VSR config path",{"type":58,"tag":66,"props":142,"children":144},{"id":143},"workflow",[145],{"type":63,"value":146},"Workflow",{"type":58,"tag":148,"props":149,"children":150},"ol",{},[151,164,247,282,358,371,404,458],{"type":58,"tag":77,"props":152,"children":153},{},[154,156,162],{"type":63,"value":155},"Check whether VSR is already installed with ",{"type":58,"tag":88,"props":157,"children":159},{"className":158},[],[160],{"type":63,"value":161},"command -v vllm-sr",{"type":63,"value":163},".",{"type":58,"tag":77,"props":165,"children":166},{},[167,169],{"type":63,"value":168},"If VSR is missing, run the supported installer in agent-safe mode:",{"type":58,"tag":170,"props":171,"children":175},"pre",{"className":172,"code":173,"language":135,"meta":174,"style":174},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -fsSL https:\u002F\u002Fvllm-sr.ai\u002Finstall.sh | bash -s -- --mode cli --runtime skip --no-launch\n","",[176],{"type":58,"tag":88,"props":177,"children":178},{"__ignoreMap":174},[179],{"type":58,"tag":180,"props":181,"children":184},"span",{"class":182,"line":183},"line",1,[185,190,196,201,207,212,217,222,227,232,237,242],{"type":58,"tag":180,"props":186,"children":188},{"style":187},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[189],{"type":63,"value":126},{"type":58,"tag":180,"props":191,"children":193},{"style":192},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[194],{"type":63,"value":195}," -fsSL",{"type":58,"tag":180,"props":197,"children":198},{"style":192},[199],{"type":63,"value":200}," https:\u002F\u002Fvllm-sr.ai\u002Finstall.sh",{"type":58,"tag":180,"props":202,"children":204},{"style":203},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[205],{"type":63,"value":206}," |",{"type":58,"tag":180,"props":208,"children":209},{"style":187},[210],{"type":63,"value":211}," bash",{"type":58,"tag":180,"props":213,"children":214},{"style":192},[215],{"type":63,"value":216}," -s",{"type":58,"tag":180,"props":218,"children":219},{"style":192},[220],{"type":63,"value":221}," --",{"type":58,"tag":180,"props":223,"children":224},{"style":192},[225],{"type":63,"value":226}," --mode",{"type":58,"tag":180,"props":228,"children":229},{"style":192},[230],{"type":63,"value":231}," cli",{"type":58,"tag":180,"props":233,"children":234},{"style":192},[235],{"type":63,"value":236}," --runtime",{"type":58,"tag":180,"props":238,"children":239},{"style":192},[240],{"type":63,"value":241}," skip",{"type":58,"tag":180,"props":243,"children":244},{"style":192},[245],{"type":63,"value":246}," --no-launch\n",{"type":58,"tag":77,"props":248,"children":249},{},[250,252],{"type":63,"value":251},"Locate the OpenClaw config in this order unless the user already gave you a path:",{"type":58,"tag":73,"props":253,"children":254},{},[255,264,273],{"type":58,"tag":77,"props":256,"children":257},{},[258],{"type":58,"tag":88,"props":259,"children":261},{"className":260},[],[262],{"type":63,"value":263},"$OPENCLAW_CONFIG_PATH",{"type":58,"tag":77,"props":265,"children":266},{},[267],{"type":58,"tag":88,"props":268,"children":270},{"className":269},[],[271],{"type":63,"value":272},".\u002Fopenclaw.json",{"type":58,"tag":77,"props":274,"children":275},{},[276],{"type":58,"tag":88,"props":277,"children":279},{"className":278},[],[280],{"type":63,"value":281},"~\u002F.openclaw\u002Fopenclaw.json",{"type":58,"tag":77,"props":283,"children":284},{},[285,287],{"type":63,"value":286},"Import the OpenClaw model providers into canonical VSR config:",{"type":58,"tag":170,"props":288,"children":290},{"className":172,"code":289,"language":135,"meta":174,"style":174},"vllm-sr config import --from openclaw --source \u003Copenclaw.json> --target config.yaml\n",[291],{"type":58,"tag":88,"props":292,"children":293},{"__ignoreMap":174},[294],{"type":58,"tag":180,"props":295,"children":296},{"class":182,"line":183},[297,302,307,312,317,322,327,332,337,343,348,353],{"type":58,"tag":180,"props":298,"children":299},{"style":187},[300],{"type":63,"value":301},"vllm-sr",{"type":58,"tag":180,"props":303,"children":304},{"style":192},[305],{"type":63,"value":306}," config",{"type":58,"tag":180,"props":308,"children":309},{"style":192},[310],{"type":63,"value":311}," import",{"type":58,"tag":180,"props":313,"children":314},{"style":192},[315],{"type":63,"value":316}," --from",{"type":58,"tag":180,"props":318,"children":319},{"style":192},[320],{"type":63,"value":321}," openclaw",{"type":58,"tag":180,"props":323,"children":324},{"style":192},[325],{"type":63,"value":326}," --source",{"type":58,"tag":180,"props":328,"children":329},{"style":203},[330],{"type":63,"value":331}," \u003C",{"type":58,"tag":180,"props":333,"children":334},{"style":192},[335],{"type":63,"value":336},"openclaw.jso",{"type":58,"tag":180,"props":338,"children":340},{"style":339},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[341],{"type":63,"value":342},"n",{"type":58,"tag":180,"props":344,"children":345},{"style":203},[346],{"type":63,"value":347},">",{"type":58,"tag":180,"props":349,"children":350},{"style":192},[351],{"type":63,"value":352}," --target",{"type":58,"tag":180,"props":354,"children":355},{"style":192},[356],{"type":63,"value":357}," config.yaml\n",{"type":58,"tag":77,"props":359,"children":360},{},[361,363,369],{"type":63,"value":362},"Do not pass ",{"type":58,"tag":88,"props":364,"children":366},{"className":365},[],[367],{"type":63,"value":368},"--force",{"type":63,"value":370}," unless the user explicitly approves overwriting existing backup files.",{"type":58,"tag":77,"props":372,"children":373},{},[374,376],{"type":63,"value":375},"After a successful import, report:",{"type":58,"tag":73,"props":377,"children":378},{},[379,384,389,394,399],{"type":58,"tag":77,"props":380,"children":381},{},[382],{"type":63,"value":383},"the imported logical model names",{"type":58,"tag":77,"props":385,"children":386},{},[387],{"type":63,"value":388},"the canonical target config path",{"type":58,"tag":77,"props":390,"children":391},{},[392],{"type":63,"value":393},"the rewritten OpenClaw config path",{"type":58,"tag":77,"props":395,"children":396},{},[397],{"type":63,"value":398},"the rewritten OpenClaw base URL",{"type":58,"tag":77,"props":400,"children":401},{},[402],{"type":63,"value":403},"the backup file paths, if any",{"type":58,"tag":77,"props":405,"children":406},{},[407,409],{"type":63,"value":408},"Suggest the next validation commands:",{"type":58,"tag":170,"props":410,"children":412},{"className":172,"code":411,"language":135,"meta":174,"style":174},"vllm-sr validate config.yaml\nvllm-sr config router --config config.yaml\n",[413],{"type":58,"tag":88,"props":414,"children":415},{"__ignoreMap":174},[416,432],{"type":58,"tag":180,"props":417,"children":418},{"class":182,"line":183},[419,423,428],{"type":58,"tag":180,"props":420,"children":421},{"style":187},[422],{"type":63,"value":301},{"type":58,"tag":180,"props":424,"children":425},{"style":192},[426],{"type":63,"value":427}," validate",{"type":58,"tag":180,"props":429,"children":430},{"style":192},[431],{"type":63,"value":357},{"type":58,"tag":180,"props":433,"children":435},{"class":182,"line":434},2,[436,440,444,449,454],{"type":58,"tag":180,"props":437,"children":438},{"style":187},[439],{"type":63,"value":301},{"type":58,"tag":180,"props":441,"children":442},{"style":192},[443],{"type":63,"value":306},{"type":58,"tag":180,"props":445,"children":446},{"style":192},[447],{"type":63,"value":448}," router",{"type":58,"tag":180,"props":450,"children":451},{"style":192},[452],{"type":63,"value":453}," --config",{"type":58,"tag":180,"props":455,"children":456},{"style":192},[457],{"type":63,"value":357},{"type":58,"tag":77,"props":459,"children":460},{},[461,463],{"type":63,"value":462},"If the user wants runtime verification after validation, suggest:",{"type":58,"tag":170,"props":464,"children":466},{"className":172,"code":465,"language":135,"meta":174,"style":174},"vllm-sr serve --config config.yaml\ncurl http:\u002F\u002F127.0.0.1:8899\u002Fv1\u002Fmodels\n",[467],{"type":58,"tag":88,"props":468,"children":469},{"__ignoreMap":174},[470,490],{"type":58,"tag":180,"props":471,"children":472},{"class":182,"line":183},[473,477,482,486],{"type":58,"tag":180,"props":474,"children":475},{"style":187},[476],{"type":63,"value":301},{"type":58,"tag":180,"props":478,"children":479},{"style":192},[480],{"type":63,"value":481}," serve",{"type":58,"tag":180,"props":483,"children":484},{"style":192},[485],{"type":63,"value":453},{"type":58,"tag":180,"props":487,"children":488},{"style":192},[489],{"type":63,"value":357},{"type":58,"tag":180,"props":491,"children":492},{"class":182,"line":434},[493,497],{"type":58,"tag":180,"props":494,"children":495},{"style":187},[496],{"type":63,"value":126},{"type":58,"tag":180,"props":498,"children":499},{"style":192},[500],{"type":63,"value":501}," http:\u002F\u002F127.0.0.1:8899\u002Fv1\u002Fmodels\n",{"type":58,"tag":66,"props":503,"children":505},{"id":504},"boundaries",[506],{"type":63,"value":507},"Boundaries",{"type":58,"tag":73,"props":509,"children":510},{},[511,516,521],{"type":58,"tag":77,"props":512,"children":513},{},[514],{"type":63,"value":515},"Do not invent a second installer path. Use the supported installer above.",{"type":58,"tag":77,"props":517,"children":518},{},[519],{"type":63,"value":520},"Do not rewrite OpenClaw before the VSR target config has been written successfully.",{"type":58,"tag":77,"props":522,"children":523},{},[524],{"type":63,"value":525},"Do not import OpenClaw rooms, teams, browser settings, command settings, or memory history into VSR.",{"type":58,"tag":527,"props":528,"children":529},"style",{},[530],{"type":63,"value":531},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":533,"total":183},[534],{"slug":4,"name":4,"fn":5,"description":6,"org":535,"tags":536,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[537,538,539,540],{"name":22,"slug":23,"type":16},{"name":14,"slug":15,"type":16},{"name":19,"slug":20,"type":16},{"name":9,"slug":8,"type":16},{"items":542,"total":633},[543,550,567,581,596,611,622],{"slug":4,"name":4,"fn":5,"description":6,"org":544,"tags":545,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[546,547,548,549],{"name":22,"slug":23,"type":16},{"name":14,"slug":15,"type":16},{"name":19,"slug":20,"type":16},{"name":9,"slug":8,"type":16},{"slug":551,"name":551,"fn":552,"description":553,"org":554,"tags":555,"stars":564,"repoUrl":565,"updatedAt":566},"vllm-bench-random-synthetic","run vLLM synthetic performance benchmarks","Run vLLM performance benchmark using synthetic random data to measure throughput, TTFT (Time to First Token), TPOT (Time per Output Token), and other key performance metrics. Use when the user wants to quickly test vLLM serving performance without downloading external datasets.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[556,559,560,563],{"name":557,"slug":558,"type":16},"Benchmarking","benchmarking",{"name":14,"slug":15,"type":16},{"name":561,"slug":562,"type":16},"Performance","performance",{"name":9,"slug":8,"type":16},88,"https:\u002F\u002Fgithub.com\u002Fvllm-project\u002Fvllm-skills","2026-07-18T05:46:59.036927",{"slug":568,"name":568,"fn":569,"description":570,"org":571,"tags":572,"stars":564,"repoUrl":565,"updatedAt":580},"vllm-bench-serve","benchmark LLM serving endpoints","Benchmark vLLM or OpenAI-compatible serving endpoints using vllm bench serve. Supports multiple datasets (random, sharegpt, sonnet, HF), backends (openai, openai-chat, vllm-pooling, embeddings), throughput\u002Flatency testing with request-rate control, and result saving. Use when benchmarking LLM serving performance, measuring TTFT\u002FTPOT, or load testing inference APIs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[573,576,577,578,579],{"name":574,"slug":575,"type":16},"API Development","api-development",{"name":557,"slug":558,"type":16},{"name":14,"slug":15,"type":16},{"name":561,"slug":562,"type":16},{"name":9,"slug":8,"type":16},"2026-07-18T05:47:02.283164",{"slug":582,"name":582,"fn":583,"description":584,"org":585,"tags":586,"stars":564,"repoUrl":565,"updatedAt":595},"vllm-deploy-docker","deploy vLLM using Docker containers","Deploy vLLM using Docker (pre-built images or build-from-source) with NVIDIA GPU support and run the OpenAI-compatible server.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[587,590,593,594],{"name":588,"slug":589,"type":16},"Deployment","deployment",{"name":591,"slug":592,"type":16},"Docker","docker",{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},"2026-07-18T05:47:01.814419",{"slug":597,"name":597,"fn":598,"description":599,"org":600,"tags":601,"stars":564,"repoUrl":565,"updatedAt":610},"vllm-deploy-k8s","deploy vLLM to Kubernetes clusters","Deploy vLLM to Kubernetes (K8s) with GPU support, health probes, and OpenAI-compatible API endpoint. Use this skill whenever the user wants to deploy, run, or serve vLLM on a Kubernetes cluster, including creating deployments, services, checking existing deployments, or managing vLLM on K8s.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[602,605,606,608,609],{"name":603,"slug":604,"type":16},"AI Infrastructure","ai-infrastructure",{"name":588,"slug":589,"type":16},{"name":607,"slug":36,"type":16},"Kubernetes",{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},"2026-07-18T05:46:58.556637",{"slug":612,"name":612,"fn":613,"description":614,"org":615,"tags":616,"stars":564,"repoUrl":565,"updatedAt":621},"vllm-deploy-simple","deploy and test vLLM servers","Quick install and deploy vLLM, start serving with a simple LLM, and test OpenAI API.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[617,618,619,620],{"name":574,"slug":575,"type":16},{"name":588,"slug":589,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},"2026-07-18T05:47:01.359655",{"slug":623,"name":623,"fn":624,"description":625,"org":626,"tags":627,"stars":564,"repoUrl":565,"updatedAt":632},"vllm-prefix-cache-bench","benchmark vLLM prefix caching efficiency","This is a skill for benchmarking the efficiency of automatic prefix caching in vLLM using fixed prompts, real-world datasets, or synthetic prefix\u002Fsuffix patterns. Use when the user asks to benchmark prefix caching hit rate, caching efficiency, or repeated-prompt performance in vLLM.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[628,629,630,631],{"name":557,"slug":558,"type":16},{"name":14,"slug":15,"type":16},{"name":561,"slug":562,"type":16},{"name":9,"slug":8,"type":16},"2026-07-18T05:48:07.243092",7]