Skip to content

feat(remote): dispatch Gemini browser models through the Gemini web executor #392

Description

@solomonneas

Problem

Oracle 0.18.0 supports Gemini browser runs through createGeminiWebExecutor, but that provider selection is local-only.

In bin/oracle-cli.ts, both the new-run and restart paths select the remote executor first:

if (browserConfig && remoteHost) {
  executeBrowser: createRemoteBrowserExecutor(...)
} else if (browserConfig && model.startsWith("gemini")) {
  executeBrowser: createGeminiWebExecutor(...)
}

The remote server then defaults /runs to runBrowserMode from browserMode.ts. The remote payload carries browserConfig.desiredModel, but the server does not use it to select the Gemini web executor.

I did not find an existing issue for remote Gemini. This report is based on source inspection at 083bba7e61f487ad3d99b42039d9f603f61dc4ff. A live local Gemini smoke reached the manual-login cookie extraction path, so the host-side authentication design works independently of this dispatch gap.

Expected behavior

A browser run with a Gemini model and --remote-host should execute the Gemini web provider on the remote host. Google cookies and browser state must remain on that host.

An unknown browser provider should fail before launching the ChatGPT executor. It should not silently substitute providers.

Suggested shape

Extract the local browser-provider selection into one shared resolver used by:

  • new CLI browser runs
  • restarted browser sessions
  • MCP browser runs
  • src/remote/server.ts

The existing browserConfig.desiredModel may be enough to preserve the current wire schema. An explicit provider field would make the contract easier to validate if model aliases can be ambiguous.

The remote server should keep its current credential policy: discard client-supplied inline cookies and use only host-side cookie or manual-login configuration.

Regression tests

  • Remote ChatGPT model invokes runBrowserMode.
  • Remote Gemini model invokes createGeminiWebExecutor.
  • Client-supplied Gemini cookies are discarded.
  • Unknown provider fails closed.
  • Restart and MCP paths use the same resolver as a new CLI run.

I can prepare a PR after the preferred resolver and wire-contract shape are confirmed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low-risk cleanup, docs, polish, ergonomics, or speculative feature.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.impact:auth-providerThis issue is about auth, provider routing, model choice, or SecretRef resolution.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions