OptionalCaptchaBuilt-in CAPTCHA solving.
OptionalFileFile downloads triggered in the browser are captured and retrievable.
OptionalHumanA human can take the wheel — their pointer/keyboard events route into the backend's browser. Required for Collaborative mode (e.g. a trainer agent: demonstrate, then "your turn").
OptionalLiveThe backend exposes a live-view stream / embeddable session URL so humans can watch the browser without MJ encoding frames itself. Required for ViewOnly and Collaborative modes.
OptionalMultiMultiple tabs / pages within one session.
OptionalNativeThe backend offers a FIRST-PARTY AI-control harness invoked via its API (e.g. Browserbase Stagehand's act/extract/observe). An optional accelerator for heavy, robust, autonomous automation — the engine may delegate high-level intents to it where available and opted-in, instead of the default computer-use loop. (OSS Stagehand-over-CDP is a control strategy the engine can run over RawCdpControl on any backend; this flag is specifically a provider's own hosted harness.)
OptionalPersistentPersistent browser profiles / authenticated contexts survive across sessions.
OptionalProxyOutbound traffic routes through a (geo-)proxy / controlled egress.
OptionalRawThe backend exposes a raw CDP endpoint MJ's computer-use layer connects to and drives directly. This is the UNIVERSAL substrate — every backend supports it — and the default control strategy: the realtime agent emits tool calls and our adapter executes DOM actions.
OptionalScreenA continuous video stream of the viewport is available (CDP Page.startScreencast for
self-host, or the provider's live-view stream) — the source for the channel's ScreenOut
track when screen-sharing the browser into a meeting.
OptionalSessionThe backend records the session (video / trace) for later review.
OptionalStealthAnti-bot stealth / fingerprint evasion for sites that block automation.
Strongly-typed shape of
AIRemoteBrowserProvider.SupportedFeatures(theMJ: AI Remote Browser Providersentity), bound to the column via JSONType metadata so CodeGen emits a typed accessor.A remote browser provider is a backend that hosts a real, live browser the Remote Browser channel drives while an agent talks — self-hosted headless Chrome (MJ orchestrates a lightweight container) or a browser-as-a-service (Browserbase / Steel / Browserless / Hyperbrowser). Every backend sits on the SAME primitive: a Chrome DevTools Protocol (CDP) endpoint that
@memberjunction/computer-useattaches to. These flags declare what each backend's driver supports. The Remote Browser engine gates every optional driver call on the matching flag;BaseRemoteBrowserProvideradditionally throwsRemoteBrowserCapabilityNotSupportedErrorif a feature is claimed here but the driver hasn't implemented it (defense-in-depth — exactly like the bridgeIBridgeProviderFeaturesmodel). All properties are optional — an omitted flag means the feature is not supported.Holding these as JSON (rather than dedicated BIT columns) keeps the table simple and lets new backend capabilities be added without a schema migration — just extend this interface.
NOTE: control mode (AgentOnly / ViewOnly / Collaborative) is NOT a feature flag — it is a per-provider default (
DefaultControlMode) plus a per-channel / runtime override. A mode only has to be supported by the underlying capabilities here (Collaborative needs MJAIRemoteBrowserProviderEntity_IRemoteBrowserProviderFeatures.HumanTakeover; ViewOnly/Collaborative need MJAIRemoteBrowserProviderEntity_IRemoteBrowserProviderFeatures.LiveView).See
/plans/realtime/realtime-bridges-architecture.md(§4d).