Web Search
Sparky provides web search across all LLM providers through a lightweight side-call architecture. When the model needs to search, a cheap, fast model performs the search and returns only titles and URLs — keeping context usage minimal and predictable.
How It Works
When the model calls the app_web_search tool, Sparky:
- Picks a search provider — a cheap LLM with built-in web search capability
- Runs a side-call — sends the query to the search model, which performs the search and returns a list of titles and URLs
- Returns results — the main model receives the search results and can then use
app_web_readto fetch specific pages
This design keeps the main conversation context clean. Only titles and URLs are injected (~50 tokens per result), not raw page content. The model decides which pages to read in full.
Provider Priority
Sparky automatically selects the best available search provider:
- Default connection — if your default LLM connection supports search, it's used first
- Other connections — falls through remaining connections in order
- DuckDuckGo — fallback when no LLM search provider is available
| Provider | Search Model | Search Method |
|---|---|---|
| Anthropic | claude-haiku-4-5 | Native web search tool |
| Google Gemini | gemini-2.5-flash | Google Search grounding |
| Google AI Studio | gemini-2.5-flash | Google Search grounding |
| OpenAI (API key) | gpt-4o-mini | Web search tool |
| DuckDuckGo | — | DDG Lite (fallback) |
The search model is always the cheapest available option — it only needs to perform a search and list results. Your main conversation uses whatever model you've selected.
Search Availability
The app_web_search tool is always available regardless of your provider or permission mode. Any model can decide to search when it needs current information.
DuckDuckGo Fallback
When no LLM provider with search capability is connected (e.g., only Ollama or Mistral), Sparky falls back to DuckDuckGo Lite. This works but has limitations:
- Rate limiting — DDG Lite throttles frequent searches
- Slower — no grounding or native search integration
- Coverage — results depend on DDG Lite's index
Custom Search via Connected Services
You can also connect a dedicated search API as a service connection. For example, connecting Brave Search gives the model access to a high-quality search API without DDG rate limits.
Once connected, the model can call the search service via svc.describe and svc.call, just like any other connected service.
Summary
| Provider | Search Model | Fallback | Cost |
|---|---|---|---|
| Anthropic | Haiku 4.5 | DDG | Low (Haiku pricing) |
| Google Gemini | Flash | DDG | Free |
| Google AI Studio | Flash | DDG | Free tier available |
| OpenAI (API) | GPT-4o Mini | DDG | Low |
| GitHub Copilot | — | DDG | Free |
| Mistral | — | DDG | Free |
| Ollama | — | DDG | Free |
| Any (via service) | — | Connected API | Paid |