Skip to content

ff-rdp

A command-line tool that drives Firefox through its built-in debugger.

Firefox has a debugger built in, and it can listen on a TCP port. ff-rdp talks to it directly, with the Firefox Remote Debugging Protocol. Each command opens a connection, does its work and disconnects. From the shell you open pages, read them, click and type, run JavaScript, look at the console and the network and take screenshots. It helps web developers who want to check a page from a script, and AI agents such as Claude Code that need to see and use a real browser.

ff-rdp: a terminal window with ff-rdp commands, linked to an orange dot

What it does

The output is JSON, and --jq filters it. Run ff-rdp without arguments and it shows what is open right now and which commands make sense next. ff-rdp install-skill --claude installs a skill that lets Claude Code debug web pages with it. ff-rdp connects to localhost by default. The debug port is not encrypted, so do not open it to the network.

Install

With Homebrew on a Mac with Apple silicon or on Linux. The first line is needed once with Homebrew 6 or newer, which asks you to trust formulae from other taps:

brew trust --formula ractive/tap/ff-rdp
brew install ractive/tap/ff-rdp

On Windows with Scoop:

scoop bucket add ractive https://github.com/ractive/scoop-bucket
scoop install ff-rdp

With Rust's cargo, for example on an Intel Mac. This installs the ff-rdp command:

cargo install ff-rdp-cli

The README also lists apt, dnf and winget. Ready-made binaries for Linux, macOS on Apple silicon and Windows are on the releases page. You also need Firefox.

Example

ff-rdp launch --headless --temp-profile
ff-rdp navigate https://example.com
ff-rdp eval 'document.title' --jq '.results'

This starts a fresh Firefox without a window, opens example.com in it and prints the page title. ff-rdp --help lists all commands.

Source and licence

ff-rdp is written in Rust and is open source under the MIT licence. The source is on GitHub. It includes Mozilla's Readability.js, under the Apache 2.0 licence, to tell a page's article from its menus. The code was written in whole or in part by AI systems under my supervision (see AI_NOTICE).