Skip to content

Add optional Parallel web search to chat and tasks - #84

Open
georgeatparallel wants to merge 7 commits into
CopilotKit:mainfrom
georgeatparallel:george/parallel-web-search-resubmit
Open

georgeatparallel wants to merge 7 commits into
CopilotKit:mainfrom
georgeatparallel:george/parallel-web-search-resubmit

Conversation

@georgeatparallel

@georgeatparallel georgeatparallel commented Sep 28, 2026 •

Copy link
Copy Markdown

OpenMuse can read known URLs but cannot find sources for a research question. This adds search_web to built-in model chat and delegated tasks, using Parallel's free, keyless Search MCP as the built-in provider.

Search is off by default. Set WEB_SEARCH_ENABLED=true on the API and any separate task worker to enable it. Model-generated objectives and queries may include conversation or task context and are sent to Parallel with a random per-chat/task session identifier. The README documents this data flow and rate limits.

Results include HTTP(S) source URLs and bounded excerpts. Tasks save sources as evidence and deduplicate them by URL. Invalid entries are skipped while valid sources are retained. Cancellation, deadlines, response limits, and errors are handled by the shared connector, with no paid fallback.

Chat shows search progress, sources, empty results, failures, and partial-result notices in a tool card. Interrupted searches stop showing a spinner. Source links open normally without a browser worker. Browser tools and their instructions are offered only when both the worker URL and token are configured, in chat and delegated tasks.

Replaces #22 and retains its review fixes, updated against current main. Related to #21.

Verification

  • pnpm test: 300 passed, 0 failed, 0 skipped (15.68 seconds), including native chat, delegated tasks, disabled search, evidence deduplication, cancellation, and malformed MCP results.
  • Lint, application/mobile and browser-worker type checks, and server build passed.
  • Web, iOS, and Android bundle exports passed.
  • A scripted-model native chat smoke test returned 10 valid sources from the live keyless endpoint with no browser worker or browser tool offered.
  • pnpm test:browser: 1 passed, 0 failed (3.81 seconds). Current main includes the public-page fixture correction.
  • The real search-card component was checked in a browser at desktop and phone widths, including running, stopped, success, empty, error, malformed, and partial results. Source links opened in Chrome.

Docker integration suites and a live-model hosted chat session were not run locally. Platform exports validate bundles, not signed native apps.

Search card preview

Component preview with fixed example results, using the same component and styles as chat:

Search card states

I'm a DevRel engineer at Parallel.

@jerelvelarde

Copy link
Copy Markdown
Collaborator

Live run of this branch (baae71e): built-in model chat with WEB_SEARCH_ENABLED=true against the keyless Parallel endpoint. Real time, no edits.

search_web in OpenMuse chat

Setup: sample workspace, AGENT_BACKEND=model, no browser worker. The agent's event stream shows the search_web call and the source URLs it returned. The prompt asks the agent not to open pages because the browser worker was off. Without that line, the model also calls browse_web and shows its "not configured" error.

Chat shows nothing while search_web runs, because it has no tool card. The only sign is the typing dots, for about 15 seconds here.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants