# Remote Protocols

Firefox supports several remote protocols, which allow to inspect and control
the browser, usually for automation purposes:

- {ref}`marionette-header`
- {ref}`webdriver-bidi-header`

## Common documentation

The following documentation pages apply to all remote protocols

```{toctree}
:maxdepth: 1

Building.md
Debugging.md
Prefs.md
Testing.md
CodeStyle.md
Security.md
PuppeteerVendor.md
```

## Protocols

(marionette-header)=

### Marionette

Marionette is used both by internal tools and testing solutions, but also by
geckodriver to implement the [WebDriver (HTTP) specification]. The documentation
for Marionette can be found under [testing/marionette].

(webdriver-bidi-header)=

### WebDriver BiDi

[The WebDriver BiDi specification](https://w3c.github.io/webdriver-bidi)
extends WebDriver HTTP to add bidirectional communication.

```{toctree}
:maxdepth: 1

webdriver-bidi/Extensions.md
marionette/index
messagehandler/index
```

## Architecture

### Message Handler

The documentation for the framework used to build WebDriver BiDi modules can be
found at [remote/messagehandler].

## Bugs

Bugs are tracked under the [Remote Protocol product].

## Communication

See [Communication] on [our project wiki].

[communication]: https://wiki.mozilla.org/Remote#Communication
[our project wiki]: https://wiki.mozilla.org/Remote
[remote protocol product]: https://bugzilla.mozilla.org/describecomponents.cgi?product=Remote%20Protocol
[remote/messagehandler]: messagehandler/index.md
[testing/marionette]: marionette/index.md
[webdriver (http) specification]: https://w3c.github.io/webdriver/
