~/terminal-browser main
npm · github.com/konaito/terminal-browser
A REAL BROWSER. INSIDE YOUR TERMINAL.

terminal-
browser

Chromium rendered straight into your terminal over the kitty graphics protocol. Click, scroll, type, switch tabs — with your mouse. Pure TypeScript. No Electron app, no rust engine, no 129MB download.

npx @konaito/terminal-browser open example.com [click to copy]
ghostty — 80×24
konaito@mba ~ % terminal-browser open example.com
Example Domain ×
GitHub ×
Example Domain
rendered by Chromium, drawn as pixels in your terminal
This page loads inside your terminal pane. Hover works. Scroll works. Forms work.
More information...
WHY

Everything a browser has.
Nothing an app needs.

01

Pixel-perfect pages

CDP screencast frames drawn with the kitty graphics protocol. Works in ghostty, kitty, WezTerm — flicker-free double-buffered rendering.

02

Real browser chrome

Tab strip, ✕ buttons, + button, back/forward, an editable URL bar — the chrome itself is HTML rendered by Chromium, so hover and focus states are real.

03

Mouse-first

SGR mouse reporting converts your clicks and scrolls into CDP input events. Click a tab. Close it. Type in a form. Like a normal browser.

04

21KB on npm

The package is ~21KB of TypeScript. Chromium comes from puppeteer's managed download. No Electron, no rust, no swift helper apps.

05

Works over SSH

It's just escape sequences on a TTY. Preview a dev server running on a remote machine without port forwarding gymnastics.

06

TDD to the bone

132 tests, red-green verified per module — from the ANSI parser to a full fake-TTY integration test that decodes the PNG frames it draws.

FOR THE EFFICIENCY-OBSESSED

Runs best in ghostty.

ghostty

If you measure context switches in milliseconds, this is your browser. terminal-browser is built on the kitty graphics protocol and feels best in ghostty — GPU-accelerated rendering, crisp pixel frames, zero window juggling. Your prompt, your editor, your agent and the web: one pane grid, zero Cmd+Tab.

IN THE WILD

An agent wrote the pitch.
terminal-browser rendered it.

A real session: Claude Code on the left describing this project, terminal-browser on the right rendering this very page — in the same terminal window, drawn as pixels.

Claude Code and terminal-browser side by side in one terminal window
Launch post on X: npm初公開してみた — a browser for ghostty + Claude Code efficiency freaks
FOR AGENTS

Your coding agent can drive it.

Every instance serves an agent-browser compatible CLI over a unix socket. An agent working in the same terminal can snapshot the page as a ref-annotated tree, click, fill, eval — while you watch it happen live in the pane next to your conversation.

$ terminal-browser action -- snapshot - heading "Example Domain" [level=1, ref=e1] - button "More information..." [ref=e2]   $ terminal-browser action -- click @e2 clicked # …and you saw it happen in your terminal   $ terminal-browser action -- tab new localhost:3000 $ terminal-browser action -- eval document.title
VS

The whole pitch, one number.

ELECTRON-BUNDLED ALTERNATIVES
129MB
  • Electron + rust engine + swift helper
  • macOS arm64 only
  • curl | bash installer
TERMINAL-BROWSER
21KB
  • Pure TypeScript, MIT licensed
  • Anywhere Node 18+ runs
  • npx and done
START

Sixty seconds to a browser
in your prompt.

# requires a kitty-graphics terminal (ghostty / kitty / WezTerm) $ npx @konaito/terminal-browser open example.com   # keys: Ctrl+L url · Ctrl+T new tab · Ctrl+N next tab · Ctrl+R reload · Ctrl+Q quit # or just use the mouse.