Search providers, first-class (v1.15.0 to v1.15.1) Loomcycle released v1.15.0-v1.15.1 of its search infrastructure, replacing the single-provider free tier with a multi-provider fallback circuit. The update introduces a Provider interface with five pure-HTTP drivers (Brave, Serper, Exa, Tavily, SearXNG), a configurable search_priority cascade, and per-AgentDef overlay. An opt-in provenance footer (LOOMCYCLE_WEBSEARCH_PROVENANCE=1) names the winning provider, off by default for byte-identical output. Two weeks after the "Brave killed the free tier" research landed as RFC AR, the shipped answer: WebSearch becomes a multi-provider fallback circuit. A new internal/search connector package with a Provider interface and five pure-HTTP drivers Brave, Serper, Exa, Tavily, SearXNG . A search providers config, a search priority cascade, per-AgentDef.search providers overlay in content sha256. The fallback circuit walks the cascade, resolves each provider's key via ResolveKeyOrOperator RFC AR/AX honored , and falls over silently on error / empty / un-keyable. The model sees the same numbered result text regardless of which provider answered. Routing view gains a search block with keyable / available / selected / reachable / last error per entry; Web UI Routing page renders it beside the LLM cascade. v1.15.1 adds an opt-in provenance footer LOOMCYCLE WEBSEARCH PROVENANCE=1 that names the winning provider inline — off by default for byte-identical output. Also: search providers documented in loomcycle.example.yaml; Library detail-panel independent scroll fixed. Bumps @loomcycle/client to 1.15.0 to publish LibraryAgentDefinition.search providers; Python stays 1.13.0.