One Clojure API for managing DNS records across providers.
ol.protocol53 gives Clojure applications one provider-independent API for querying and changing DNS records.
Applications can switch DNS services without changing their record-management code.
The shared API lives in api/.
Provider integrations live in providers/ and translate the common operations into each service’s API.
Protocol53 supports:
-
retrieving records from a zone
-
adding records
-
creating or replacing whole RRsets
-
removing matching records
-
listing available zones
Provider capabilities and limitations vary, but applications use the same core abstractions across every supported integration.
Project status: Experimental.
Until the first release, use the API’s Git coordinate:
{:deps {com.outskirtslabs/protocol53
{:git/url "https://github.com/outskirtslabs/protocol53.git"
:git/sha "4a0ad834256d7e1e1a6a95936ea5e7ca14f13988"
:deps/root "api"}}}Create a provider, then pass it to the common operations with a time budget:
(require '[ol.protocol53 :as protocol53]
'[ol.protocol53.cloudflare :as cloudflare])
(import '[java.time Duration])
(def dns
(cloudflare/provider {:api-token (System/getenv "CLOUDFLARE_API_TOKEN")}))
(protocol53/append-records!
dns
"example.com"
[{:name "_acme-challenge"
:type "TXT"
:ttl 60
:data "challenge-token"}]
{:timeout (Duration/ofSeconds 10)})Operations return either :ol.protocol53/result or :ol.protocol53/error;
expected provider failures do not throw.
ol.protocol53 targets common DNS record operations rather than every
provider-specific feature. DNS record types and provider APIs vary too much for
a universal abstraction, so Protocol53 focuses on the operations applications
use across providers.
ol.clave is Outskirts Labs'
ACME client for automated HTTPS certificate management. ACME DNS-01 validation
needs temporary TXT records, which Protocol53 can manage across its supported
DNS providers.
A direct Clave adapter remains future work.
Copyright © 2026 Casey Link casey@outskirtslabs.com
Distributed under the MIT license.