← All packages

@lacspace/keypool

v1.0.0LLM Efficiency0 deps

Provider-agnostic API-key rotation and rate-limit accounting — pool N free keys per provider, track RPM/RPD/TPM/TPD windows (per model), round-robin among healthy keys, cool down on 429 via retry-after, quarantine invalid keys, and share state across processes via an adapter. pick(provider, model, estTokens) → key | null. Zero-dependency, isomorphic.

npm i @lacspace/keypool

Usage

keypool.ts
import { createKeypool } from "@lacspace/keypool";

const pool = createKeypool({
  keys: [
    { id: "gem-1", provider: "gemini", secret: process.env.GEMINI_1! },
    { id: "gem-2", provider: "gemini", secret: process.env.GEMINI_2! },
  ],
  providerLimits: { gemini: { rpm: 15, rpd: 1500, tpm: 1_000_000 } },
});

const picked = await pool.pick("gemini", "gemini-2.0-flash", estTokens);
if (!picked) throw new Error("all keys cooling down");
const res = await callGemini(picked.secret, prompt);
await pool.report(picked.id, { ok: true, tokens: res.usage.total, model: "gemini-2.0-flash" });

Exports 2

createKeypoolkvStore

Keywords

api-keykey-rotationrate-limitkeypoolround-robin429retry-afterquotageminigroq

More in LLM Efficiency