A Datomic entity browser for prod
This app is an easy way to get a generic web-based support/diagnostics UI for any production Datomic service, with the ability to extend using Clojure to add custom queries, routes, and views.

A service-aware entity browser for Datomic
Point it at your Datomic-backed service and explore the live data model. Navigate entities, inspect schemas, run queries, see real query stats — all through a fluent, spreadsheet-like UX.
Entity navigator. Click through entities like a hyperlinked graph. Follow references and reverse refs, inspect attributes, jump across entity boundaries.
Searchable EAVT index. Easily find the entity you're looking for and link to it!
Schema and metadata introspection. Surface db-stats, transaction history and other information reified in the database but typically invisible to application developers.
Query-stats explorer. Run your actual queries and see real stats — not a “morally equivalent” pull pattern typed into a shared console. Pull patterns are visualized.
Large database support, fluent virtual scroll over 50k+ records
Spreadsheet-like UX. Sorting, filtering, column picker on every page. Accessible to non-technical investigators.
"It has everything you would want"
A Datomic Entity Browser for Prod — Clojure/conj 2025
Service-intermediated PII-safety architecture
In regulated environments, restricting access to PII is essential. Datomic Browser ships as a library that embeds inside your existing Datomic-backed services. It doesn’t connect directly to a transactor or peer by URI — instead, it reuses the same connection your service already holds. That means all PII access is service-intermediated by your backend functions, giving you a central control point to defend your PII.
Classpath-embedded. Ships as Ring middleware — drop it into any Clojure service or microservice. No sidecar, no separate deploy.
No direct DB URI. The Browser never owns a connection string. Centralized PII controls in your service boundary stay in force.
Service-intermediated query. Securely embed as a Clojure lib with no direct Datomic URI; invoke your actual service query endpoints through your existing ring middleware (auth, etc.), with dependency injection, PII protection, and built-in slow-query supervision.
Bring your own auth. Authentication and authorization are delegated to whatever the enclosing service already uses.
Web-based, designed for internal production use
Your queries, your functions. Write ordinary Clojure functions — ORMs, custom query layers, whatever your stack uses. Any database backend: Datomic, XTDB, SQL, or your own data sources.
You control access. Database connections are dependency-injected — the agent only sees bindings you explicitly provide. You write the queries, so PII filtering and data redaction are handled in your code.
Enterprise-scale. Designed for huge datasets. Streaming virtual scroll over hundreds of thousands of rows. Long-running queries show elapsed time and can be cancelled mid-flight.
Programmable! The builtin functionality is only 300 LOC: nav_datomic.clj. Fork it! Program it! Customize it!
Platform teams, service owners, on-call crash teams, citizen dev investigators
Datomic platform teams. Reduce the support burden of fielding continuous slow-query tickets. Power users self-serve.
Service owners. Diagnose your own alerts. Understand your own data model without a two-week detour through a DB expert’s queue.
On-call and incident responders. Orient inside an unfamiliar service in minutes. The schema and entities are visible; you don’t need to read a README first.
Non-technical investigators. Fraud, compliance, and finance teams navigate service data without writing Datalog. Evidence collection becomes self-service.
Start for free
- starter kit: https://github.com/hyperfiddle/datomic-browser
- live demo: https://datomic-browser.clojure.net/(Inject,'mbrainz-1968-1973')/attributes
License
- free for individual use on local dev machines
- deploying in prod at work requires a license, contact us
- still working out the details
Contact
- dustin@hyperfiddle.net or DM twitter/slack