Back to the catalog

terminal-chromium

Full Chromium browser in your terminal for Claude Code. Launches carbonyl (a terminal Chromium renderer using unicode half-block characters)

Open source Open in the app JSON README (API)

About

Full Chromium browser in your terminal for Claude Code. Launches carbonyl (a terminal Chromium renderer using unicode half-block characters) in a tmux split pane and controls it via CDP (Chrome DevTools Protocol). Browse, click, type, evaluate JS, take screenshots, get accessibility trees, and extract page content -- all programmatically from within a Claude Code session. Works over SSH, renders at 60 FPS, supports WebGL/WebGPU.

Details

Kind
Plugins
Topic
Web search, scraping & browser
Publisher
gyoz-ai
Origin
marketplace
Category
ferramentas
Stars
3
Last push
2026-03-28T12:13:54Z
Repository state
ativo
Language
JavaScript
License
MIT
Added
2026-08-30 01:48:58
Updated
2026-08-30 01:48:58
Origin id
gyoz-ai/terminal-chromium-skill/terminal-chromium

README

# terminal-chromium (Claude Code Plugin)

A [Claude Code](https://docs.anthropic.com/en/docs/claude-code) plugin that gives Claude a full Chromium browser in your terminal. Browse, inspect, and interact with web pages using CDP (Chrome DevTools Protocol) -- all from within a Claude Code session.

Built on [carbonyl](https://github.com/fathyb/carbonyl), which renders Chromium using unicode half-block characters. Works in any terminal, including tmux and over SSH.

## Demo

https://github.com/user-attachments/assets/47408250-60b1-4fd9-87fe-46723d045b9a

## What it does

When you invoke `/terminal-chromium`, Claude will:

1. Launch a Chromium browser in a tmux split pane next to your conversation
2. Navigate to any URL you specify
3. Interact with pages programmatically via CDP (click, type, evaluate JS, get page content)

### CDP Commands

Once the browser is running, Claude uses these commands to control it:

| Command | Description |
|---------|-------------|
| `list` | List open tabs |
| `nav <target> <url>` | Navigate to a URL |
| `eval <target> <expr>` | Evaluate JavaScript |
| `click <target> <selector>` | Click an element by CSS selector |
| `clickxy <target> <x> <y>` | Click at coordinates |
| `type <target> <text>` | Type text |
| `html <target> [selector]` | Get page HTML |
| `snap <target>` | Get accessibility tree |
| `shot <target> [file]` | Take a screenshot (PNG) |
| `open [url]` | Open a new tab |
| `evalraw <target> <method> [json]` | Send raw CDP command |

### Example conversation

```
You: /terminal-chromium open https://news.ycombinator.com

Claude: [launches browser, lists tabs]
  A1B2C3D4  Hacker News  https://news.ycombinator.com/

You: get me the top 5 story titles

Claude: [runs eval to extract titles]
  1. Show HN: I built a thing
  2. Why Rust is taking over
  ...
```

## Installation

### Option 1: Plugin Directory (recommended)

Install directly from the Claude Code plugin directory:

```
/plugins
```

Search for **terminal-chromium** and install it.

### Option 2: Install plugin from GitHub

```bash
# In any Claude Code session:
/install-plugin https://github.com/gyoz-ai/terminal-chromium-skill
```

### Option 3: Manual install

Clone and symlink the skill:

```bash
git clone https://github.com/gyoz-ai/terminal-chromium-skill.git ~/terminal-chromium-skill
ln -s ~/terminal-chromium-skill/skills/terminal-chromium ~/.claude/skills/terminal-chromium
```

Or copy directly:

```bash
mkdir -p ~/.claude/skills/terminal-chromium
curl -o ~/.claude/skills/terminal-chromium/SKILL.md \
  https://raw.githubusercontent.com/gyoz-ai/terminal-chromium-skill/main/skills/terminal-chromium/SKILL.md
curl -o ~/.claude/skills/terminal-chromium/cdp.mjs \
  https://raw.githubusercontent.com/gyoz-ai/terminal-chromium-skill/main/skills/terminal-chromium/cdp.mjs
chmod +x ~/.claude/skills/terminal-chromium/cdp.mjs
```

The skill automatically checks for `tmux`, `carbonyl`, and `Node.js 21+` at runtime and will guide you through installing anything missing.

## Usage

Start a Claude Code session inside tmux, then:

```bash
# Open a page
/terminal-chromium open https://example.com

# Or just invoke it and tell Claude what to browse
/terminal-chromium go to the Rust documentation
```

Claude handles the browser launch, CDP interaction, and pane management automatically.

## How it works

```
+---------------------------+---------------------------+
|                           |                           |
|    Claude Code            |    Carbonyl (Chromium)    |
|    conversation           |    rendering in terminal  |
|                           |                           |
|    Uses cdp.mjs to        |    Exposes CDP on         |
|    send CDP commands  --> |    localhost:PORT          |
|                           |                           |
+---------------------------+---------------------------+
                    tmux split pane
```

- **carbonyl** renders real Chromium in the terminal using unicode half-block characters
- Claude launches it in a tmux split pane with `--remote-debugging-port`
- **cdp.mjs** connects via WebSocket to the CDP endpoint to control the browser
- Multiple browser instances can run on different ports (9222, 9223, ...)

## Plugin structure

```
terminal-chromium-skill/
├── .claude-plugin/
│   └── plugin.json
├── skills/
│   └── terminal-chromium/
│       ├── SKILL.md
│       └── cdp.mjs
├── LICENSE
└── README.md
```

## Notes

- Renders at 60 FPS with 0% idle CPU
- Supports WebGL, WebGPU, audio, and video
- Works over SSH
- Heavy JS sites (YouTube, Twitter) may crash carbonyl -- simpler pages work best
- Node.js 21+ required for built-in `WebSocket` (no npm dependencies needed)

## Credits

- [carbonyl](https://github.com/fathyb/carbonyl) by Fathy Boundjadj -- the terminal Chromium renderer
- [gyoz-ai/terminal-chromium](https://github.com/gyoz-ai/terminal-chromium) -- fork with pre-built binaries

## License

MIT

More