
Carbonyl
github.com/fathyb/carbonyl- Category
- Developer Tools
- Rank
- No. 406Tools index
- Pricing
- Open Source
- Type
- TOOL
- Interfaces
- CLI
- Builder
- fathyb
- GitHub
- 19.5k stars
- Latest release
- v0.0.3
- Date
About
A Chromium-based web browser that runs entirely in your terminal. Supports modern web features like WebGL, WebGPU, audio/video playback, and animations while running at 60 FPS with zero idle CPU usage.
What it does
Carbonyl puts a full browser engine behind a command that draws straight onto a text console. Point it at an address and it renders the page pixel by pixel, folding the colors down into whatever palette the console can show, while scripts, layout, and media still run the way they would in a normal desktop window. Mouse clicks and key presses drive forward and back navigation the same way a toolbar button would. It installs as a global command, a container image, or a downloadable file for each supported system.
Why it's ranked here
This earns a slot because it solves the hard half of the problem competitors skip: real rendering fidelity in a console, not a stripped-down text approximation. The project itself documents the tradeoff honestly, naming a rival that needs fifty times the processing power for the same page because that rival copies a full window buffer instead of drawing straight to console resolution. A permissive license and a working binary/command/container matrix back that claim with something installable today.
What's good
The standout claim, made directly against a named competitor, is that this approach avoids copying or shrinking a graphical window and instead draws straight at console resolution, which the project credits for a large efficiency gap. Distribution is unusually flexible for a project this specialized: a package manager install, a ready container, or a plain downloadable file, so there is no single required toolchain. The permissive license also allows embedding or redistribution without much friction.
Tradeoffs
The heavy lifting is a full browser engine wearing a thin custom shell, so most of the actual behavior lives in code this project does not own or fully control, and a browser engine update can ripple through it. Building it yourself from source is a genuinely large undertaking, needing enormous disk space and roughly an hour on strong hardware, which pushes most people toward the prebuilt options. Extensions and fullscreen mode are both called out as unsupported for now, and one processor architecture cannot be cross built on another.
How to use it well
This fits a workflow where you need to see a real, fully scripted, media-capable page over a remote shell or in a headless environment, such as checking a dashboard or automated flow through a session with no graphical display. It is a poor match if you actually want a fast, lightweight, keyboard-driven reading experience, since older text browsers still lay out simple pages more cleanly and use far less machinery to do it. Treat prebuilt binaries or the container image as the default path rather than building from source unless you specifically need to patch the engine.
Technical notes+
The published crate builds a shared library from a lib crate exposing browser, cli, gfx, input, output, and ui modules, with cli wrapping that library into the executable; the output module further splits into cell, frame_sync, painter, quad, render_thread, renderer, and xterm submodules, and renderer.rs shows the terminal-facing renderer walking a double-buffered cell grid, diffing previous against current cells, mapping RGBA pixel data into terminal quadrant cells, and writing ANSI title-setting escape sequences directly to stdout. xterm.rs implements a color quantizer that maps arbitrary RGB values down to the 256-color xterm palette using distinct branches for near-grayscale versus chromatic colors. Cargo.toml declares the crate as a cdylib with dependencies on libc, unicode-width, unicode-segmentation, and chrono, and package.json declares the npm package under a BSD-3-Clause license, consistent with the text in license.md. build.rs conditionally links a Debian sysroot path for x86_64 or x86 targets and is a no-op on other architectures, reflecting the Linux cross-build constraint documented in readme.md.
Observed
- License
- Licensed BSD-3-Clause per package.json, with matching three-clause license text in license.md
- Architecture
- Core implemented in Rust as a cdylib (shared library) per Cargo.toml, loaded by a separate runtime executable
- Packaging
- Distributed three ways: npm global install, Docker image, and prebuilt per-platform zip binaries
- Dependencies
- Rust dependencies limited to libc, unicode-width, unicode-segmentation, and chrono
- Interfaces
- Runtime renders via a CLI executable taking a URL argument, with keyboard and mouse handled through a navigation module
- Known limitations
- Readme documents unsupported fullscreen mode and unsupported browser extensions as known limitations
- Build behavior
- build.rs links a Debian sysroot conditionally on x86_64 or x86 target architecture, with no equivalent branch for other architectures
Read from readme.md, Cargo.toml, package.json, src/cli.rs, src/lib.rs, src/browser.rs, src/gfx.rs, src/input.rs, src/output.rs, src/ui.rs, src/output/renderer.rs, src/output/xterm.rs, changelog.md, license.md, build.rs.
What it can do
Browse websites and web applications
URLs or web addresses → Rendered web pages displayed in terminal interface
Render WebGL graphics and 3D content
WebGL-enabled websites or applications → 3D graphics and animations displayed in terminal at 60 FPS
Play audio and video content
Web pages with audio/video elements or streaming media → Audio playback and video display in terminal
Execute JavaScript and modern web APIs
Web applications using JavaScript, WebGPU, and other modern web technologies → Fully functional web application behavior in terminal environment
Display web animations and interactive content
Websites with CSS animations, transitions, or interactive elements → Smooth animations and interactive experiences rendered in terminal
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.