browsh is a [[LGPL]] licensed terminal viewer and relay written in [[Javascript]] (for the browser extension) and [[[Go|Golang]] (for the relay). - [Website](https://www.brow.sh/) - [Github](https://github.com/browsh-org/browsh) - [Patreon](https://www.patreon.com/browsh) > **Browsh is a fully-modern text-based browser.** It renders anything that a modern browser can; HTML5, CSS3, JS, video and even WebGL. Its main purpose is to be run on a remote server and accessed via SSH/Mosh or the in-browser HTML service in order to significantly reduce bandwidth and thus both increase browsing speeds and decrease bandwidth costs. # Notability A highly functional fully text-based web browser is pretty nifty. While it still needs an instance of Firefox to be run *somewhere*, it doesn't need to have a GUI layer, or even be running locally. # Philosophy > Not all the world has good Internet. > Browsh could be to offload the battery-drain of a modern browser from your laptop or low-powered device like a Raspberry Pi. If you're a CLI-native, then you could potentially get a few more hours of life if your CPU-hungry browser is running somewhere else on mains electricity. > Browsh is different in that it's backed by a real browser, namely headless Firefox, to create a purely text-based version of web pages and web apps. # OS Support In theory it could run anywhere that Firefox and [[Go|Golang]] apps can target. Binaries are provided for the following targets: - Linux - [[x86]] 386 (32-bit) - [[AMD64]] (64-bit) - [[ARMv7]] - FreeBSD - [[x86]] 386 (32-bit) - [[AMD64]] (64-bit) - [[ARMv6]] - [[ARM64]] - OpenBSD - [[ARMv6]] - Windows - [[x86]] 386 (32-bit) - [[AMD64]] (64-bit) Older versions have binaries for [[Darwin]] and many more OS/ISA combinations so presumably these can still be targetted. # Features - TTY Client - The terminal client updates and renders in realtime so that, for instance, you can watch videos. It uses the UTF-8 half-block trick (▄) to get 2 colours from every character cell, thus simulating basic graphics. As well as keyboard input it also understands mouse input, for those terminals that support it. So you can click links and even draw lines in sketch apps. - Browser Client - The browser client, somewhat confusingly, renders simple HTML or plain text that itself was parsed by Browsh running inside another browser. The point being that the HTML or text that Browsh outputs is extremely lightweight. As of writing in 2018, the average website requires downloading around 3MB and making over 100 individual HTTP requests. Browsh will turn this into around 15kb and 2 HTTP requests - 1 for the HTML/text and the other for the favicon. - Currently the HTML/text output is not updated in real time nor interactive, the hope is that the browser client will eventually have feature parity with the TTY client.