nvim-browser is an experimental browser runtime for Neovim.
The goal is to keep browsing, Markdown preview, and image preview inside the terminal/Neovim workflow instead of jumping to an external browser tab. The first target terminal is Ghostty, using terminal graphics as the future display surface.
This repository is an early MVP scaffold. Today it includes:
- Rust backend binary:
nvbrowser - target classification for URLs, Markdown, HTML, and images
- Markdown-to-HTML rendering
- image output through Kitty graphics protocol
- Neovim commands for opening and inspecting targets
- initial OSS packaging and CI
Planned next steps:
- Chromium/CDP renderer backend
- Chromium/CDP page screenshots displayed through Kitty graphics protocol
- tile-based page screenshots inside a Neovim preview split
- scroll/input bridge from Neovim to the browser session
- image, SVG, PDF, Mermaid, and KaTeX preview through the same browser runtime
Ghostty
└─ Neovim
├─ Lua plugin
│ ├─ commands.lua
│ ├─ backend.lua
│ └─ terminal.lua
└─ Rust backend
├─ nvbrowser-core
│ ├─ target
│ ├─ markdown
│ └─ terminal/kitty
└─ nvbrowser-cli
See docs/architecture.md for module boundaries.
- Neovim 0.10+
- Rust stable
- Ghostty for the intended terminal graphics experience
Build the backend:
cargo buildRun tests:
cargo testTry the backend:
cargo run -p nvbrowser -- inspect https://example.com
cargo run -p nvbrowser -- render-md README.md
cargo run -p nvbrowser -- show-image path/to/image.pngTry the plugin from this checkout:
nvim --cmd 'set rtp+=.'Then run:
:NBrowserInspect https://example.com
:NBrowserPreviewMIT