firecrawl/dsh-firecrawl
dsh-firecrawl
Firecrawl-backed web_search and web_fetch providers for the DeepSeek Harness web capability seam (ctx.web)
Install
npx -y @deepseek-ai/dsh plugin --profile web add @firecrawl/dsh-firecrawlRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-firecrawl)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from firecrawl/dsh-firecrawl, cleaned of badges and images.
Firecrawl for DeepSeek Harness
This plugin points DeepSeek Harness's built-in web_search and web_fetch
tools at Firecrawl. It adds no new tools — the model
keeps asking for a query or a URL exactly as before, and Firecrawl answers.
It supports @deepseek-ai/[email protected] on Node.js ^22.19.0 || >=24.0.0.
DeepSeek Harness is still a developer preview, so later versions may need a
plugin update.
Why fetch, and not just search
The base Harness bundle ships web_fetch disabled and mounts no fetch
provider. The reason is in its own config comments: the only fetch backend is a
local HTTP client that "defers SSRF protection and the model would choose the
request target." Turning it on points a model-chosen URL at whatever your
machine can reach, including your private network.
Firecrawl retrieves from its own infrastructure. The harness process never
opens the model-chosen connection — it POSTs a URL to an API and gets markdown
back. That is a different risk decision from enabling the local provider, which
is why this plugin enables web_fetch where the base bundle does not. You also
get JS rendering, anti-bot handling, and PDF parsing, none of which the local
provider does.
Still worth knowing: Firecrawl can reach any public URL the model asks for.
It cannot reach your private network, but it can fetch pages you did not
choose. Leave web_fetch off if that is not acceptable for your deployment
(see Optional settings).
Before you start
You will need:
- pnpm 10 or newer;
- a Firecrawl API key; and
- a model provider already configured in DeepSeek Harness.
You do not need to install dsh globally — the commands below run the
supported version through npx.
Install
First, make your Firecrawl API key available in the terminal where you will run Harness:
export FIRECRAWL_API_KEY="fc-your-key"
Then install the plugin into the web profile:
npx --yes @deepseek-ai/[email protected] \
plugin --profile web add @firecrawl/dsh-firecrawl
Stop any running Harness process, then start it again:
npx --yes @deepseek-ai/[email protected] web
Installing from Git instead
The published package ships lib/ prebuilt, so it installs with no extra
flags. A Git install does not — it has to run this package's prepare script
to build, and pnpm 11 blocks build scripts for Git dependencies until you name
the dependency exactly.
--allow-build=@firecrawl/dsh-firecrawl is not sufficient: pnpm wants the fully
resolved Git key, including the commit SHA. Run the install once to have pnpm
print that key:
npx --yes @deepseek-ai/[email protected] \
plugin --profile web add "github:firecrawl/dsh-firecrawl#main"
It fails with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED and prints the exact line
to add under allowBuilds in ~/.dsh/profiles/web/pnpm-workspace.yaml:
allowBuilds:
"@firecrawl/dsh-firecrawl@git+https://github.com/firecrawl/dsh-firecrawl.git#<sha>": true
Add it, re-run the same command, and it succeeds. Note the key is SHA-pinned, so it changes every time you update — which is why the npm install above is the recommended path.
Check that it worked
Inspect the composed profile:
npx --yes @deepseek-ai/[email protected] \
--profile web --dump-config | \
grep -E 'searchProvider: firecrawl|fetchProvider: firecrawl|@firecrawl/dsh-firecrawl'
…
