brave-shim
/install brave-shim
brave-shim
Local proxy that makes OpenClaw's Brave Search provider route to DuckDuckGo for free, without any API key.
How it works
- A Python FastAPI service (brave_shim) runs locally on
http://127.0.0.1:8000 - It implements the Brave Search API format but fetches results from DuckDuckGo via
ddgs - OpenClaw's built-in Brave provider is redirected to this local service
Setup
1. Install brave_shim
# Clone the repo
git clone https://github.com/asoraruf/brave_shim \x3Cclone-path>
# Create venv and install dependencies
python -m venv \x3Cclone-path>/venv
# Windows:
\x3Cclone-path>\venv\Scripts\activate
pip install fastapi uvicorn ddgs pyyaml
# Linux/Mac:
source \x3Cclone-path>/venv/bin/activate
pip install fastapi uvicorn ddgs pyyaml
2. Patch OpenClaw Brave provider URL
The Brave provider in OpenClaw's bundled JS calls https://api.search.brave.com. Replace it with http://127.0.0.1:8000:
import subprocess, re, os
dist_dir = r"\x3Copenclaw-dist>"
pattern = r'(const BRAVE_SEARCH_ENDPOINT|const BRAVE_LLM_CONTEXT_ENDPOINT) = "[^"]+"'
replacement = {
"const BRAVE_SEARCH_ENDPOINT": 'const BRAVE_SEARCH_ENDPOINT = "http://127.0.0.1:8000/res/v1/web/search"',
"const BRAVE_LLM_CONTEXT_ENDPOINT": 'const BRAVE_LLM_CONTEXT_ENDPOINT = "http://127.0.0.1:8000/res/v1/llm/context"',
}
for fname in os.listdir(dist_dir):
if fname.startswith("brave-web-search-provider") and fname.endswith(".js"):
fpath = os.path.join(dist_dir, fname)
content = open(fpath).read()
new_content = re.sub(pattern, lambda m: replacement.get(m.group(1), m.group(0)), content)
open(fpath, "w").write(new_content)
3. Configure OpenClaw
# Enable brave plugin (disabled by default)
openclaw config set plugins.entries.brave.enabled true
# Set Brave as search provider
openclaw config set tools.web.search.provider brave
# Restart gateway
openclaw gateway restart
4. Start shim service
# From brave_shim directory
.\venv\Scripts\python brave_shim.py
# Keep running in background
5. Verify
curl "http://127.0.0.1:8000/res/v1/web/search?q=hello+world"
# Should return JSON with web results
openclaw
# Then test: web_search { query: "test" }
Scripts
scripts/setup_brave_shim.py— Automated install: clone, venv, pip installscripts/patch_openclaw.py— Patch OpenClaw dist JS files to redirect Brave APIscripts/start_shim.py— Start brave_shim service
Troubleshooting
"fetch failed" after setup:
- Check shim is running:
Invoke-WebRequest http://127.0.0.1:8000/res/v1/web/search?q=test - If shim is DOWN: re-run
python brave_shim.py - If NO_PROXY blocks localhost: remove from env or set
NO_PROXY=localhost,127.0.0.1
"missing_brave_api_key" error:
plugins.entries.braveneedsenabled: true— runopenclaw config set plugins.entries.brave.enabled true
"missing_gemini_api_key" instead:
- Brave plugin still not enabled — check
openclaw doctorfor disabled plugin warnings
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install brave-shim - 安装完成后,直接呼叫该 Skill 的名称或使用
/brave-shim触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
brave-shim 是什么?
Set up brave_shim as a free local proxy for OpenClaw web_search, routing Brave API requests to DuckDuckGo. Use when user asks to enable free web search, conf... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 82 次。
如何安装 brave-shim?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install brave-shim」即可一键安装,无需额外配置。
brave-shim 是免费的吗?
是的,brave-shim 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
brave-shim 支持哪些平台?
brave-shim 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 brave-shim?
由 weare20202020(@weare20202020)开发并维护,当前版本 v1.0.0。