Share live objects from your Clojure REPL

Define a sitemap, call connect!, and get a public URL. Anyone who opens it can browse your live Clojure objects through a web UI.

How it works

1
{:deps {com.hyperfiddle/hyperfiddle-agent {:mvn/version "v0-alpha-84678e35"}}}
Add one dependency. No build step.
2
(hfql {(all-ns) {* [ns-name ns-publics]}})
Define a sitemap — a map from symbols to HFQL query trees. Each entry becomes a navigable page. The query describes what to show and how to traverse it.
3
(agent/connect! "wss://yourname.clojure.net/agent" {} sitemap)
Your REPL opens an outbound WebSocket to the cloud proxy. It gets a public URL at yourname.clojure.net. No ports to open, no server to deploy.
Hello World
Browse your loaded namespaces
The simplest possible agent. Exposes (all-ns) as a navigable page — click into any namespace to see its public vars, arglists and docstrings.
REPL
(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)
Datomic
Share a Datomic entity
Point the agent at your Datomic database. Anyone with the link can browse entities, navigate references, and see history — all served live from your transactor.
REPL
(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)

Quick start

Paste into your terminal. No project setup needed.

Terminal
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]}})})"

No REST APIs

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.