Run clojure scripts and lein commands quickly using a persistent nREPL session
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Run clojure scripts and lein commands quickly using a persistent nREPL session. Heavily inspired by grenchman. This script differs in grenchman in several ways: it is written in Python, so no compiling or downloading platform-specific binaries is required. Also, the script automatically starts a headless nREPL server if none is currently running (however, see the Caveats section below).


pip install quick-clojure


The quick-clojure python package installs the quick, quick-exec, and quick-exec-p commands. quick is the main script. quick-exec and quick-exec-p are the equivalents of the lein-exec and lein-exec-p scripts. They are there for you to use in shebang lines. (See the excellent lein-exec plugin for more information).


  eval          FORM                             Evals given form.
  repl          [PORT]                           Connects a repl to a running nREPL server.
  run           NAMESPACE[/FUNCTION] [ARGS...]   Runs existing defn.
  lein          [TASK ARGS...]                   Runs a Leiningen task.
  start         [PORT]                           Start a nREPL server.
  kill          [PORT]                           Kill a running nREPL server.
  restart       [PORT]                           Restart a running nREPL server.

Running with no arguments will read code from stdin.


Repload Integration: You can force the server to run (repload) before each command by setting the REPLOAD environment variable. This should automatically reload any user-defined symbols. It should be useful if you're writing and testing development code.

You can set the DEBUG environment variable to debug nREPL message. The orange ones are client -> server messages, the red ones are server -> client messages.


There is currently a race condition when starting up the nREPL server for the first time, which could result in multiple nREPL servers starting up, only one of which is referenced by the ~/.lein/.repl-port file. So if you are planning on running a bunch of code in parallel, start the server first with a quick start command, at least until I figure out how to fix it. Patches welcome :)


I'm sure there are lots of them :) If you find any please write an issue or pull request so I can fix them.