Skip to main content
Rikka includes a built-in web search capability that lets any AI model access live information from the web. When you enable web search before sending a message, Rikka automatically calls your configured search service, retrieves relevant results, and injects them into the conversation context before the model generates its reply.

Enabling Web Search for a Message

The web search toggle lives in the input toolbar — the row of icons just above the text field.
1

Tap the search toggle

Tap the globe or search icon in the toolbar to enable web search. The icon highlights to indicate it is active.
2

Type your message

Write your question or prompt as normal. You do not need to phrase it differently — Rikka extracts the search query automatically.
3

Send the message

Tap send. Rikka calls the search service, retrieves results, and injects them as context before asking the model to respond. You will see a brief processing indicator while the search is in progress.
4

Review the cited sources

The assistant’s reply includes references to the search results. Tap any linked URL to open it in your browser.
Web search is powered by a tool call injected into the conversation. The model decides when to invoke the search_web tool based on your prompt. If the model determines that search is unnecessary for a given question, it may skip the web call and answer from its training data.

Supported Search Services

Rikka supports a wide range of search providers. Configure one or more and select which one to use as the active service.
ServiceNotes
BingUses the Microsoft Bing Search API. No additional configuration required beyond an API key.
BravePrivacy-focused search via the Brave Search API.
RikkaHubRikka’s own search API. Requires a RikkaHub API key and supports configurable search depth and AI-generated answers.
SearXNGSelf-hosted meta-search engine. Provide your instance URL, optional credentials, and preferred search engines.
Bocha (博查)Chinese-language search service with optional AI-generated summaries.
Metaso (秘塔)Chinese AI-powered search service.

Configuring a Search Service

1

Open Settings

Tap the Settings gear icon in the history drawer (bottom-right of the drawer action row).
2

Navigate to Search

Select Search from the settings list.
3

Add a service

Tap Add and choose a service from the list. Each service shows a description and a link to obtain an API key where required.
4

Enter credentials

Fill in the API key and any service-specific options (depth, language, model, custom URL, etc.).
5

Set as active

If you have multiple services configured, tap the one you want to use to select it as the active search service. The active service is shown in the search toggle tooltip in the chat input toolbar.

Common Configuration Options

Different services expose different settings, but you will commonly see:
OptionDescription
API KeyYour authentication key from the provider. Some services (e.g., Bing, SearXNG) may work without one or use a different auth method.
Result countHow many search results to fetch and inject into context. More results give the model more information but consume more tokens.
DepthFor services like Tavily and LinkUp, controls whether to perform a shallow or deep crawl of results.
LanguageRestricts results to a specific language. Useful for SearXNG and some other services.
Include / exclude domainsAvailable on select services to whitelist or blacklist specific websites.
Safe searchEnables content filtering where supported.

How Search Results Are Injected

When you send a message with web search enabled, Rikka follows this flow:
  1. The search_web tool is registered with the model alongside your message.
  2. If the model decides to search, it emits a tool call with a query parameter.
  3. Rikka calls the active search service with that query and the configured result count.
  4. The results — including titles, URLs, and text snippets — are returned to the model as tool output.
  5. Some services also support a scrape_web tool call that lets the model fetch the full content of individual pages.
  6. The model integrates the results into its final response.
The search step happens silently in the background. A processing status message appears briefly in the chat list while Rikka is fetching results. The tool call and its output are visible in the chain-of-thought section if your model exposes reasoning steps.

The Dedicated Search Page

In addition to per-message web search, Rikka has a full-screen Search page for research-oriented sessions. Open the history drawer and tap the Search icon (magnifying glass) in the drawer actions row. The Search page provides:
  • A persistent search bar that lets you type a query and retrieve web results directly.
  • Result cards showing the title, a text snippet, and the source URL.
  • Tap any result card to open that URL or use it as context in a new chat.
Use the Search page when you want to browse and compare multiple results before handing them off to the AI. It gives you more control than the automatic in-conversation search mode.

Custom JS Search Service

If none of the built-in services fit your needs, use the Custom JS option to write your own search logic.
// Implement search(query, resultSize) function
// Use fetch(url, options?) for HTTP requests
// fetch() returns { status, ok, text(), json() }
// Return { items: [{ title, url, text }], answer?: string }

function search(query, resultSize) {
  const encoded = encodeURIComponent(query);
  const res = fetch("https://example.com/search?q=" + encoded + "&limit=" + resultSize);
  const data = res.json();
  return {
    items: data.results.map(function(r) {
      return { title: r.title, url: r.url, text: r.snippet };
    })
  };
}
You can also provide an optional scrape(urls) function to implement custom page extraction. Rikka’s sandboxed environment provides a synchronous fetch() helper — no async/await is needed.
Custom JS scripts run inside a restricted sandbox. Network access via fetch() is available, but the script cannot access device storage, Android APIs, or any Rikka internals.