Browser debugging for keyboard people

DevTools data in a local workbench your agents can use.

Faro captures Chromium network traffic, console output, storage, cookies, WebSockets, replay data, scripts, and read-only SQL into a durable SQLite database with a fast terminal UI, CLI, and MCP server.

Faro terminal UI showing a filtered network request list, request detail pane, and syntax-highlighted JSON response body.
Features

Everything useful from DevTools, without leaving the terminal.

Faro is intentionally narrow: browser investigation, request replay, storage inspection, scripts, and database-backed debugging.

⊟

Network workbench

Route drilldown, regex filters, presets, response bodies, curl export, replay, and request timing in one navigable view.

›_

Console and eval

Inspect logs, errors, warnings, stack traces, and run JavaScript through your configured editor workflow.

⇅

WebSocket frames

Stream sent and received frames with opcode labels, payload inspection, JSON formatting, and filtering.

▤

Storage and cookies

View and edit localStorage, sessionStorage, and cookies with two-pane details and editor handoff.

▦

Read-only SQL

Query the capture database safely from the TUI, CLI, scripts, or MCP without mutating the store.

ƒ

Scripts

Save and run Rhai scripts against Faro data and browser capabilities for repeatable investigations.

Agents

Your coding agent can inspect the same capture.

Faro exposes an agent-friendly CLI and a stdio MCP server for listing requests, reading response bodies, replaying calls, inspecting console errors, querying storage, and running guarded SQL.

{
  "mcpServers": {
    "faro": { "command": "faro", "args": ["mcp"] }
  }
}
CLI

Useful without opening the TUI.

# capture a page
$ faro capture http://localhost:5173 --for 15s --json

# inspect failing requests under a route
$ faro requests --route /api --filter "status >= 400" --json

# copy a full reproducible request
$ faro request curl req_123

# query the SQLite capture
$ faro sql "select * from requests where status_code >= 500"
Install

Quick start from source.

Requires stable Rust, a Chromium-family browser, and curl for replay workflows.

$ git clone https://github.com/nullslate/faro
$ cd faro
$ cargo install --path crates/app
$ faro http://localhost:5173