finds.dev← search

// the find

unclebob/uml-viewer

★ 375 · Clojure · updated Sep 2026

Live Quil UML class-diagram viewer driven by EDN

A live UML viewer for Clojure projects: it parses namespaces and dependencies into an EDN IR, renders them as an interactive class diagram with Quil, and pairs the viewer with an AI agent (currently Grok via tmux) that can propose architecture changes and rewrite code to match. It's aimed at Clojure teams who want a live, drillable architecture view tied to real coverage and mutation metrics, not a static export.

It actually enforces the Clean Architecture dependency rule computationally — edges are marked violating based on :levels rank, not just drawn and left for a human to judge. The diagram is wired to real metrics (CRAP via crap4clj, mutation via clj-mutate) so box color reflects test quality, not just structure. The viewer/companion IPC is a deliberately simple queued-EDN mailbox with rising ids and pop-on-handle semantics, which is a sane way to keep two long-running JVM/agent processes from racing each other. The LanguageGraph/LanguageSource protocols genuinely decouple the layout and policy engine from Clojure specifics, so the core isn't hard-wired to one parser.

Despite the language-neutral design, only the Clojure scanner and source extractor exist — Java or any other language means writing both from scratch before you get any value. The companion agent loop depends on tmux plus a specific Terminal-window lifecycle and a particular CLI (Grok, launched with --yolo --trust), which is a heavy and fairly brittle piece of tooling to depend on for what should be a viewer. Metrics aren't generated automatically alongside the diagram — you have to remember to run crap4clj and clj-mutate and commit .metrics/ yourself, so a stale snapshot silently understates risk. Renaming or moving a function breaks the metrics overlay match with no warning surfaced in the UI, so you can lose CRAP/coverage data for a class and not notice.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →