Eigene Modelle in Factory Droid: Claude und GPT mit eigenem API-Key nutzen
Eine settings.json brachte Droid 1.0.0 auf Claude Sonnet 5.5, GPT-6.1 Terra und MiniMax M3.1 Flash – mit einem Schlüssel. Hier steht die Datei, der passende Provider je Modell und die vier Fehler, auf die wir gestoßen sind.
Auf dieser Seite
- Kurz gesagt
- Welchen Provider-Wert brauchen Sie?
- Unsere settings.json
- Wie wählen Sie ein eigenes Modell in Droid aus?
- Drei Modelle, derselbe Bug
- Brauchen Sie ein Factory-Konto oder einen Plan?
- Welche Fehler treten auf, und was hilft dagegen?
- FAQ
- Wo liegt die Droid-Settings-Datei unter Windows?
- Warum erscheint mein eigenes Modell nicht in /model?
- Können eigene Modelle Bilder lesen?
- Kann ich den Reasoning-Aufwand für ein eigenes Modell festlegen?
- Funktionieren eigene Modelle in der Droid-Desktop-App?
- Geprüfte Quellen
Tragen Sie jedes Modell in customModels in ~/.factory/settings.json ein – mit model, baseUrl, apiKey und provider. Nehmen Sie anthropic für Claude mit blankem Host, openai für GPT und generic-chat-completion-api für alles andere. Auf Droid 1.0.0 haben Claude Sonnet 5.5, GPT-6.1 Terra und MiniMax M3.1 Flash denselben Bug in 33,7, 77,4 und 30,7 Sekunden behoben.
Alle drei Läufe gingen über OmniaKey mit einem einzigen Schlüssel – so kamen wir an Claude Sonnet 5.5, GPT-6.1 Terra und MiniMax M3.1 Flash. Jedes Modell bekam dieselbe kaputte median()-Funktion und reparierte sie.
Kurz gesagt
- Wohin es gehört.
customModelsin~/.factory/settings.json(Factorys Settings-Doku, geprüft am 30. Oktober 2026), mitmodel,baseUrl,apiKeyundprovider. - Welcher Provider.
anthropicfür Claude,openaifür GPT-Modelle,generic-chat-completion-apifür alles andere, das Chat Completions spricht. - Wohin
/v1gehört.anthropicbekommt den blanken Host, weil Droid/v1/messagesselbst anhängt;openaiundgeneric-chat-completion-apibekommen eine URL, die auf/v1endet. - Die ID für
droid exec.custom:, dann der Anzeigename mit Bindestrichen statt Leerzeichen, dann die Position ab 0:custom:Claude-Sonnet-5.5-[OmniaKey]-0. - Was die Läufe zeigten. Alle drei haben den Bug behoben; 30,7 s für Flash, 33,7 s für Claude, 77,4 s für GPT-6.1 Terra.
Welchen Provider-Wert brauchen Sie?
Wählen Sie den Provider nach der API, die Ihr Endpunkt spricht, nicht nach dem Modellnamen.
anthropicschickt Anfragen an die Anthropic Messages API. Passt für Claude; die Basis-URL von Anthropic isthttps://api.anthropic.com.openaischickt Anfragen an die OpenAI Responses API. Passt für GPT-Modelle; die Basis-URL von OpenAI isthttps://api.openai.com/v1.generic-chat-completion-apischickt Anfragen an die OpenAI Chat Completions API. Passt für die meisten anderen Modelle, Gateways und lokalen Server, mit der/v1-URL des jeweiligen Anbieters.
Factory nennt generic-chat-completion-api für OpenRouter, Fireworks, Together AI, Ollama, vLLM und die meisten Open-Source-Anbieter und empfiehlt den Wert, solange Sie nicht die offizielle API von OpenAI oder Anthropic aufrufen (Factorys BYOK-Doku, geprüft am 30. Oktober 2026).
Ein Gateway, das auch die Messages API oder die Responses API spricht, kann anthropic oder openai verwenden. Unsere Einträge für Claude und GPT-6.1 Terra taten das über OmniaKey, und beide liefen; OmniaKey bedient GPT-Modelle unter POST /v1/responses (OmniaKeys Doku zur OpenAI-Kompatibilität, geprüft am 30. Oktober 2026).
Es gibt noch einen vierten Wert: bedrock-converse ist für Modelle auf der Converse API von AWS Bedrock gedacht. Factory weist darauf hin, dass nur Anthropic- und OpenAI-Modelle auf den offiziellen APIs vollständig getestet und gebenchmarkt sind und dass Modelle unter 30 Milliarden Parametern beim agentischen Programmieren deutlich schlechter abschneiden (Factorys BYOK-Doku, geprüft am 30. Oktober 2026).
Unsere settings.json
Droid legt ~/.factory/settings.json beim ersten Start an; ergänzen Sie customModels in der Datei, die schon da ist (Factorys Settings-Doku, geprüft am 30. Oktober 2026). Unsere sieht so aus:
{
"customModels": [
{
"model": "claude-sonnet-5-5",
"displayName": "Claude Sonnet 5.5 [OmniaKey]",
"baseUrl": "https://api.omniakey.com",
"apiKey": "${OMNIAKEY_API_KEY}",
"provider": "anthropic",
"maxOutputTokens": 16000
},
{
"model": "gpt-6.1-terra",
"displayName": "GPT-6.1 Terra [OmniaKey]",
"baseUrl": "https://api.omniakey.com/v1",
"apiKey": "${OMNIAKEY_API_KEY}",
"provider": "openai",
"maxOutputTokens": 16000
},
{
"model": "minimax-m3.1-flash",
"displayName": "MiniMax M3.1 Flash [OmniaKey]",
"baseUrl": "https://api.omniakey.com/v1",
"apiKey": "${OMNIAKEY_API_KEY}",
"provider": "generic-chat-completion-api",
"maxOutputTokens": 16000
}
]
}
modelist die ID, die an die API geht; kopieren Sie sie aus der Modellliste des Anbieters.displayNameist Ihr eigenes Label: Es erscheint in/modelund bildet diecustom:-ID.baseUrlist der blanke Host füranthropicund endet bei den anderen beiden auf/v1.apiKey: "${OMNIAKEY_API_KEY}"liest den Schlüssel aus einer Umgebungsvariable, damit er nicht in der Datei steht (Factorys BYOK-Doku, geprüft am 30. Oktober 2026).providerlegt die API fest; ein Tippfehler hier führt zum Fehler „Invalid provider“ weiter unten.maxOutputTokens: 16000begrenzt die Länge jeder Antwort.
Ein Schlüssel und zwei Basis-URLs decken alle drei Modelle ab: der blanke Host von OmniaKey für Claude, sein /v1-Host für die anderen beiden. Wenn Sie die Einrichtung für Coding-Agenten bei OmniaKey schon hinter sich haben, funktioniert derselbe Schlüssel auch hier.
Factory sagt, dass Schlüssel lokal bleiben und nicht auf Factory-Server hochgeladen werden (Factorys BYOK-Doku, geprüft am 30. Oktober 2026). Ältere Anleitungen legen Modelle in ~/.factory/config.json ab. Die BYOK-Doku von Factory schreibt weiterhin, dass Droid sie beim Start nach settings.json kopiert. Ein Pull Request im GitHub-Repository von Factory (#76) besagt, dass eine am 15. Oktober 2026 zusammengeführte Codeänderung dieses Kopieren entfernt hat – legen Sie neue Modelle also direkt in settings.json ab.
Wie wählen Sie ein eigenes Modell in Droid aus?
Öffnen Sie in der App /model und schauen Sie unter Custom Models; auf der Kommandozeile übergeben Sie eine custom:-ID an droid exec.
Laut Factory-Doku erscheinen gespeicherte Modelle dort mit ihrem displayName, und Sie können eines unter /settings > Custom models oder /model > Manage custom models hinzufügen (geprüft am 30. Oktober 2026).
Die droid exec-ID besteht aus custom:, dem Anzeigenamen mit Bindestrichen statt Leerzeichen, einem Bindestrich und der Position des Modells in customModels, ab 0 gezählt (Factorys droid exec-Doku, geprüft am 30. Oktober 2026). Bei uns kamen custom:Claude-Sonnet-5.5-[OmniaKey]-0, custom:GPT-6.1-Terra-[OmniaKey]-1 und custom:MiniMax-M3.1-Flash-[OmniaKey]-2 heraus.
Der Index folgt der Reihenfolge im Array. Schieben Sie ein Modell dazwischen, verschieben sich alle IDs darunter; kopieren Sie die ID nach dem Bearbeiten der Datei neu.
-r / --reasoning-effort in droid exec greift bei eigenen Modellen nicht (Factorys droid exec-Doku, geprüft am 30. Oktober 2026). Setzen Sie stattdessen reasoningEffort im Eintrag.
Drei Modelle, derselbe Bug
Zwei Dateien, ein Befehl, ein Lauf pro Modell. stats.py:
def median(values):
"""Return the median of a non-empty list of numbers."""
ordered = sorted(values)
mid = len(ordered) // 2
return ordered[mid]
test_stats.py:
from stats import median
assert median([3, 1, 2]) == 2
assert median([4, 1, 3, 2]) == 2.5
assert median([5]) == 5
assert median([1.5, 2.5]) == 2.0
print("all tests passed")
Der Befehl, bei dem sich zwischen den Läufen nur der Wert von --model ändert:
droid exec --auto medium -o json --model "custom:Claude-Sonnet-5.5-[OmniaKey]-0" "python3 test_stats.py fails. Fix the bug in stats.py without changing the tests, run python3 test_stats.py again, and tell me in one sentence what you changed."
| Modell | Zeit | Turns | Ausgabe-Tokens |
|---|---|---|---|
| Claude Sonnet 5.5 | 33,7 s | 3 | 702 |
| GPT-6.1 Terra | 77,4 s | 4 | 451 |
| MiniMax M3.1 Flash | 30,7 s | 4 | 525 |
Das sind Droids eigene Zahlen (duration_ms, num_turns, output_tokens). Flash war mit 30,7 s am schnellsten, Claude brauchte die wenigsten Turns, und GPT-6.1 Terra brauchte mit 77,4 s am längsten. Das erste Token meldete Droid nach 8,7 s bei Claude, 17,8 s bei Terra und 7,0 s bei Flash. Alle drei haben den Bug behoben, ohne test_stats.py anzufassen, und die Tests meldeten all tests passed.
Claudes Änderung:
- return ordered[mid]
+ if len(ordered) % 2:
+ return ordered[mid]
+ return (ordered[mid - 1] + ordered[mid]) / 2
GPT-6.1 Terra setzte denselben Zweig über die alte Rückgabezeile, und MiniMax M3.1 Flash schrieb ihn mit % 2 == 1. Alle drei Antworten beschrieben genau diese Korrektur: bei gerader Anzahl die beiden mittleren Werte mitteln. Der Test zu MiniMax M3.1 Flash geht ausführlicher auf das Modell ein.
Im JSON-Ergebnis von Droid stand außerdem bei jedem Lauf factory_credits, obwohl wir nie angemeldet waren: 31.534 für Claude Sonnet 5.5, 4.830 für GPT-6.1 Terra und 835 für MiniMax M3.1 Flash. Die Doku von Factory erklärt nicht, was die Zahl misst und wie sie mit dem BYOK-Kontingent zusammenhängt (geprüft am 30. Oktober 2026).
Brauchen Sie ein Factory-Konto oder einen Plan?
Bei unseren Läufen brauchte droid exec mit einem custom:-Modell kein Factory-Konto. Factorys eigene Modelle und die interaktive App fragten danach.
Droid CLI 1.0.0 erschien am 29. Oktober 2026 (Factorys Changelog, geprüft am 30. Oktober 2026). In einem frischen Home-Verzeichnis ohne Factory-Anmeldung lief jeder Aufruf von droid exec mit einem custom:-Modell über unseren eigenen Schlüssel. Derselbe Befehl ohne --model brach sofort ab mit „Authentication failed. Please log in using /login or set a valid FACTORY_API_KEY environment variable.“ („Anmeldung fehlgeschlagen. Bitte melden Sie sich mit /login an oder setzen Sie eine gültige Umgebungsvariable FACTORY_API_KEY.“). Der Changelog-Eintrag zu Factory v0.236.0 (8. Oktober 2026) behandelt fortgesetzte Sitzungen: „Droid exec now resumes a session on your own model credentials without a Factory sign-in.“ („Droid exec setzt eine Sitzung jetzt mit Ihren eigenen Modell-Zugangsdaten fort, ohne Anmeldung bei Factory.“)
Der Start von droid ohne Argumente im selben Ordner endete mit „Please login with your Factory account to continue.“ („Bitte melden Sie sich mit Ihrem Factory-Konto an, um fortzufahren.“). Ohne Anmeldung konnten wir eigene Modelle in der interaktiven oder der Desktop-App nicht ausprobieren, und Bild-Eingaben, Bedrock, apiKeyHelper, reasoningEffort, Thinking-Einstellungen, Windows, Sitzungen über eine Aufgabe hinaus sowie die alte config.json haben wir nicht getestet.
Factorys Individual-Pläne kosten $20 (Pro), $100 (Plus) und $200 (Max) pro Monat; die Preisseite ergänzt Teams mit $60 pro Monat und Team plus $40 pro Sitz und kennt keinen kostenlosen Individual-Plan (Factorys Preis-Doku und Preisseite, geprüft am 30. Oktober 2026).
Die Preisdoku für Individual-Pläne sagt: „BYOK is free up to an allowance on all Individual plans. After that, usage is charged according to your specific plan.“ („BYOK ist bis zu einem Kontingent in allen Individual-Plänen kostenlos. Danach wird die Nutzung nach Ihrem jeweiligen Plan abgerechnet.“) Wie groß dieses Kontingent ist und wie die Abrechnung danach aussieht, schreibt Factory nicht.
Persönliche eigene Modelle funktionieren in der CLI und in der Desktop-App, erscheinen aber nicht in den gehosteten Web- und Mobile-Apps von Factory (Factorys BYOK-Doku, geprüft am 30. Oktober 2026).
Welche Fehler treten auf, und was hilft dagegen?
Jeder dieser Fehler kam von einem falschen Wert in einer sonst funktionierenden Einrichtung, auf Droid 1.0.0.
-
anthropicmit/v1in der Basis-URL. Droid meldete nach 0,9 s „Requested model was not found on the API provider“ („Das angefragte Modell wurde beim API-Anbieter nicht gefunden“), und im Log stand404zuInvalid URL (POST /v1/v1/messages). Droid hängt/v1/messagesselbst an, unser/v1verdoppelte es also. Lösung: der blanke Host,https://api.anthropic.comoderhttps://api.omniakey.com. -
openaimit dem blanken Host. Droid meldete nach 1,4 s404und eine nginx-Seite „404 Not Found“; die Responses API liegt unter/v1. Lösung:https://api.openai.com/v1oderhttps://api.omniakey.com/v1. -
Eine Modell-ID mit Punkten,
claude-sonnet-5.5, stattclaude-sonnet-5-5. Der Endpunkt antwortete mit503, dem Codemodel_not_foundund der Meldung „No available channel for model claude-sonnet-5.5“ („Kein verfügbarer Kanal für Modell claude-sonnet-5.5“). Droid protokollierte jeden Fehlschlag als „overloaded“ und machte 259,7 Sekunden lang (etwa 4 Minuten 20 Sekunden) 10 Versuche, bevor es mit dieser Meldung abbrach. Die Formulierung stammt vom Gateway, das Wiederholen von Droid. Lösung: die exakte ID aus der Modellliste Ihres Anbieters kopieren. -
OMNIAKEY_API_KEYin der Shell leer, aus der Droid gestartet wurde. Droid bekam nach 2,8 s401mit „Invalid token“ („Ungültiges Token“). Lösung: den Schlüssel in der Shell exportieren, aus der Siedroidstarten, und eine neue Sitzung beginnen.
Die Fehlersuche-Doku von Factory nennt zwei weitere Punkte. „Invalid provider“ bedeutet, dass der Wert falsch geschrieben oder anders großgeschrieben ist; er muss genau anthropic, openai, generic-chat-completion-api oder bedrock-converse lauten. Fehlt ein Modell in der Auswahl, raten die Docs, die JSON-Syntax in ~/.factory/settings.json zu prüfen und darauf zu achten, dass jeder Eintrag seine Pflichtfelder hat (geprüft am 30. Oktober 2026).
FAQ
Wo liegt die Droid-Settings-Datei unter Windows?
%USERPROFILE%\.factory\settings.json, dieselbe Datei wie ~/.factory/settings.json unter macOS und Linux (Factorys Settings-Doku, geprüft am 30. Oktober 2026). Tragen Sie customModels dort ein.
Warum erscheint mein eigenes Modell nicht in /model?
Prüfen Sie zuerst die JSON-Syntax in ~/.factory/settings.json, dann die Felder model, baseUrl und provider. Droid erkennt gespeicherte Änderungen über File Watching (Factorys BYOK-Doku, geprüft am 30. Oktober 2026). Ein Bericht zu Desktop 0.184.0 mit CLI 0.227.0 zeigte eigene Modelle kurz im Desktop-Picker; danach verschwanden sie, während droid exec --help weiter alle 14 auflistete; das Issue ist inzwischen geschlossen (Factory-AI Issue #40, geprüft am 30. Oktober 2026).
Können eigene Modelle Bilder lesen?
Bei anthropic und openai sind Bilder standardmäßig an, bei generic-chat-completion-api aus, wo noImageSupport auf true steht (Factorys BYOK-Doku, geprüft am 30. Oktober 2026). Setzen Sie noImageSupport: false bei einem generischen Eintrag, um sie zu erlauben. Laut einer Meldung wurden Bilder mit CLI v0.205.1 trotz gesetztem Wert entfernt (Factory-AI Issue #24, geprüft am 30. Oktober 2026).
Kann ich den Reasoning-Aufwand für ein eigenes Modell festlegen?
-r / --reasoning-effort in droid exec greift bei eigenen Modellen nicht. Setzen Sie stattdessen reasoningEffort im Eintrag: Der Wert legt den Standardaufwand für ein Modell fest, das Droid nicht kennt, und ergänzt off, low, medium und high in der Auswahl (Factorys BYOK-Doku, geprüft am 30. Oktober 2026).
Funktionieren eigene Modelle in der Droid-Desktop-App?
Ja: Persönliche eigene Modelle stehen in der CLI und in der Desktop-App bereit und bleiben aus den gehosteten Web- und Mobile-Apps heraus. Die Modell-Editoren in CLI und Desktop-App speichern beide in ~/.factory/settings.json (Factorys BYOK-Doku, geprüft am 30. Oktober 2026).
Geprüfte Quellen
- Factory BYOK-Doku, geprüft am 30. Oktober 2026
- Factory Settings-Doku, geprüft am 30. Oktober 2026
- Factory droid exec Doku, geprüft am 30. Oktober 2026
- Factory Release Notes, geprüft am 30. Oktober 2026
- Factory Individual-Pläne, geprüft am 30. Oktober 2026
- Factory Preise, geprüft am 30. Oktober 2026
- Factory-AI Issue #40: eigene Modelle verschwinden aus dem Desktop-Picker, geprüft am 30. Oktober 2026
- Factory-AI Issue #24: Bilder werden entfernt, geprüft am 30. Oktober 2026
- Factory-AI Pull Request #76: config.json-Migration, geprüft am 30. Oktober 2026
OmniaKeys eigene Doku, geprüft am 30. Oktober 2026: API-Überblick und OpenAI-kompatible API.
Modelle in diesem Artikel
Verwandte Artikel
Claude- und GPT-APIs in DeepSeek Harness nutzen
Mit einem eigenen Provider über das OpenAI-Protokoll laufen Claude Opus 5.5, Claude Sonnet 5.5 und GPT-6.1 in DeepSeek Harness, sobald jedes Modell Reasoning-Stufen und ein Ausgabelimit von 128K hat. Der eingebaute DeepSeek-Provider sendet eine Thinking-Einstellung, die Claude ablehnt.
Claude Code mit der OmniaKey API einrichten
Zeigen Sie Claude Code auf den Anthropic-nativen Endpunkt von OmniaKey – zwei Umgebungsvariablen, Claude-Modelle, die niemals stillschweigend ausgetauscht werden, Abrechnung pro Token ohne monatlichen Plan.
Bestes Modell für Claude Code
Beginnen Sie den Arbeitsalltag mit Sonnet 5.5 für 2 Dollar pro Million Eingabe-Token, geben Sie Arbeit über mehrere Dateien an Opus 5.5 für 4 Dollar, heben Sie Fable 5.1 für die härtesten langen Sitzungen auf und überlassen Sie schnelle Änderungen und Subagenten an Haiku 5.5.
Neueste Beiträge
- Codex Bilder generieren mit eigenem Provider und imagegen
- Gemini 4 Carbon: Release-Termin, Preis und API-Zugriff
- GPT Image 2.5 API: Bilder mit Python generieren und bearbeiten
- Kling 3.0 API: Request-Code für Text zu Video und echte Clips
- MiniMax M3.1 Flash im Test: Benchmarks, Tempo und Vergleich mit M3