ConfigsJun 1, 2026·3 min read

Nyxt — The Keyboard-Driven Hacker's Browser in Common Lisp

Nyxt is a fully programmable web browser designed for power users, written in Common Lisp with Emacs and Vim-style keybindings, extensible through a built-in REPL and Lisp configuration.

Agent ready

Ready-to-run agent install

This asset can be installed after the agent chooses its runtime, checks the plan, and runs the matching command.

Native · 98/100Policy: allow
Agent surface
Any MCP/CLI agent
Kind
Skill
Install
Single
Trust
Trust: Established
Entrypoint
Nyxt Overview
Direct install command
npx -y tokrepo@latest install 0b20c07c-5d50-11f1-9bc6-00163e2b0d79 --target codex

Run after dry-run confirms the install plan.

Introduction

Nyxt is a web browser built for keyboard-driven workflows and deep extensibility. Unlike traditional browsers that prioritize mouse interaction, Nyxt treats browsing as a programmable activity where every action can be scripted, chained, and customized through Common Lisp.

What Nyxt Does

  • Provides Emacs-style and Vim-style keybinding modes for keyboard navigation
  • Renders web pages using WebKitGTK or WebEngine backends
  • Offers a command prompt (similar to Emacs M-x) for executing any browser action
  • Supports tree-style history with full-text search across visited pages
  • Allows live customization via an integrated Common Lisp REPL

Architecture Overview

Nyxt is written entirely in Common Lisp with a modular architecture. The browser core manages buffers (tabs), modes, and commands while delegating rendering to platform-specific backends (WebKitGTK on Linux, WebEngine elsewhere). Configuration is native Lisp code loaded at startup, and users can redefine any function or class at runtime via the REPL.

Self-Hosting & Configuration

  • Install via system package manager or download pre-built binaries
  • Configuration lives in ~/.config/nyxt/config.lisp as plain Lisp code
  • Define custom keybindings by creating or modifying mode classes
  • Install extensions by adding Lisp systems to the ASDF load path
  • Configure proxy, search engines, and download paths in the config file

Key Features

  • Built-in ad blocker with customizable filter lists
  • Smart bookmark system with tags and full-text search
  • Password manager integration (KeePassXC, Pass, 1Password)
  • Cloned buffer and session restoration across restarts
  • Programmable scripting for automating repetitive browsing tasks

Comparison with Similar Tools

  • Qutebrowser — Vim-keybindings browser in Python but less extensible
  • Vimb — Minimal Vim-like browser but lacks programmability
  • Luakit — Lua-scriptable browser, lighter but fewer features
  • Firefox with Vimium — Extension-based approach limited by browser sandbox
  • Emacs EWW — Text-mode browser inside Emacs, no JavaScript support

FAQ

Q: Does Nyxt support browser extensions like Firefox? A: Nyxt does not use WebExtensions. Instead, it provides native Lisp extensibility which offers deeper integration than sandboxed extensions.

Q: Can Nyxt render modern JavaScript-heavy websites? A: Yes. It uses WebKitGTK which is a full modern rendering engine with JavaScript support.

Q: Do I need to know Lisp to use Nyxt? A: No. Nyxt works out of the box with sensible defaults. Lisp knowledge is only needed for advanced customization.

Q: How is Nyxt different from a terminal browser? A: Nyxt is a full graphical browser with modern rendering capabilities. It simply prioritizes keyboard interaction and programmability over mouse-driven UI.

Sources

Discussion

Sign in to join the discussion.
No comments yet. Be the first to share your thoughts.

Related Assets