Here’s a list of notable nREPL extensions (middleware or transports) you might encounter in the wild.

Make sure you’re using the latest versions of those middleware, as all of them added support for nREPL 0.4+ fairly recently.


Official extensions are developed and maintained by nREPL’s Core Team and are hosted under the nREPL GitHub organization.


ClojureScript Support

The following ClojureScript REPLs are leveraging piggieback internally to provide nREPL support.


HTTP Support

Transit Support


Third-party extensions are not developed and maintained by nREPL’s Core Team and are hosted outside the nREPL GitHub organization.


Clojure Editor Support

  • cider-nrepl: A collection of nREPL middleware designed to enhance CIDER (and Clojure editors in general).

  • refactor-nrepl: A collection of functionality designed to support editor refactoring features.

  • iced-nrepl: nREPL middleware to support vim-iced.

  • midje-nrepl: nREPL middleware to run Midje tests.


  • sayid: A powerful tracing/debugging tool. It is a great alternative of CIDER-nREPL’s basic tracing functionality.

  • scope-capture-nrepl: A companion library to scope-capture, providing an nREPL middleware that lets you put your REPL in the context of an Execution Point.


This section lists middleware that were somewhat prominent in the past, but were replaced by alternatives down the road.

  • nrepl-middleware, part of ritz that provides a variety of nREPL middleware supporting various enhanced REPL operations (including apropos, javadoc lookup, code completion, and an alternative eval implementation). (superseded by cider-nrepl)

  • Javert provides a basic object inspector. (superseded by cider-nrepl)

  • nrepl-profile: profiling middleware, which was eventually integrated into cider-nrepl.

This list doesn’t aim to be complete. You can find more 3rd-party middleware listed here.