cd /news/developer-tools/i-open-sourced-3-small-node-utilitie… · home topics developer-tools article
[ARTICLE · art-134773] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=↑ positive

I open-sourced 3 small Node utilities I pulled out of building an edtech platform

A developer building MCQplex, an exam-prep platform for Nepal's NEB curriculum, has open-sourced three small Node.js utilities extracted from that work. The packages include llm-free-cascade, which fails over across free-tier LLM APIs such as Gemini, Groq, and Cerebras with multi-key rotation and provider cooldowns; a warm-browser Puppeteer PDF renderer with a concurrency cap; and a MongoDB-backed advisory lock for node-cron jobs running across multiple instances. All three are MIT licensed, tested, and published to npm, with the developer inviting PRs, especially to update stale free-tier model names in providers.json.

by read1 min views1 publishedSep 19, 2026

I've spent the last while building MCQplex, an exam-prep

platform for Nepal's NEB curriculum. Along the way I built a few pieces of

infrastructure that had nothing to do with exams specifically, so I pulled

them out into their own packages:

Free-tier LLM APIs (Gemini, Groq, Cerebras, and others) are individually

rate-limited, but between them they add up to a lot of free inference if you

just fail over from one to the next. This cascades a chat completion across

however many you've got keys for, with automatic multi-key rotation (if

you've made more than one free account on a provider) and cooldown for a

provider that's structurally broken. Zero dependencies.

const { LLMCascade } = require('llm-free-cascade');
const cascade = LLMCascade.fromEnv();
const { text, provider } = await cascade.generate({ system, user });

Launching a fresh headless Chromium per PDF (the naive way to use Puppeteer)

costs 1-2 seconds and ~200MB of RAM every time. This keeps one browser warm

and gives each render its own page, with a concurrency cap so a burst of PDF

requests queues instead of taking the server down.

If you run node-cron jobs on more than one instance (PM2 cluster, several

servers), every instance fires the job unless you do something about it.

This is a tiny MongoDB-backed advisory lock — steal-on-expiry, so a crashed

holder can't deadlock the job forever — for whatever Mongo connection you

already have.

All three: zero or optional-peer dependencies, MIT licensed, tested, on npm.

Feedback / PRs welcome, especially on llm-free-cascade since free-tier

model names drift constantly and providers.json is set up so a one-file PR

fixes a stale one.

── more in #developer-tools 4 stories · sorted by recency
── more on @mcqplex 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-open-sourced-3-sma…] indexed:0 read:1min 2026-09-19 ·