Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


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


NOTE: project discontinued

Cuttle is a standalone application that aims to be the simplest way to use ClojureScript. It provides a user-friendly interface, allowing you to build projects by clicking a button, and to see meaningful warnings and errors at a glance. In a way, it provides the "builder" parts of an IDE without making you leave your favorite editor.

Under the hood, Cuttle is not hiding a lot of magic from you. It uses standard ClojureScript workflow tools to perform its operations. It uses Leiningen with the lein-cljsbuild plugin listed in your project.clj, and the mies template for creating new projects. Thus, it should produce the same expected behavior as these standard tools.

Cuttle is itself a ClojureScript application :) (running on a Node/Chromium framework called Atom Shell). We hope this tool encourages you to explore building ClojureScript apps for the browser, Node, and other JS-targetted platforms.


Download Cuttle v1.1:

Windows Installer
Linux zip

(Please make sure to install a JRE >= 7)

Homebrew Cask

$ brew install caskroom/cask/brew-cask
$ brew cask install cuttle

Homebrew-cask provides a friendly homebrew-style CLI workflow for the administration of Mac applications distributed as binaries.

It's implemented as a homebrew external command called cask.

User Guide

  • When first opening Cuttle, you will be prompted to add an existing project or to create a new one.
  • Add Existing Project: If you are adding an existing project, you must navigate the presented dialog to the project's project.clj file so that we can find your configured builds.
    • (We currently do not support cljsbuild configurations outside of the default :dev profile).
  • Add New Project: If you are creating a new project, you will be prompted for a name and location for its folder.
    • (The standard lein new mies template will be used to create the project.)
  • Build Table: Once you have loaded a project, you will be presented with a table of build configurations available for that project. Current status of the build, along with warnings and errors will be displayed here.
  • Build Button: At the top-right of the build table, you should see a build button. You can first select the dropdown arrow to specifically set which builds to compile and whether or not to automatically recompile when files change. Click the button proper to start building.
  • Multiple Projects: You can add multiple projects to this workspace. The projects are treated with isolated compiler instances and can be built in parallel.
  • Project Buttons: The project buttons at the top-left of the build table are also helpful for opening the project folder, re-fetching the build configs, and removing the project from the workspace.
  • Notifications: The settings link at the top-right of the page currently holds options for toggling compiler notifications
    • (via Mac native Notifications, Linux notify-send, or Growl For Windows).
  • Shutting Down: When closing the application, all compiler instances that happen to still be running are shutdown. Your configurations are saved and reloaded when re-opening the application.


We welcome your ideas, bug reports, and pull requests!

With the ClojureScript tooling community rapidly growing, we hope to keep improving the user experience to integrate new workflows, while also keeping its behavior simple and predictable. Some ideas we are thinking about:

Development Setup

To setup a environment for building Cuttle:

  1. Install Leiningen and Node.js.

  2. One-time setup. Run from the project directory:

    # linux/mac
    # windows
  3. Compile LESS and ClojureScript:

    grunt fresh-build
  4. Launch to try it out:

    grunt launch
  5. Assemble a release for your OS:

    grunt release

About the Name/Logo

Cuttle is named after the Cuttlefish because Shaun likes cephalopods. The logo is modeled after its uniquely shaped eye.

The first three letters of Cuttle might stand for "ClojureScript User Tool", but the last three letters don't stand for anything because Cuttle is not an acronym.

Cuttle should be capitalized like a proper noun when used in a sentence.


All code licensed under the terms of the MIT License.