ol.protocol53
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.
Installation
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" }}}
Quick Start
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.
Scope
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.
Related Projects
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.
License
Copyright © 2026 Casey Link casey@outskirtslabs.com
Distributed under the MIT license.