npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-nodes-panda-free-llm

v0.4.1

Published

An n8n node that sends a prompt to multiple FREE LLM providers (Groq, Cerebras, Google Gemini, OpenRouter, Mistral) with automatic failover when one hits its rate limit or daily quota.

Readme

n8n-nodes-panda-free-llm

An n8n community node that sends a prompt to multiple free LLM providers with automatic failover. If the first provider is rate-limited, out of daily quota, busy, times out, or returns an empty answer, the node automatically tries the next one — and so on — until one succeeds.

Because every provider here exposes an OpenAI-compatible /chat/completions endpoint, the node uses a single request shape for all of them.

Supported free providers: Groq, Cerebras, Google Gemini (AI Studio), OpenRouter, Mistral.

How it works

You give the node a fixed System Prompt and a per-run User Prompt. It walks your provider list top-to-bottom and returns the first successful reply, plus an attempts log showing what happened with each provider.

output    → the model's text answer
provider  → which provider answered
model     → which model answered
usage     → token usage (if the provider returns it)
attempts  → per-provider log (great for debugging quotas)

Installation (self-hosted)

  1. In n8n, go to Settings → Community Nodes → Install.
  2. Enter the package name: n8n-nodes-panda-free-llm
  3. Confirm, and the Panda Free LLM node appears in the nodes panel.

Unverified community nodes run on self-hosted n8n. They are not available on n8n Cloud unless verified by n8n.

Credentials

Create one Panda Free LLM API credential and paste in only the keys you have (blank providers are skipped automatically):

| Field | Get a free key at | |-------|-------------------| | Groq API Key | https://console.groq.com/keys | | Cerebras API Key | https://cloud.cerebras.ai | | Google AI Studio (Gemini) API Key | https://aistudio.google.com/apikey | | OpenRouter API Key | https://openrouter.ai/keys | | Mistral API Key | https://console.mistral.ai/api-keys |

Usage

  • System Prompt — your fixed instructions (set once).
  • User Prompt — defaults to ={{ $json.text }}. Map it to whatever field carries your input, e.g. ={{ $json.message }}.
  • Response FormatText (plain text) or JSON. In JSON mode the node sends response_format: { type: "json_object" }, nudges the prompt to return JSON, and also returns the parsed object in outputParsed (handy for feeding straight into a database).
  • Provider — the provider to try first.
  • Model — a live dropdown of models for the selected provider (reopen it after changing the provider to refresh). OpenRouter is filtered to :free models. Leave blank to use the provider's default.
  • Enable Failover + Fallback Models (in order) — if the primary fails (rate limit, quota, busy, timeout, empty), the node tries each fallback in order. Each fallback row is a single Provider — Model dropdown from the live list, so you can pick a specific model per fallback (including the same provider with a different model). Exact duplicates of the primary are skipped automatically.
  • Options — Max Tokens, Temperature, Timeout (ms), and "Throw If All Providers Fail" (turn off to output success:false instead of erroring).

Output fields: output (text), provider, model, usage, attempts, and — in JSON mode — outputParsed.

JSON mode relies on each provider's OpenAI-compatible JSON support, which varies by model. If a model doesn't honor it, the prompt instruction still pushes it toward JSON, and a provider that rejects response_format simply fails over to the next.

License

MIT