Home

Awesome

Pod registry

The central place to register babashka pods for easy usage with babashka.

Loading and using a pod

Registered pods can be loaded using a qualified symbol and a version string:

(require '[babashka.pods :as pods])
(pods/load-pod 'org.babashka/buddy "0.1.0")

From then on, a pod exposes namespaces which can be called like regular Clojure:

(require '[pod.babashka.buddy.core.hash :as hash])
(hash/md5 "foo")

Registered pods

PodDescriptionLatest versionExampleLanguage
atomisthq/tools.dockerdocker golang utils for clojure0.1.0link<img src="https://go.dev/blog/go-brand/Go-Logo/SVG/Go-Logo_Blue.svg" alt="golang" width="24" height="24">
borkdude/clj-kondoA static analyzer and linter for Clojure code that sparks joy2024.08.29link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
com.fluree/cryptoA Clojure(Script) crypto library for the Fluree graph database0.1.2link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
com.github.clojure-lsp/clojure-lsp2024.04.22-11.50.26null
epiccastle/bbsshSSH remote execution and file copy0.6.0link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
epiccastle/spirePragmatic idempotent machine provisioning over SSH (mac and linux only)0.1.2link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
huahaiy/datalevinDatalevin Database0.9.10link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
justone/briskFreeze and thaw with Nippy at the command line0.3.0link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
justone/tablMake tables from data in your terminal0.3.0link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
lispyclouds/dockerA babashka pod for interacting with docker via clj-docker-client0.1.1link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
org.babashka/awsAWS client based on aws-api0.1.2link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
org.babashka/buddyCryptographic API provided by buddy0.3.4link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
org.babashka/etaoinEtaoin, a pure Clojure webdriver protocol implementation0.1.0link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
org.babashka/filewatcherFilewatcher based on Rust notify0.0.1link<img src="https://upload.wikimedia.org/wikipedia/commons/d/d5/Rust_programming_language_black_logo.svg" alt="rust" width="24" height="24">
org.babashka/fswatcherFilewatcher based on Go fsnotify0.0.5link<img src="https://go.dev/blog/go-brand/Go-Logo/SVG/Go-Logo_Blue.svg" alt="golang" width="24" height="24">
org.babashka/go-sqlite3Interact with sqlite30.2.4link<img src="https://go.dev/blog/go-brand/Go-Logo/SVG/Go-Logo_Blue.svg" alt="golang" width="24" height="24">
org.babashka/hsqldbHSQLDB access via next.jdbc0.1.2link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
org.babashka/instaparseInstaparse pod0.0.4link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
org.babashka/lanternaA Clojurey wrapper around the Lanterna terminal output library.0.0.1link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
org.babashka/mssqlMSSQL access via next.jdbc0.1.2link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
org.babashka/mysqlMySQL access via next.jdbc0.1.2link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
org.babashka/oracleOracle access via next.jdbc0.1.0<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
org.babashka/parceraGrammar-based Clojure(script) parser0.0.1link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
org.babashka/postgresqlPostgresql access via next.jdbc0.1.2link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
org.babashka/tools-deps-nativeTools deps alpha as a pod0.1.6link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
retrogradeorbit/bootlegTemplate processing command line tool to help build static websites. Inbuilt support for html, hiccup, hickory, selmer, mustache, markdown, enlive, json, yaml and edn.0.1.9link<img src="https://upload.wikimedia.org/wikipedia/commons/5/5d/Clojure_logo.svg" alt="clojure" width="24" height="24">
rorokimdim/stashEncrypted text storage0.3.3link<img src="https://upload.wikimedia.org/wikipedia/commons/1/1c/Haskell-Logo.svg" alt="haskell" width="24" height="24">
tommy-mor/go-valve-queryquery/rcon valve source engine servers0.1.1<img src="https://go.dev/blog/go-brand/Go-Logo/SVG/Go-Logo_Blue.svg" alt="golang" width="24" height="24">
tzzh/awsInteract with AWS0.0.3link<img src="https://go.dev/blog/go-brand/Go-Logo/SVG/Go-Logo_Blue.svg" alt="golang" width="24" height="24">
tzzh/mailSend emails0.0.2link<img src="https://go.dev/blog/go-brand/Go-Logo/SVG/Go-Logo_Blue.svg" alt="golang" width="24" height="24">

Registering a pod

To register a pod, create a nested directory in manifests with the following structure:

<org>/<pod-name>/<version>

and add a manifest.edn file like the following example:

{:pod/name tzzh/mail
 :pod/description "Send emails"
 :pod/version "0.0.2"
 :pod/license ""
 :pod/example "https://raw.githubusercontent.com/babashka/pod-registry/master/examples/tzzh_mail.clj"
 :pod/language "go"
 :pod/artifacts
 [{:os/name "Linux.*"
   :os/arch "amd64"
   :artifact/url "https://github.com/tzzh/pod-tzzh-mail/releases/download/v0.0.2/pod-tzzh-mail_0.0.2_Linux_x86_64.zip"
   :artifact/executable "pod-tzzh-mail"}
  {:os/name "Mac.*"
   :os/arch "x86_64"
   :artifact/url "https://github.com/tzzh/pod-tzzh-mail/releases/download/v0.0.2/pod-tzzh-mail_0.0.2_Darwin_x86_64.zip"
   :artifact/executable "pod-tzzh-mail"}
  {:os/name "Windows.*"
   :os/arch "amd64"
   :artifact/url "https://github.com/tzzh/pod-tzzh-mail/releases/download/v0.0.2/pod-tzzh-mail_0.0.2_Windows_x86_64.zip"
   :artifact/executable "pod-tzzh-mail.exe"}]}

The required fields are :pod/name, :pod/version and :pod/artifacts. For the sake of programmatical integrity you can populate :pod/description, :pod/example (with a link) and :pod/language fields as well.

You can then load the pod in your babashka script as follows:

(require '[babashka.pods :as pods])
(pods/load-pod 'tzzh/mail "0.0.2")

(require '[pod.tzzh.mail :as m])
(m/send-mail ...)

The :pod/artifacts vector will be matched in order on operating system and architecture. For the first match, the :artifact/url, a zip file, will be downloaded and extracted. After extraction there should be a file with the same name as :artifact/executable which will be made executable and invoked as the pod.