FreeLLMAPI ist ein Open-Source-Gateway (MIT-Lizenz), das auf deinem eigenen Rechner läuft. Es spricht zwei Dialekte: die OpenAI-API und die Anthropic-Messages-API. Darum lässt es sich mit fast jedem Tool verbinden, das du schon nutzt, auch mit Claude Code.
Dahinter passiert Folgendes: Du hinterlegst Gratis-Keys bei den Anbietern, zum Beispiel Google, Groq oder Mistral. Bei jeder Anfrage wählt ein Router das beste verfügbare Modell. Läuft bei einem Anbieter das Kontingent voll (HTTP 429) oder gibt es einen Serverfehler, probiert er das nächste Modell.
Pro Key zählt er mit, damit du unter den Limits bleibst. Deine Keys liegen verschlüsselt (AES-256-GCM) in einer lokalen SQLite-Datenbank. Deine Apps sehen nur einen einzigen Schlüssel mit dem Präfix freellmapi-.
Die Zahlen aus dem README, Stand 29. Oktober 2026: 34 Anbieter, 635 kostenlose Modell-Endpunkte (584 davon für Chat) und zusammen rund 7,4 Milliarden Tokens im Monat an gelistetem Gratis-Kontingent. Das ist die Summe der Anbieter-Limits laut Katalog.
Wie viel davon bei dir ankommt, hängt von den Keys ab, die du einträgst. Das Repo hat inzwischen über 40.000 Sterne auf GitHub.
curl -fsSL https://freellmapi.co/install.sh | bash
Das Skript legt ~/freellmapi an, erzeugt einen Verschlüsselungsschlüssel, lädt das Docker-Image und startet den Container. Du kannst das Skript vorher lesen: freellmapi.co/install.sh. Erneutes Ausführen ist sicher, deine .env und der Schlüssel bleiben erhalten, nur der Container wird aktualisiert.
Öffne danach http://localhost:3001. Server-Installationen (Docker, Ein-Zeilen-Skript) sind durch ein Konto mit E-Mail und Passwort geschützt. Die Desktop-App meldet sich selbst an.
Zwei Alternativen, falls du das Skript nicht magst:
openssl rand -hex 32 einen ENCRYPTION_KEY erzeugen, in eine .env schreiben (zusammen mit PORT=3001) und docker compose up -d ausführen..dmg (macOS) oder .exe (Windows) aus den GitHub Releases. Der einzige Zugang ist der Unified Key im Tray-Popover.freellmapi- und ist der einzige Schlüssel, den deine Tools je sehen.Fang mit drei Anbietern an. Mehr Keys bedeuten mehr Gratis-Kontingent und mehr Ausweichmöglichkeiten, aber auch mehr AGB, die du akzeptiert hast (dazu unten mehr).
curl -i http://localhost:3001/v1/chat/completions \
-H "Authorization: Bearer freellmapi-dein-key" \
-H "Content-Type: application/json" \
-d '{"model": "auto", "messages": [{"role": "user", "content": "Sag Hallo in einem Satz."}]}'
"model": "auto" überlässt dem Router die Wahl. In den Antwort-Headern steht X-Routed-Via: anbieter/modell: So siehst du, wer wirklich geantwortet hat. Musste der Router ausweichen, kommt X-Fallback-Attempts dazu.
Claude Code erwartet die Wurzel-URL des Servers, ohne /v1, weil es den Pfad der Anthropic-API selbst anhängt. Es gibt drei Wege.
Variante A: Setup-Befehl. Er liest die Modelle aus deinem Live-Katalog, legt ein Backup deiner Konfiguration an und führt die Änderung mit der bestehenden zusammen:
npx freellmapi setup-claude --url http://localhost:3001 --api-key freellmapi-dein-key --dry-run
npx freellmapi setup-claude --url http://localhost:3001 --api-key freellmapi-dein-key
Der erste Aufruf zeigt dir nur den Unterschied, der zweite schreibt.
Variante B: launch. Startet Claude Code mit den Zugangsdaten nur für diesen einen Lauf, es landet nichts in einer Konfigurationsdatei:
export FREELLMAPI_API_KEY=freellmapi-dein-key
npx freellmapi launch
Für das Überbrücken eines leeren Limits ist das mein Weg: Du startest die Gratis-Variante bewusst, und dein normales Setup bleibt, wie es ist.
Variante C: von Hand.
export ANTHROPIC_BASE_URL=http://localhost:3001
export ANTHROPIC_AUTH_TOKEN=freellmapi-dein-key
claude
Nimm ANTHROPIC_AUTH_TOKEN, nicht ANTHROPIC_API_KEY. Claude Code behandelt einen gesetzten ANTHROPIC_API_KEY als konkurrierende Anmeldung und startet gar nicht erst.
Welche Gratis-Modelle hinter den Claude-Namen stecken, steuerst du im Dashboard unter Keys, Reiter Anthropic: Jede Familie (default, opus, sonnet, haiku) läuft auf auto oder auf ein Modell, das du festlegst.
Das ist der Grund, warum ich das Tool überhaupt zeige. Dein Limit ist leer, der Reset ist Stunden entfernt, und du willst weiterkommen. Du startest Claude Code über FreeLLMAPI (Variante B) und gibst ihm Aufgaben, die klein genug für ein schwächeres Modell sind:
Meine Faustregel: Für Fleißarbeit reicht das, für anspruchsvolles Coding wartest du lieber, bis dein Limit zurück ist. Entscheidungen über die Architektur gehören nicht auf ein Gratis-Modell, das am Nachmittag schon halb ausgelastet ist (dazu mehr bei den Grenzen). Brauchst du für Code ein anderes Verhalten als für Chat, setzt du den Header X-FreeLLM-Task-Type: code. Er verschiebt die Gewichtung des Routers leicht zugunsten von Intelligenz statt Tempo.
Dasselbe Gateway bedient auch jedes OpenAI-kompatible Skript. Du ersetzt nur die Basis-URL. Ein Beispiel: Kundennachrichten nach Stimmung sortieren.
from openai import OpenAI
client = OpenAI(base_url="http://localhost:3001/v1", api_key="freellmapi-dein-key")
texte = ["Der Versand dauert ewig.", "Super Support, danke!", "Wie kündige ich?"]
for text in texte:
antwort = client.chat.completions.create(
model="auto:fast",
messages=[
{"role": "system", "content": "Antworte mit genau einem Wort: positiv, negativ oder neutral."},
{"role": "user", "content": text},
],
)
print(text, "->", antwort.choices[0].message.content.strip())
auto:fast rankt die Modelle nach gemessenem Tempo. Es gibt weitere Strategien: auto:smart (höchste Intelligenz), auto:reliable (jüngste Erfolgsquote) und auto:balanced (der Standardmix). Bei Hunderten Texten läuft das Kontingent einzelner Anbieter irgendwann voll, der Router weicht dann aus, und dein Skript merkt davon nichts. Das Gateway kennt außerdem Embeddings (/v1/embeddings), Transkription und Bildgenerierung, soweit ein Anbieter in deiner Liste sie kostenlos anbietet.
Mit dem virtuellen Modell fusion schickt der Router deine Frage parallel an mehrere verschiedene Gratis-Modelle. Ein Richter-Modell baut aus den Entwürfen eine Antwort. Das taugt für Dinge, bei denen eine einzelne Antwort zu zufällig wäre: eine Entscheidung gegenprüfen, einen Plan auf Lücken abklopfen oder Code auf Schwächen lesen.
curl http://localhost:3001/v1/chat/completions \
-H "Authorization: Bearer freellmapi-dein-key" \
-H "Content-Type: application/json" \
-d '{"model": "fusion", "messages": [{"role": "user", "content": "Prüfe diesen Plan auf Schwächen: ..."}]}'
Welche Modelle im Panel sitzen und welches richtet, stellst du im Dashboard unter Fusion ein oder pro Anfrage über das Feld fusion. Jede Teilanfrage läuft durch das normale Routing und verbraucht Kontingent. Eine Fusion-Anfrage kostet dich also ein Vielfaches einer normalen.
ANTHROPIC_API_KEY gesetzt. Nimm ANTHROPIC_AUTH_TOKEN.http://localhost:3001, OpenAI-kompatible Tools bekommen http://localhost:3001/v1.127.0.0.1. Starte ihn mit HOST_BIND=0.0.0.0, aber nur im Heimnetz.127.0.0.1 gilt im Container nicht. Setze PROXY_URL=socks5h://host.docker.internal:7890 (Port anpassen) und lass den Proxy Verbindungen von außerhalb von Loopback zu.docker compose logs -f freellmapi) und gilt 15 Minuten.Die Grenzen stehen im Repo selbst, ich gebe sie hier ungeschönt weiter:
Zum Katalog: Free-Installationen holen ihn aus einem Monats-Snapshot. Ein neues Modell kommt dort 30 Tage später an als bei der bezahlten Variante (19 US-Dollar im Jahr, laut README). Funktionieren tut alles auch ohne. Laut README bleiben Prompts, Antworten und Provider-Keys bei dir.
coding an und sprich sie mit auto:coding an.npx freellmapi setup-<agent> ein.Kein Spam, jederzeit abbestellbar
