Back to home@YePpHa

dsh-web-search-kagi

Kagi Search v1 provider for the DeepSeek Harness.

Stars
0
Language
JavaScript
Created
Aug 20, 2026
Updated
Aug 20, 2026
GitHub repo

Introduction

dsh-web-search-kagi

Kagi Search v1 provider for the DeepSeek Harness web capability seam (ctx.web).

Published on npm as dsh-web-search-kagi.

Registers a WebSearchProvider with id kagi that POSTs to Kagi's https://kagi.com/api/v1/search with bearer auth and maps data.search[] onto the seam's portable citation shape (url, title, snippet, publishedAt).

Install

Add the package to the profile that runs the web app:

dsh plugin --profile web add dsh-web-search-kagi

This writes dsh-web-search-kagi to the profile's package.json and installs it. Without the dsh CLI, run pnpm add dsh-web-search-kagi from the profile directory instead.

Then compose it in $DSH_HOME/profiles/web/cordis.patch.yml:

- insert:
    - id: web-search-kagi
      name: 'dsh-web-search-kagi'

- id: web
  config:
    searchProvider: kagi

- id: web-search-deepseek
  disabled: true

Restart the harness.

API key

The provider reads the key from the credentials service under the KAGI_SEARCH_API_KEY reference. Put it in $DSH_HOME/.credentials.yaml:

KAGI_SEARCH_API_KEY: your-kagi-api-key

You can also set it later in the web UI at Settings → Plugins → Plugin configuration; the card writes the same credential. Get a key from Kagi.

Config

All fields optional:

FieldDefaultNotes
baseURLhttps://kagi.com/api/v1Kagi Search API v1 base.
limit10Fallback result limit, 1 to 1024.
safeSearchtrueRequests Kagi safe_search.

Settings UI

Since DeepSeek Harness v0.1.0-rc.7 the plugin's settings show in the web UI at Settings → Plugins → Plugin configuration. The package registers the web-search-kagi settings namespace on the Host (installSettingsSection) and ships a dsh.client browser bundle (lib/client.js) that renders a card for it. No cordis.patch.yml edit is needed to change these values after install.

The card edits the API key, the endpoint (baseURL), the result limit (limit), and the safe search toggle (safeSearch). The key field writes the KAGI_SEARCH_API_KEY credential and never shows the stored value; leave it blank to keep the current key.

Edits are held until you press Save. Each write carries the revision it read, and overridden fields show a Reset to default button. The layering is unchanged: schema defaults, then the composition entry config, then the user document. The config: block in cordis.patch.yml stays the deployment's base layer.

Config in lib/index.js and the card's field list describe the same fields. The card mirrors the schema defaults for reset previews, so keep them in sync when you add or change a field.