Exa search provider for the dsh-web seam: the web_search tool sends queries to Exa's /search API and returns the results as sources, in dsh web, dsh-TUI and headless runs. Needs an Exa API key (EXA_API_KEY, the credential store or a key file read on every search). web_fetch is unchanged and there is no UI.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:jakehemmerle/dsh-web-search-exa
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
An Exa search provider for DeepSeek Harness. It registers the provider exa
on the @deepseek-ai/dsh-web seam, so the web_search tool sends its queries to Exa's
/search API and returns the results as sources. It works the same from dsh web, dsh-TUI and
headless runs. web_fetch is unchanged. The plugin has no UI of its own.
Install
The package is a dsh bundle. Use the profile you run (web, headless, …):
dsh plugin --profile web add github:jakehemmerle/dsh-web-search-exa#v0.3.0-rc.1
export EXA_API_KEY=… # in the environment that launches dsh
The bundle's cordis.patch.yml pins the web seam's searchProvider to
exa and adds the web-search-exa row. Restart dsh web after installing.
This release is qualified against DSH 0.2.1-rc.2; its peer pin is exact, so other DSH
versions need dsh plugin allow-version or a newer release.
Configuration
Override the row in your profile's own cordis.patch.yml. A patch replaces the whole row
config, so restate any field you keep.
| Field | Default | Meaning |
|---|---|---|
apiKeyEnv |
EXA_API_KEY |
Key name: looked up in dsh's credential store, then (after apiKeyFile) in the environment |
apiKeyFile |
(unset) | File holding the key (raw or dotenv), read on every search, so a rotated key needs no restart; it wins over the environment |
apiKey |
(unset) | Literal key, used before any other source (avoid) |
baseURL |
https://api.exa.ai |
Exa API origin |
type |
auto |
Exa search type |
highlightChars |
600 |
Highlight length per result |
timeoutMs |
30000 |
Request timeout |
- id: web-search-exa
config:
apiKeyFile: /run/secrets/exa
Development
nix flake check runs the fast suites against the pinned dsh; nix run .#e2e runs the real
dsh web (Playwright), dsh-TUI (private tmux) and headless suites against a local mock Exa.
See SPEC.md, TESTING.md and RELEASING.md.
License: MIT.
Links
More in this category
Tencent/BrowserSkill#dsh-plugin-browserskill★ 9929
BrowserSkill bridge for controlling visible Chrome and Edge Agent Windows from DeepSeek Harness, with native browser tools, accessibility and VOM observations, screenshots, owned multi-session control, and a live Web UI overlay.
omdsh-dev/dsh-browser#packages/browser/bridge-browser★ 966
Chrome sidebar extension that lets DSH operate your browser directly, no vision capabilities required.
liustack/modsearch★ 911
Web search bridge for text-only agents: ask the web or X, get structured JSON evidence (search, fetch, citations).
DDDMUC/dsh-free-search★ 817
Free, keyless web search for DSH: 7 engines (DuckDuckGo/Bing/SearXNG free + Exa/Perplexity/DeepSeek paid), auto-failover, settings-page UI with API key inputs and official links, web_fetch, and an engine test tool.
Fisfzy/dsh-ego-browser★ 395
Drive a real Chrome/Chromium browser from DeepSeek Harness with 35 structured tools for navigation, snapshots, clicks, forms, JavaScript/CDP, screenshots, downloads and tabs; a live sidebar mirrors the page and accepts mouse and keyboard input. It ships a managed CDP runtime, keeps login state across calls, and can import cookies from your everyday Chrome through a companion extension.
wqty123/dsh-browser★ 162
Shared real browser for DSH: a native Electron window the human can watch and take over, driven by the agent over CDP with 20 browser_* tools (open/snapshot/execute/fill/screenshot/download/auth), per-task session isolation, cookie persistence, CAPTCHA detection; self-hosts on plain dsh web without a desktop shell.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.