Web Search

Give AI Coding Agents Free Unlimited Web Search with Prism

By Kavin M KPublished Updated 8 min read

Quick answer
Open the SearXNG tab in Prism's admin UI and click Start. Prism bootstraps an isolated Python environment on first run and serves a JSON search API on http://127.0.0.1:8888/search. Agents keep calling their own web search tool; Prism intercepts the call and answers it locally.

AI coding agents are far more useful with web search. Looking up a library's current API, finding the exact answer to a stack trace, or checking a breaking change turns an agent from a closed-book test into an open-book one.

The problem is cost and reliability. Commercial search APIs bill per query and cap monthly volume. Scraping a search engine directly gets an IP rate-limited quickly. Free tiers throttle hard enough that an agent which retries a few times burns through the allowance in a single session.

Prism answers this by shipping a managed SearXNG instance: free, unlimited, local web search with no API key and no sign-up. And because Prism sits between your agent and the model, it can answer the agent's search tool calls itself — you do not have to point anything at a new endpoint.

How it actually works

Agents do not know SearXNG exists. When an agent calls its web search tool, Prism recognises the call, runs the search locally, and streams the result back as ordinary tool output. The agent sees a normal tool result and carries on.

  Agent ── web_search tool call ──▶ Proxy
                                     │
                                     ├─ intercept the call
                                     ├─ query SearXNG (or Exa/Tavily/Brave/Serper)
                                     └─ stream results back inline as tool output
                                     │
  Agent ◀── tool result ─────────────┘

Interception covers web_search and web_fetch on the Anthropic Messages surface, and web_search and x_search on the Responses surface. It is skipped in exactly two places: Codex OAuth accounts, and any model marked api: "responses". On those routes the agent's own search tool is used and Prism stays out of the way.

Why SearXNG

SearXNG is an open-source metasearch engine. Rather than keeping its own index, it forwards a query to many engines — Google, Bing, DuckDuckGo, Brave, Yahoo and others — then aggregates and de-duplicates the results. Requests originate from your machine and are spread across engines, so no single provider sees enough traffic to flag.

  query → http://127.0.0.1:8888/search?q=...&format=json
            │
            ▼  fans out, then merges
  Google · Bing · DuckDuckGo · Brave · Yahoo · ...

The result is one local endpoint an agent can hit as often as it needs, returning JSON that is easy to feed into a context window.

Start it

1

Open the SearXNG tab

Go to http://127.0.0.1:8765/admin and select SearXNG. You can also use the tray menu's Start SearXNG item.
2

Click Start

Prism boots the managed instance and it begins listening on 127.0.0.1:8888.
3

Let the first-run bootstrap finish

The first start prepares an isolated runtime, which is a one-time download. Later starts are immediate.
4

Turn on auto-start

Enable auto-start so search comes up with Prism instead of being started by hand.

Test the endpoint

curl "http://127.0.0.1:8888/search?q=nextjs+static+export+dynamic+routes&format=json"

# { "results": [ { "url": "...", "title": "...", "content": "..." } ] }

format=json returns machine-readable results instead of an HTML page. It needs no headers or authentication, because the instance only listens on loopback.

Nobody has to install Python

SearXNG is a Python application, but Prism handles it. It creates an isolated virtual environment and installs the requirements into it — roughly an 80 MB download on first run. If the machine has no Python 3.11 or newer, Prism downloads a pinned standalone interpreter, so search works without a system Python at all.

First launch takes a minute or two
That is the one-time bootstrap. Subsequent starts are nearly instant, and deleting the searxngfolder under Prism's config directory resets it cleanly.

When you want a paid provider

SearXNG is the free default, but it depends on public engines that can throttle or change. Prism also supports Exa, Tavily, Brave, Serper and any custom REST endpoint, all behind one ordered fallback chain — so a provider that fails or returns nothing is skipped automatically.

{
  "search": {
    "active": "searxng",
    "fallback": ["exa", "tavily"],
    "max_per_turn": 5,
    "timeout_ms": 8000,
    "default_num_results": 5
  }
}

Keys can live in config or in EXA_API_KEY, TAVILY_API_KEY, BRAVE_SEARCH_API_KEY or SERPER_API_KEY. Results per query are capped at 10.

Free versus paid search

Cost

Commercial APIs bill per query. The managed SearXNG instance is free and uncapped.

Rate limits

Free search tiers throttle quickly. Prism imposes only max_per_turn per agent turn, which you control.

Reliability

Paid APIs are more consistent. The fallback chain lets you keep SearXNG first for volume and a paid provider second for the queries that matter.

Get started

Install Prism, open the admin UI, and click Start on the SearXNG tab. Your agents get free, unlimited web search without a single line of configuration in the agent itself.

Download Prism

Reference

Every claim on this page is checked against the Prism source, and the reference documentation is where those details live in full.

Try it yourself

Prism is a free, MIT-licensed local proxy for AI coding agents. Install it, point one agent at http://127.0.0.1:11434, and the rest of this post applies as written.