Something went wrong. Try again.
ATProto-based AI Assistant Chat interface.
Something went wrong. Try again.
README.md
Web search #
Adds a web_search tool. Returns a title, URL, and snippet for each result. Every result is cited under the reply.
Configuration #
Add the plugin under Admin > Plugins and fill in its options. The API key is stored encrypted.
| Option | Default | Meaning |
|---|---|---|
engine |
Required | The site-wide engine. See Engines. |
apiKey |
The site-wide engine's key. Required for engines that need one. | |
baseURL |
The site-wide SearXNG instance. Required for SearXNG. | |
adminEngineRoles |
[user] |
List of roles allowed to use the admin-configured search engine. |
enabledByDefault |
false |
Whether search is on for users who haven't switched it themselves. |
userToggle |
true |
Whether users can switch search on and off in their settings. |
userEngines |
true |
Whether users can pick their own engine and key. Set to false to use the site-wide engine for everyone. |
maxResults |
5 |
Results per search, from 1 to 20. |
Engines #
| Engine | engine |
Needs | Notes |
|---|---|---|---|
| Tavily | tavily |
apiKey |
Currently offers 1,000 free searches a month. Sign up at tavily.com. |
| Brave | brave |
apiKey |
Currently offers $5 credit per month / roughly 1,000 searches. Signup and more information on Brave Search API. |
| SearXNG | searxng |
baseURL |
Free / self-hosted. Instance must allow JSON results: add json to search.formats in its settings.yml. |
| DuckDuckGo | duckduckgo |
Nothing | Scrapes DuckDuckGo's HTML results, as there's currently no public search API available. |
| Kagi | kagi |
apiKey |
Requires an API account. More info on their API page. |
User settings #
If userEngines is enables end users can configure their own search engine in Setting => Plugins:
defaultuses the admin-configured engine.- Any other engine uses the user's own key, or base URL for SearXNG.
Adding an engine #
Add a file under src/engines/ that builds the request and parses the response, and add it to the list in src/engines/index.ts. The option and settings schemas, startup checks, and settings fields all come from that list. Shared code in src/search.ts handles sending the request, errors, timeouts, and cleaning up results. See src/engines/brave.ts for a small example.