rafram 3 days ago

This is cool, but does no one even look at what libraries they're shipping anymore? I mean, why does this Clippy-style LLM interface bundle:

- A JavaScript implementation of the Jinja templating language

- A full GitHub API client

- A library that takes a string and tells you if it's a valid npm package name

- A useless shim for the JavaScript Math module

And 119 other libraries? This thing would have taken up 10% of the maximum disk space available on a Windows 95 FAT16 volume.

5
felixrieseberg 3 days ago

The real answer is that some of us (the Electron maintainers) have been playing with local LLMs in desktop apps and right now, node-llama-cpp is by far the easiest way to experiment - but it's also not meant for desktop apps and hence has _a lot_ of dependencies.

In general, pruning libraries in Electron isn't as easy as it should be - it's probably something for us to work on.

anaisbetts 3 days ago

So to be clear, your complaint is that the nostalgia Clippy app that puts a cartoon paper clip on your desktop, isn't efficient enough?

rafram 3 days ago

I think it’s legitimate to ask why these dependencies are necessary. LLMs have created whole new classes of vulnerabilities, and things like a GitHub client (which downloads arbitrary data/code) and a templating engine (which executes it) expose an even larger attack surface.

If someone’s going to get RCE on my machine, I don’t want it to be through the silly Clippy LLM UI, you know?

criddell 3 days ago

Maybe it was vibe coded and the libraries were added while going down paths that turned out to be dead ends and the LLM never cleaned up after itself?

coder543 3 days ago

People have been perfectly capable of making that mistake themselves since long before "vibe coding" existed.

NitpickLawyer 3 days ago

> A JavaScript implementation of the Jinja templating language

A guess without looking into the code: Jinja templating is used to define how to prompt the model (i.e. system first, then this specific character / token, then user, then if it's a tool prepend this and append that, etc.)

xyc 3 days ago

It seems that this is possibly not necessary, since LLaMA.cpp already integrates Jinja with CPP implementation (through minja)

pvg 3 days ago

I think this is explained on the linked project page:

This project isn't trying to be your best chat bot. I'd like you to enjoy a weird mix of nostalgia for 1990s technology paired with one the most magical technologies we can run on our computers in 2025.

You might be looking for the more minimalist Grumpy which is hand-hewn from a pure silicon monocrystal.