nerimux
A workspace-oriented terminal multiplexer written entirely in Common Lisp, with a magit-style keymap. The primary UI is a repolist of three sections, Attention, Active, and Repositories, plus a thin client attached to a headless runtime. The entry surface is workspace-only: attach, server, and kill are the only commands. The core regression suite runs hermetically through Nix; live PTY integration is an explicit host-side check.
Full documentation is published at <https://nerima-lisp.github.io/nerimux/. The source for that site lives in docs/src/.
Quick Start
nix run github:nerima-lisp/nerimux # same as `attach`
nix run github:nerima-lisp/nerimux -- attach
nix run github:nerima-lisp/nerimux -- attach github.com/org/repo
nix run github:nerima-lisp/nerimux -- attach /path/to/worktree
nix run github:nerima-lisp/nerimux -- kill # stop the serverThe examples use the flake directly. After nix build ., invoke the same commands with ./result/bin/nerimux.
attach auto-starts the headless runtime and connects a thin client. Running nerimux with no command at all is the same as attach; only an unrecognized command word prints the usage summary and exits non-zero. If the current directory sits inside a worktree ghq already tracks (a subdirectory counts too), attach opens straight into that worktree's pane instead of the repolist. C-q d detaches and leaves the runtime resident; C-p, from the repolist or status view, opens the global picker over whatever is on screen. A selector containing a slash is resolved either against the ghq catalog using the full specification, host/organization/repository, or against a local worktree path. server runs the headless runtime without attaching a client, and kill stops it.
nerimux reads no configuration file and has no runtime-configurable options. Every value the workspace UI depends on, including shell, $TERM, scrollback length, split ratios, and pane limits, is a compiled-in constant.
Install
# flake.nix
inputs.nerimux = {
url = "github:nerima-lisp/nerimux/v0.3.0";
inputs.nixpkgs.follows = "nixpkgs";
};Note the pinned tag. Consumers inside this org must pin a release tag rather than follow the default branch.
Nix is the only supported build path: it pins SBCL and every Lisp dependency, so a build either reproduces exactly or fails loudly. From a checkout, nix build . produces ./result/bin/nerimux.
Documentation
- Getting started,
install, usage, default key bindings, running the suite
- Architecture,
event flow, layering, source layout
- Security model,