Pedestal Libraries

Pedestal is composed of multiple libraries, and many of these can be used outside of a Pedestal application.

Table 1. Pedestal Libraries Summary
Library Name Description Dependencies


Common functionality and internal utilities.


Wrapper around Open Telemetry for generating application metrics and tracing.


Wrapper around Simple Logging Facade for Java [1]

pedestal.common, Dropwizard Metrics, Open Tracing


Asynchronous interceptor pipeline

pedestal.log, pedestal.common


Simple error catching for interceptors

pedestal.interceptor, org.clojure/core.match


HTTP request routing

pedestal.log, pedestal.interceptor, pedestal.common, core.async


Container-agnostic HTTP service support

pedestal.log, pedestal.telemetry, pedestal.interceptor, pedestal.route, core.async, Java Servlet API, Java WebSocket API, ring/ring-core, several others


Jetty 11 adapter

pedestal.log, pedestal.service, Jetty 11 (server, servlet, alpn-servicer, http2-service, etc.)


Tools used for local development

pedestal.service, org.clojure/data.xml, ns-tracker

Artifact Coordinates

Pedestal libraries are uploaded to the Clojars repository; files in such a repository are called artifacts.

All pedestal libraries are in the io.pedestal group.

For Leiningen, add this vector to the :dependencies list inside your project.clj:

    [io.pedestal/pedestal.jetty "0.7.0-beta-1"]

You will adjust the library name as necessary.

For Clojure Deps, add this key and value to the :deps map inside your deps.edn:

 io.pedestal/pedestal.jetty {:mvn/version "0.7.0-beta-1"}

Git Artifact Coordinates

Pedestal is built using Clojure Deps; this means that it is possible to get access to bleeding-edge versions of the libraries directly from the GitHub repository.

  io.pedestal/pedestal.jetty {:git/url ""
                              :git/sha "a0b6a0f7e57710ba6b9f0aa3a62dd1f68e278f43"
                              :deps/root "jetty"}

All Pedestal libraries are in the same repository, :deps/root is used to select the sub-directory containing the library’s code (this matches the library name, without the pedestal. prefix).

:git/url’s are not transitive; when the library you select has dependencies on other Pedestal libraries, those will be accessed as :mvn/version dependencies. You may need to provide additional dependencies to bring in multiple Pedestal libraries.

For example, if you are verifying a bug fix that was split between pedestal.route and pedestal.service, you should introduce dependencies on both libraries; otherwise you may only get half of the bug fix.

1. Also, some deprecated metrics and tracing functionality.