Skip to content
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

CircleCI Clojars Project cljdoc badge


A fitter, happier, more productive REPL for Clojure.

Improvements over the existing REPL that comes in clojure.jar

  • A number of readline commands, some not available in earlier JLine versions:
    • navigation to the start/end of lines, and forward/back by word
    • history navigation and search
    • and much much more
  • CTRL-C:
    • kills the currently running command, breaks out of infinite loops, etc.
    • doesn't bail out of the process - stops interruption-friendly operations
  • Code completion for:
    • Clojure vars and namespaces
    • Clojure namespace-qualified vars
    • Java classes, packages
    • Java package-qualified classes, static methods
  • ClojureDocs support via a clojuredocs command
  • Optional nREPL integration


REPLy is now part of Leiningen, as of the 2.x series. It's definitely your best bet for installation and Clojure development in general.

And here's how to get a standalone version up and running (assuming you have Leiningen installed):

git clone
cd reply
lein do deps, compile



The easiest way to use REPLy is simply to run lein repl (for 2.x). That's it!

If you want to check out the latest stuff on REPLy master, you can run lein trampoline run in this project.

If you're confined to Leiningen 1.x, you can use the example bin scripts that are set up to work with Leiningen 1.x.


Boot bundles REPLy, so all you have to do is:

boot repl

Clojure CLI (tools.deps)

Note: This section assumes you're using Clojure 1.9+.

Starting REPLy using the clojure command is as easy as:

clojure -Sdeps '{:deps {reply {:mvn/version "0.4.4"}}}' -m reply.main


If for some reason your use case requires avoiding the tools listed so far, you can use the bin scripts as a guide (you're probably used to shell scripting anyway, in that case). If you want to add additional dependencies to the classpath, setting $USER_CP will. For example: USER_CP=$(lein classpath) reply.

If you want to use REPLy from another piece of software, your entry point should be reply.main/launch-nrepl. There are lots of options, which you can learn more about by running (println (last (reply.main/parse-args ["-h"]))).


If you're having problems, feel free to open an issue, but the following may help.

For keybinding issues, check out ~/.inputrc - you can mostly use the same specifications there as you can with normal readline applications like bash, but from time to time we do come across missing features that we then add to jline.

To get a very detailed look at what jline is doing under the hood, you can export JLINE_LOGGING=trace (or debug) before starting REPLy. There may be more output than you'd like, but this kind of output is especially helpful when debugging keybinding issues.

You can use the --standalone flag to rule out any nREPL-related questions, but I'm not aware of anyone using --standalone for other purposes. Please let me know if you are!


Thanks to the developers of Clojure, JLine, nREPL, clojure-complete, ClojureDocs, and clojuredocs-client, for their work on the excellent projects that this project depends upon.

Special thanks to 8th Light for allowing me to work on this during our open-source Friday afternoons.


Copyright (C) 2011-2020 Colin Jones

Distributed under the Eclipse Public License, the same as Clojure. See the LICENSE file for details.


REPL-y: A fitter, happier, more productive REPL for Clojure.




No packages published
You can’t perform that action at this time.