Define a sitemap, call connect!, and get a public URL.
Anyone who opens it can browse your live Clojure objects
through a web UI.
yourname.clojure.net. No ports to open, no server to deploy.(all-ns) as a navigable page —
click into any namespace to see its public vars, arglists and docstrings.
(require '[hyperfiddle.navigator-agent :as agent] '[hyperfiddle.hfql2 :refer [hfql]]) (def sitemap {'ns (hfql {(all-ns) {* [ns-name ns-publics]}})}) (agent/connect! "wss://yourname.clojure.net/agent" {} sitemap)
(require '[datomic.api :as d]) (def conn (d/connect "datomic:dev://localhost:4334/mbrainz")) (def sitemap {'entity (hfql {(d/entity (d/db conn) :artist/name) [*]})}) (agent/connect! "wss://yourname.clojure.net/agent" {} sitemap)
Anything you can write a Clojure function for. Here are some sitemaps that already exist:
Paste into your terminal. No project setup needed.
clj -Sdeps '{:deps {com.hyperfiddle/hyperfiddle-agent {:mvn/version "v0-alpha-84678e35"}}}' \ -M -e "(require '[hyperfiddle.navigator-agent :as agent] '[hyperfiddle.hfql2 :refer [hfql]]) (agent/connect! (str \"wss://\" (subs (str (random-uuid)) 0 8) \".clojure.net/agent\") {} {'ns (hfql {(all-ns) {* [ns-name ns-publics]}})})"
HFQL queries replace REST endpoints. There's no serialization layer, no glue code, no API versioning. The browser navigates your Clojure objects directly over a WebSocket.