Show HN: KittyBrowser, I built a web browser in your terminal
github.comI'm spending more time in the terminal, and with kitty graphics support now in Ghostty and Rex, I thought a real browser in a coding pane might be possible. It is.
kb drives headless Chrome and draws each frame as pixels, so you get the actual page, not a text approximation.
Key features: - Built in Rust, on headless Chrome - Keyboard shortcuts, mouse clicks, scroll, zoom, find, copy - Frames can go through the terminal itself, so it should work over SSH CLI, MCP and an agent skill, so your coding agent drives the same page you're watching
From its own pane, the agent runs things like: > kb https://news.ycombinator.com/
What I learned: the best way to design a CLI for agents is to watch agents use it. Most of the commands exist because an agent got stuck. I ran multiple agent loops where agents would try to use the documentation, get stuck and itterate on the docs.
Note this project needs a terminal with the kitty graphics protocol (Ghostty, kitty, WezTerm, Rex) and Chrome. Tested on macOS; Linux builds but needs testers. Windows PRs welcome.
cargo install --git https://github.com/graiz/kittybrowser kb news.ycombinator.com
MIT licensed. Feedback welcome.
I know what you mean by "real" browser, but I guess you'd actually call it a "graphical" browser. We already have terminal/CLI browsers like links or lynx.
Also, I'm sure emacs has a web browser.
That being said, a graphical browser in a terminal is pretty neat!
This is a neat idea but the whole concept of the Kitty graphics protocol is still strange to me. What does this gain from being in the terminal if it's fully graphical?
fully graphical - can run over ssh. So you can connect to a remote server and actually see what a browser session from that machine is viewing. Also helpful if you're running an agent that produces html or PRs, it can then preview it in the terminal for your visual review rather than bumping out to another application.
Lastly - driving or doing a PR or regression test - I've found that having claude in chrome drive my browser takes over the UX for me as the human, using this keeps coding sessions away from my real broser.
It does feel a tiny bit disingenuous to say "I built a browser" when you merely wrapped Chrome in a new container.
semanticly you're right. But saying I exposed the browser chrome of the chromium headless browser is rather confusing. Edge, Arc, etc all call themselves browsers even when they don't build the rendering engine.
Isn't it what Edge, Brave, etc. also are?