finds.dev← search

// the find

browsh-org/browsh

★ 18,941 · JavaScript · LGPL-2.1 · updated Jul 2025

A fully-modern text-based browser, rendering to TTY and browsers

Browsh runs headless Firefox and converts its output into text-mode rendering for TTY terminals or a browser-based client. The core idea is to give slow/low-bandwidth connections access to fully JavaScript-rendered modern web pages without shipping pixel data. It's Go on the backend talking to a Firefox WebExtension over WebSockets.

- The architecture is clever: instead of reimplementing a browser engine, it hijacks real Firefox via a WebExtension, so JS, CSS, and modern HTML5 all work correctly — something no pure text browser can claim.

- Mosh integration for the TTY client is a practical differentiator; diff-only screen updates over lossy connections is exactly the right tool for the stated bandwidth-saving use case.

- Docker image means zero-dependency deployment for the server-side use case — `docker run --rm -it browsh/browsh` and you're in.

- The text rendering pipeline (graphics_builder + text_builder + tty_grid) that maps canvas pixel colors and DOM text nodes onto TTY cells is genuinely interesting engineering.

- Last meaningful activity appears to have slowed significantly; the repo has nearly 19k stars but only 478 forks and the codebase hasn't seen substantial feature work in years, meaning Firefox API breakage could silently kill it.

- Hard dependency on a specific Firefox installation is fragile — Firefox silently updates and breaks the WebExtension API or headless behavior with no notice, and there's no pinning mechanism in the default setup.

- The browser client explicitly lacks feature parity with the terminal client and this is called out in the README with no roadmap to close the gap — it reads like an abandoned half-feature.

- Test coverage is thin: a handful of TTY E2E tests against static fixture HTML pages and some unit tests for text parsing, but no integration tests for the Firefox<->Go WebSocket protocol, which is the most likely failure point.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →