Vim-inspired browser. Native, GPU-accelerated. Rust + CEF.
Modal browser built on
Chromium Embedded Framework via
the cef Rust crate. Vim keybindings powered by
hjkl-engine.
0.14.6 — pre-1.0, tagged releases on every version bump. Multi-tab browsing;
popup windows (window.open, OAuth) render in dedicated buffr windows with
read-only address bars and preserve window.opener; target="_blank" and
Ctrl+click open in tabs; two-finger horizontal swipe navigates browser history;
vim modal engine (hjkl-engine 0.5) wired for page-mode dispatch and
insert-mode text editing; history / downloads / bookmarks / permissions / zoom
data layers wired and persisted to SQLite. See CHANGELOG.md.
Each release publishes binary artifacts for:
| OS | Architecture | Format |
|---|---|---|
| Linux | x86_64, aarch64 | .deb, .rpm, .tar.gz |
| macOS | arm64 (Apple Silicon) | .dmg |
| Windows | x64, arm64 | .msi (per-user) |
Linux requires a Wayland session. X11 is not supported. GNOME 45+, KDE 6, Sway, Hyprland, and other modern compositors all run Wayland by default. buffr will exit with a clear error if
XDG_SESSION_TYPEis notwayland.
We dropped Intel Mac builds in 0.1.14. Apple stopped selling Intel Macs in
2023, and the GitHub Actions macos-13 runner pool is heavily contended —
release tags routinely queued for 1–2 hours waiting on a slot, blocking the
entire publish pipeline (the crates.io stub publish gates on every binary leg).
The cost wasn't paying for the user count, so we cut it.
If you're on an Intel Mac and want to run buffr, build from source on your own
machine — the workspace builds clean against x86_64-apple-darwin, the support
is just absent from the release pipeline, not from the code.
| Binary | Role |
|---|---|
buffr |
Supervisor / entrypoint. Spawns buffr-app, restarts it on crash or UI hang. |
buffr-app |
The browser itself. Owns the window, CEF lifecycle, chrome, keymap, stores. |
buffr-helper |
CEF subprocess helper (renderer / GPU / utility processes). |
| Crate | Role |
|---|---|
buffr-engine |
BrowserEngine trait, engine routing, internal buffr:// server. |
buffr-cef |
CEF integration: BrowserHost, multi-tab host, OSR, handlers, IPC. |
buffr-core |
Engine-agnostic core: hints, edit mode, updates, crash reporter, … |
buffr-modal |
Vim page-mode FSM, keymap trie, hjkl-engine edit-mode bridge. |
buffr-ui |
Statusline, tab strip, input bar, permission / confirm prompts. |
buffr-config |
TOML config loader, validator, hot-reload watcher. |
buffr-store |
Shared SQLite open/tune + migration runner behind the five stores. |
buffr-history |
SQLite-backed browsing history (frecency search). |
buffr-bookmarks |
SQLite-backed bookmark store with tags + Netscape import. |
buffr-downloads |
SQLite-backed download tracking; CEF handler integration. |
buffr-permissions |
SQLite-backed per-origin permission store (camera, mic, geo, …). |
buffr-zoom |
SQLite-backed per-domain zoom-level persistence. |
buffr-view-source |
Syntax highlighting + HTML rendering for buffr-src: pages. |
Not yet published to crates.io — consume via path or git dep.
macOS (Homebrew)
brew install --cask kryptic-sh/tap/buffrArch Linux (AUR)
paru -S buffr-binPre-built packages on every tag, on the releases page:
| Platform | Asset | Arches |
|---|---|---|
| macOS | .dmg |
arm64 |
| Windows | .msi |
x64, arm64 |
| Debian / Ubuntu | .deb |
amd64, arm64 |
| Fedora / RHEL | .rpm |
x86_64, aarch64 |
| Linux (generic) | .tar.gz |
x86_64, aarch64 |
| Snap | .snap |
amd64, arm64 |
| Flatpak | .flatpak |
amd64, arm64 |
Heads-up:
cargo install buffris not a supported install path — see the note in Build below.
# Vendor the CEF binary distribution (~500 MB extracted).
cargo xtask fetch-cef
# Build the workspace. `default-members` covers all three binaries
# (buffr, buffr-app, buffr-helper), which the next step needs.
cargo build
# Run. The workspace has three binaries, so bare `cargo run` is
# ambiguous ("could not determine which binary to run") — name one.
# `buffr` is the supervisor; it finds `buffr-app` next to itself.
cargo run --bin buffr
# Or skip supervision and run the browser directly:
cargo run --bin buffr-appHeads-up:
cargo install buffris not a supported install path. Thebuffrcrate on crates.io is a stub that prints download instructions — CEF apps need a ~150 MB runtime payload (libcef, paks, locales, sandbox) thatcargo installcan't bundle. Grab a prebuilt release from github.com/kryptic-sh/buffr/releases, or build from source as shown above.
See docs/dev.md for full prerequisites, platform matrix, and
CEF path overrides.
- Image / multimedia clipboard paste is unsupported. Ctrl+V text paste works, but pasting images or other non-text clipboard content into web pages is a no-op. This is a CEF off-screen-rendering (OSR) limitation, not specific to buffr's implementation. Tracked in #19.
See CONTRIBUTING.md (if exists) or open an issue / PR.
MIT. See LICENSE.