pool-anything

One endpoint.Every free key taking turns.

Gather N keys for one provider into a single pool. Every request takes the next key, usage is tracked per key, and it all runs on SQLite with zero dependencies.

Start pooling locally
npm install && npm run dev, then open :3000

37 providers preconfigured, custom is one JSON row. Keys stay local and masked.

Rotation well0 requests

    cursor at key 1

    Your app talks to one place. The pool does the turn-taking.

    One POST picks the next key, injects auth, forwards, and records usage. The cursor is cursor % keys.length, so load spreads evenly.

    your appPOST /proxy
    pool-anythingpick, inject, forward
    key 1 gsk_…ab, 12 used
    key 2 gsk_…9f, 12 used
    key 3 gsk_…c4, 11 used

    Drop-in proxy call

    No SDK. Send path, method, body. The pool adds the key and counts tokens.

    # rotate + proxy in one call
    curl -X POST localhost:3000/api/pools/1/proxy \
      -H 'content-type: application/json' \
      -d '{"path": "/chat/completions",
          "method": "POST",
          "body": {"model": "llama-3.3-70b",
                   "messages": [{"role":"user",
                                 "content":"hi"}]},
          "tokens": 25}'
    
    { "key_id": 3, "status": 200,
      "masked": "gsk_…c4" }

    What each request leaves behind

    Every call appends a usage row. /usage rolls it up per key and pool.

    • #0Press “Fire a request” to move the cursor and fill the ledger.

    Preconfigured, plus bring-your-own

    Groq, OpenRouter, Gemini, and 34 more. Anything else fits the custom row.

    groq (30/min)openrouter (:free)gemini (15/min)mistral (trial)cohere (trial)fireworks ($1)together ($1)openai (payg)anthropic ($5)huggingface (hourly)replicate (trial)elevenlabs (10k/mo)resend (3k/mo)tavily (1k/mo)openweather (1k/day)+ custom

    Run it on your machine

    1. npm install, then npm run dev, open http://localhost:3000.
    2. Search a provider, paste keys, hit Gather.
    3. Send traffic through /api/pools/:id/proxy or the Playground.

    Good to know before you expose it

    1. Keys live in data/pool-anything.db, never committed.
    2. Lists return masked keys only.
    3. No auth built in — localhost or behind your own gate.