parchi-relay
Parchi Relay empowers AI agents to control a live browser instance, execute tasks, and interact with web content through a local daemon and browser extension agent via a CLI-driven JSON-RPC interface.
About this skill
Parchi Relay is designed to bridge the gap between AI agents and real browser environments, offering a robust solution for browser automation. It operates by establishing a local relay daemon that brokers communication between an AI agent (or CLI) and a browser extension. The browser extension acts as an agent, connecting to the daemon via WebSocket to execute browser-specific tools and commands. This setup allows for granular control over a physical browser, enabling actions such as navigating pages, clicking elements, filling forms, and extracting dynamic content. Users can interact with the Parchi Relay system through a command-line interface (CLI) or directly via JSON-RPC calls. This CLI facilitates common browser automation tasks, including listing connected agents, setting a default agent, discovering available browser tools (e.g., `getTabs`), and invoking these tools with specific arguments. The system's architecture makes it suitable for scenarios where headless browsers are insufficient, such as handling complex JavaScript, CAPTCHAs, or user authentication flows that require a real browser context. The primary benefit of Parchi Relay lies in its ability to provide AI agents with programmatic control over a fully functional browser. This expands the capabilities of AI agents beyond simple API calls or static content parsing, allowing them to perform comprehensive web-based tasks like end-to-end testing, intelligent web scraping of dynamic sites, or automating intricate online workflows that demand genuine user interaction.
Best use case
The primary use case for Parchi Relay is to enable AI agents to perform complex, interactive browser automation tasks. This is ideal for scenarios like end-to-end testing of web applications, intelligent web scraping from dynamic and JavaScript-heavy websites, or automating multi-step workflows that require a real user's browser context (e.g., logging into a service, interacting with complex UIs, handling CAPTCHAs, or filling out forms that trigger JavaScript events). It particularly benefits developers and QA engineers looking to integrate AI into their web-based testing and data collection pipelines.
Parchi Relay empowers AI agents to control a live browser instance, execute tasks, and interact with web content through a local daemon and browser extension agent via a CLI-driven JSON-RPC interface.
A user should expect an AI agent to successfully set up, control, and execute browser-based tasks through a real browser instance, retrieving desired information or completing specified actions on web pages.
Practical example
Example input
Using Parchi Relay, control the browser to list all currently open tabs.
Example output
[
{"id": 1, "title": "GitHub - 0xSero/parchi", "url": "https://github.com/0xSero/parchi"},
{"id": 2, "title": "My Online Dashboard", "url": "https://example.com/dashboard"}
]When to use this skill
- Automating browser tasks that require interaction with a real browser.
- Performing web scraping on dynamic, JavaScript-heavy sites.
- Executing end-to-end tests for web applications with AI agents.
- Interacting with web services that lack a direct API but have a web interface.
When not to use this skill
- When simple HTTP requests or existing APIs are sufficient for data retrieval.
- For high-performance, large-scale web scraping where headless browsers might be more efficient.
- When browser interaction is not needed (e.g., purely API-based tasks, static file processing).
- For tasks requiring only parsing of static HTML content without dynamic rendering.
How parchi-relay Compares
| Feature / Agent | parchi-relay | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | medium | N/A |
Frequently Asked Questions
What does this skill do?
Parchi Relay empowers AI agents to control a live browser instance, execute tasks, and interact with web content through a local daemon and browser extension agent via a CLI-driven JSON-RPC interface.
How difficult is it to install?
The installation complexity is rated as medium. You can find the installation instructions above.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
Top AI Agents for Productivity
See the top AI agent skills for productivity, workflow automation, operational systems, documentation, and everyday task execution.
AI Agents for Coding
Browse AI agent skills for coding, debugging, testing, refactoring, code review, and developer workflows across Claude, Cursor, and Codex.
Best AI Skills for Claude
Explore the best AI skills for Claude and Claude Code across coding, research, workflow automation, documentation, and agent operations.
SKILL.md Source
# Parchi Relay (How To Use It)
This skill documents how to run the Parchi relay daemon, connect the browser extension as an agent, and use the CLI to drive browser automation.
## What You Get
- A local relay daemon (`/v1/rpc` + `/v1/extension`) that brokers calls.
- A browser extension agent that connects to the daemon over WebSocket and executes browser tools.
- A CLI (`parchi-relay` / `npm run relay`) that can:
- list agents
- pick the default agent
- list tools / call tools
- run an agent task and wait for completion
## Quickstart (Local)
1. Build everything:
```bash
npm install
npm run build
```
2. Start the relay daemon (terminal A):
```bash
npm run relay:daemon -- --token=<YOUR_TOKEN> --host=127.0.0.1 --port=17373
```
3. Load the extension (Chrome):
- Open `chrome://extensions`
- Enable Developer mode
- Load unpacked: `dist/`
- Open the extension sidepanel
- Settings -> Relay:
- Enable: `On`
- URL: `http://127.0.0.1:17373`
- Token: `<YOUR_TOKEN>`
- Click `Apply`
4. Confirm the agent is connected (terminal B):
```bash
npm run relay -- agents --token=<YOUR_TOKEN>
```
## CLI Usage (Real Commands)
The CLI talks to the daemon over HTTP JSON-RPC.
Set env vars (recommended):
```bash
export PARCHI_RELAY_TOKEN="<YOUR_TOKEN>"
export PARCHI_RELAY_HOST="127.0.0.1"
export PARCHI_RELAY_PORT="17373"
```
List agents:
```bash
npm run relay -- agents
```
Doctor (sanity-check daemon, auth, agent connection, tool forwarding):
```bash
npm run relay -- doctor
```
Get/set default agent:
```bash
npm run relay -- default-agent get
npm run relay -- default-agent set agent-123
```
List tools (on default agent or a specific agent):
```bash
npm run relay -- tools
npm run relay -- tools --agentId=agent-123
```
Call a tool:
```bash
npm run relay -- tool getTabs --args='{}'
npm run relay -- tool getContent --args='{\"mode\":\"text\"}'
```
Run a full agent task and wait for completion:
```bash
npm run relay -- run "On the active tab, extract the main headline." --tabs=active --timeoutMs=600000
```
## RPC Surface (What The Relay Exposes)
Relay daemon (`POST /v1/rpc`, `Authorization: Bearer <token>`):
- `relay.ping`
- `agents.list`
- `agents.default.get`
- `agents.default.set` `{ agentId }`
- `tools.list` `{ agentId? }`
- `tool.call` `{ tool, args, agentId? }`
- `agent.run` `{ prompt, selectedTabIds?, agentId? }`
- `run.wait` `{ runId, timeoutMs? }`
- `run.events` `{ runId }`
Extension agent (WebSocket `/v1/extension?token=...`):
- Sends: `agent.hello` (registers the agent)
- Receives: JSON-RPC requests (forwarded by daemon)
- Sends: JSON-RPC responses
- Can publish: `run.event` / `run.done` notifications (for streamed run telemetry)
## Troubleshooting
- `agents` returns `[]`:
- confirm daemon token matches extension token
- confirm you loaded `dist/` (not `packages/extension/`)
- in the extension, Settings -> Relay should show connected status (and any error message)
- Tool calls fail due to policy:
- check the extension Settings -> Tool Permissions and Allowed Domains
## Notes For Production Use
- Keep the relay token private. Treat it like a local admin password.
- Bind to `127.0.0.1` unless you explicitly intend to expose it.
- If you expose it beyond localhost, add additional auth and transport security.
## Electron Agent Mode
Parchi now supports a dedicated relay-native Electron agent:
```bash
# Terminal A
PARCHI_RELAY_TOKEN=<TOKEN> npm run relay:daemon
# Terminal B
PARCHI_RELAY_TOKEN=<TOKEN> npm run electron:agent
```
Managed helper (recommended):
```bash
npm run electron:secure -- start
npm run electron:secure -- status
npm run electron:secure -- stop
```
Then select the Electron agent with:
```bash
npm run relay -- agents
npm run relay -- default-agent set <electron-agent-id>
```
Useful methods:
- `tool.call` with `electron.launch`
- `tool.call` with `electron.connect`
- `tool.call` with `electron.snapshot`, `electron.click`, `electron.type`, `electron.press`Related Skills
browser-automation
Browser automation powers web testing, scraping, and AI agent interactions. The difference between a flaky script and a reliable system comes down to understanding selectors, waiting strategies, and anti-detection patterns.
my-browser-agent
A custom browser automation skill using Playwright.
browser-cdp
Real Chrome browser automation via CDP Proxy — access pages with full user login state, bypass anti-bot detection, perform interactive operations (click/fill/scroll), extract dynamic JavaScript-rendered content, take screenshots. Triggers (satisfy ANY one): - Target URL is a search results page (Bing/Google/YouTube search) - Static fetch (agent-reach/WebFetch) is blocked by anti-bot (captcha/intercept/empty) - Need to read logged-in user's private content - YouTube, Twitter/X, Xiaohongshu, WeChat public accounts, etc. - Task involves "click", "fill form", "scroll", "drag" - Need screenshot or dynamic-rendered page capture
unbrowse
API-native agent browser powered by Kuri (Zig-native CDP, 464KB, ~3ms cold start). Unbrowse is the intelligence layer — learns internal APIs (shadow APIs) from real browsing traffic and progressively replaces browser calls with cached API routes (<200ms). Three paths: skill cache, shared route graph, or Kuri browser fallback. 3.6x mean speedup over Playwright across 94 domains. Full Kuri API surface exposed (snapshots, ref-based actions, HAR, cookies, DOM, screenshots). Free to capture and index; agents earn from mining routes for other agents.
captcha-relay
Human-in-the-loop CAPTCHA solving with two modes: screenshot (default, zero infrastructure) and token relay (requires network access). Screenshot mode captures the page with a grid overlay, sends it to the human, and injects clicks based on their reply. Token relay mode detects CAPTCHA type + sitekey, serves the real widget on a relay page for native solving, and injects the token via CDP.
hunting-for-ntlm-relay-attacks
Detect NTLM relay attacks by analyzing Windows Event 4624 logon type 3 with NTLMSSP authentication, identifying IP-to-hostname mismatches, Responder traffic signatures, SMB signing status, and suspicious authentication patterns across the domain.
detecting-ntlm-relay-with-event-correlation
Detect NTLM relay attacks through Windows Security Event correlation by analyzing Event 4624 LogonType 3 for IP-to-hostname mismatches, identifying Responder/LLMNR poisoning artifacts, auditing SMB and LDAP signing enforcement across the domain, and detecting NTLM downgrade attacks from NTLMv2 to NTLMv1 using event log analysis.
claude-relay
Relay operator for Claude Code via tmux across multiple projects. Use when the user wants to start/continue a Claude Code terminal session, send prompts, read output, or manage background Claude sessions by project name/path.
agent-relay
Connect agents across OpenClaw instances via relay. Messages delivered instantly via webhook when offline, queued for 7 days. No persistent connection needed.
claw-relay-openclaw
Control a remote browser through Claw Relay using the CLI client. Use when you need to navigate authenticated websites, click buttons, fill forms, take screenshots, or read page content on a user's real browser — and your platform doesn't support MCP. Triggers on remote browser control, authenticated browsing, real browser, cookie-based access, browser relay.
agent-relay-orchestrator
Run headless multi-agent orchestration sessions via Agent Relay. Use when spawning teams of agents, creating channels for coordination, managing agent lifecycle, and running parallel workloads across Claude/Codex/Gemini/Pi/Droid agents.
agent-relay
Use when you need Codex to coordinate multiple agents through Relaycast for peer-to-peer messaging, lead/worker handoffs, or shared status tracking across sub-agents and terminals.