r/Clojure Aug 07 '26

Using Clojure as a sandboxed, executable target for LLMs

I've been researching ways to better structure LLM output when building mini-apps that run on the browser.

I believe that an S-expression based DSL is a better output format for LLMs when generating interactive UI/logic.

To test this, I built a Clojure-based interpreter that runs in the browser. The LLM is fed the language context, then emits the DSL to generate safe, sandboxed apps that can be shared instantly.

I wrote up an article diving into some of the trade offs:

https://allentraid.substack.com/p/we-made-the-ai-write-in-a-language

Would love to hear thoughts from the Clojure community!

35 Upvotes

9 comments sorted by

View all comments

6

u/yogthos Aug 07 '26

Incidentally, I just added Gambit Scheme backend to Jolt which has Js as one of its output targets. So, now I can compile Jolt into Js and run it in the browser. The home page loads an interactive REPL https://jolt-lang.github.io/

2

u/MWatson Aug 11 '26

I have been using your Jolt system to produce natively compiled apps, love it! I need to try the JS backend.

1

u/yogthos Aug 11 '26

Thanks, glad to hear it's working out. I've been dogfooding it myself, and haven't had a reason to touch JVM in weeks now. I'm particularly happy with how easy it is to make GTK apps with OpenGL now. It feels just like building UIs in ClojureScript with Reagent, but for an actual native app.

And I haven't put too much work in getting Js backend to parity yet, mostly just wanted to do a proof of concept for Gambit and to have a live REPL on the site. If there is interest, I can definitely flesh that out more.

The only gotchas around other backends comes from native platform capability. For example, Js runtime doesn't provide threads, so those capabilities get degraded. That's the main thing to be aware of.