An extensible coding agent for the modern Lisp hacker Kleisli.io released kli, an extensible coding agent that runs inside its own live SBCL image, featuring a small boot kernel that installs, switches, and rolls back protocols, with all model providers, tools, the agent loop, and the TUI as extensions. It supports hot-patching and retraction of any contribution from the REPL without dropping the session, and is available via a curl installer, Nix, or building from source. curl -fsSL https://kli.kleisli.io | sh kli is a coding agent that runs inside its own live SBCL image. The boot kernel is small. It knows only how to install, switch, and roll back protocols, and nothing about what an extension is. The extension system itself, the manifests, the contribution kinds, the capabilities and the tools, is a protocol installed on that kernel through those same verbs. Every model provider, every tool, the agent loop, and the whole TUI is an extension on a protocol. Every contribution carries a retractor, so retraction drains exactly what it added and nothing else, and you can install, retract, swap, or hot patch any of it from the REPL without dropping the session. Extensions all the way down. If that makes you want to open src/kernel.lisp , kli is for you. Specialize the running program. A :method contribution adds a method to any generic in the live image, and retraction is remove-method . You change the program's own behavior and roll it back. Rewrite without restarting, keep the state. Behavior lives in CLOS cells over pandoric closures. A hot patch swaps the code and keeps the closed-over state, so the editor keeps its buffer and the transcript its scrollback. It runs behind a condition-system fault barrier, so a hot-patched function that throws degrades instead of killing the session. Switch the whole world, safely. A protocol switch validates, smoke-tests, swaps, and rolls back on any error. Two dispatch axes are split on purpose. CLOS specialization handles image-global, per-class behavior, and capability providers, which are closure tables, handle per-protocol-instance variation. The agent loop itself is built this way, with the message handler, the skill expander, the retry count, and the compaction threshold all pandoric closures you can open and hot patch while a turn is in flight. Install the prebuilt binary, use Nix, or build from source. curl -fsSL https://kli.kleisli.io | sh It installs under ~/.local , overridable with KLI INSTALL DIR and pinnable with KLI VERSION , and puts a kli wrapper on your PATH . Then run kli . Run it without installing, or add it to your profile. nix run github:kleisli-io/kli nix profile install github:kleisli-io/kli The flake ships overlays.default and packages.