Babashka is a native Clojure interpreter for scripting that starts fast and requires no JVM.
The tool solves the problem of writing shell scripts that are too complex for bash but too simple to justify a full JVM Clojure application. It interprets a substantial subset of Clojure using SCI, providing access to commonly used Java classes like System, File, and java.time, along with multi-threading support through functions like pmap and future. The interpreter ships as a self-contained binary with no external dependencies, making installation straightforward across Linux, macOS, and Windows.
Babashka suits developers comfortable with Clojure who want to replace bash scripts without the startup overhead of JVM Clojure. It works best for scripts that run in a few seconds or less; scripts with heavy computation or extensive loops will perform better on the JVM despite its slower startup. The tool is designed to integrate with existing shells rather than replace them, allowing you to call it from within bash and other shell environments. The README notes that interpreting code is inherently less performant than compiled code, setting expectations for use cases where raw speed matters less than development velocity.
The project maintains stable functionality for clojure.core and java.lang, with changes unlikely in those areas. Other parts of the tool may evolve, though the maintainers aim to minimize breaking changes and document them in release notes. The tool includes batteries-in-the-box libraries like tools.cli and cheshire, reducing the need to manage dependencies for common scripting tasks.