Dokumentation
Oh My Pi
Oh My Pi verwaltet seine Anbieter in einer einzigen YAML-Datei. Drei Zeilen unter einem Namen deiner Wahl – baseUrl, api, apiKey – und omp leitet Anfragen mit einem einzigen Schlüssel an Claude und GPT weiter. Die Modellliste wird dabei abgerufen statt manuell eingetragen.
Ein Anbieterblock in ~/.omp/agent/models.yml — baseUrl, api, apiKey — richtet Oh My Pi auf Kunavo aus; die Erkennung lädt die Modellliste über GET /v1/models.
providers:
kunavo:
baseUrl: https://api.kunavo.com/v1
api: openai-completions
apiKey: KUNAVO_API_KEY # an env-var name; literal text also works
discovery:
type: openai-models-list # reads GET /v1/models
# Prefer a fixed list to a discovered one? Drop the discovery block and
# declare ids instead. Omitted metadata defaults to a 128,000-token context
# window and a 16,384-token output limit, so set the real numbers from
# /models when they differ.
#
# models:
# - id: claude-sonnet-5
# name: Claude Sonnet 5
# contextWindow: ...
# maxTokens: .../v1-Suffix. omp dokumentiert baseUrl als „Stamm des Endpunkts“ und openai-completions als „OpenAI-kompatible Chat Completions“. Im eigenen Fehlerbehebungseintrag zu 404-Fehlern heißt es: „Allgemeine OpenAI-kompatible Basis-URLs enden häufig mit /v1“. Alle Beispiele für benutzerdefinierte Anbieter auf beiden Seiten enden genauso. „Häufig“ ist die Einschränkung von omp, keine Garantie. Kunavo stellt jedoch /v1/chat/completions bereit, daher ist https://api.kunavo.com/v1 der Stamm, unter dem dieser Endpunkt erreichbar ist. Bei Clients nach dem Anthropic-Muster ist es umgekehrt: Sie benötigen den reinen Ursprung.authHeader bei dieser Route weg. omp dokumentiert die Option für ein Gateway, das „Authorization: Bearer gezielt als normalen Header eingefügt haben muss“. Außerdem steht dort: „Standardmäßige Anbieter-Clients wenden ihr übliches Authentifizierungsschema bereits an“ – das gilt für den OpenAI-kompatiblen Client, und Kunavo akzeptiert dieses Schema. Füge die Option nur hinzu, wenn du einen 401-Fehler erhältst, der sich mit dem folgenden curl nicht reproduzieren lässt.curl-Teil kannst du in zehn Sekunden selbst überprüfen; alles Weitere hängt von omp ab.sk-kn-) und füge ab $10 Guthaben hinzu – Aufrufe werden aus diesem Guthaben bezahlt, fehlgeschlagene Aufrufe werden nicht berechnet. Das Dashboard öffnet anschließend die Oh My Pi-Einrichtung.Schritt für Schritt
- Erstellen Sie unter
/app/keyseinen Schlüssel und kopieren Sie ihn — er wird nur einmal angezeigt. - Exportiere den Wert als
KUNAVO_API_KEYin der Shell, mit der du omp startest. omp behandeltapiKeyzunächst als Namen einer Umgebungsvariablen und verwendet den Text andernfalls direkt als Schlüssel. Ein Tippfehler im Variablennamen wird daher stillschweigend übernommen und führt erst bei der ersten Anfrage zu einem Fehler. Ein mit!beginnender Wert wird stattdessen als Shell-Befehl ausgeführt – das ist die 1Password-Variante. - Füge den obigen Block in
~/.omp/agent/models.ymlein. Die Anbieter-ID – hierkunavo– kannst du selbst wählen; sie bildet die erste Hälfte jedes Auswahlfelds. - Führe
omp models kunavoaus, um die Datei zu laden und nur diesen Anbieter aufzulisten. Bei einem YAML- oder Schemafehler werdenmodels.yml validation failedund das fehlerhafte Feld ausgegeben. Mitomp models refresh kunavoerzwingst du einen neuen Erkennungsaufruf, statt den zwischengespeicherten Katalog zu verwenden. - Teste die Konfiguration mit einem exakten Auswahlwert:
omp -p --model kunavo/claude-sonnet-5 "Reply with only OK". Starte dannomp, gib/modelein und weise Standard die gewünschte ID zu – beim Öffnen lädt der Modell-Hubmodels.ymlneu./switchändert nur die aktuelle Sitzung.
Abgeglichen mit Die Seite „Anbieter“ von omp am 21. September 2026. Einstellungen von Drittanbietern können sich ändern; wenn ein Feldname hier nicht mehr mit deiner Ansicht übereinstimmt, ist diese Seite maßgeblich, nicht diese hier.
Vor dem Debugging des Clients prüfen
Eine Anfrage klärt, ob der Fehler am Endpunkt, am Schlüssel oder an der Konfigurationsdatei liegt. Wenn diese Anfrage JSON zurückgibt, funktionieren dieselbe Basis-URL und derselbe Schlüssel in Oh My Pi.
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."Welche Modell-ID in das Feld gehört
Jedes Textmodell ist über eine Modell-ID erreichbar – die aktuelle Liste findest du unter GET /v1/models, den Katalog mit Preisen auf der Modellseite. Die Tarife sind USD pro 1 Mio. Token, Eingabe / Ausgabe.
| Modell-ID | Kunavo: Ein- und Ausgabe | Wo es in Oh My Pi hineinpasst |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | die Standardrolle – das Modell, das tatsächlich in den meisten Sitzungen läuft |
claude-opus-5 | $3.50 / $17.50 | die Planungsrolle, bei der ein falscher Plan mehr kostet als die Token |
claude-haiku-4-5 | $0.70 / $3.50 | die Smol-Rolle: Triage, Zusammenfassungen und die unaufhörlichen Aufrufe |
gpt-5-6-sol | $2.00 / $12.00 | eine zweite Meinung aus einer anderen Modellfamilie mit demselben Anbieterblock |
Erkennung: Welcher Typ und was im Auswahlmenü erscheint
omp bietet sechs Werte für discovery.type. Zwei davon scheinen für ein Gateway geeignet, doch nur einer ist es tatsächlich. proxy ist dokumentiert für „einen gemischten OpenAI-/Anthropic-Proxy, dessen Modellzeilen supported_endpoint_types angeben“. Anhand dieses Feldes wird für jedes Modell das jeweilige Drahtformat bestimmt. Kunavos GET /v1/models gibt dieses Feld nicht aus. Bei proxy würde daher jede Zeile auf die anbieterweite Einstellung api zurückfallen oder ganz entfallen, falls nichts festgelegt wurde. Zu verwenden ist openai-models-list, dokumentiert als „allgemeiner OpenAI-kompatibler GET /v1/models-Endpunkt“. Deshalb enthält der obige Block weiterhin api: openai-completions: Laut omp gilt „Mit Ausnahme von proxy erfordert die Erkennung ein anbieterweites api“.
Beachte eine Folge, bevor du das Auswahlmenü öffnest: Kunavos Modellliste enthält den gesamten aktivierten Katalog. Bei einem erkannten Anbieter erscheinen daher neben den Chat-IDs auch Bild-, Video- und Musik-IDs, die sich über den Chat-Transport nicht aufrufen lassen. Für Chat-Modelle stellt Kunavo context_length bereit. Laut Modelldokumentation liest die allgemeine Erkennung von omp dieses Feld nach max_model_len aus. Bei Medienmodellen fehlt es, sodass omp für diese den Standardwert von 128,000 Token annimmt statt eines echten Werts. Wenn du ein kurzes, korrektes Auswahlmenü möchtest, entferne den Erkennungsblock und gib die drei oder vier IDs an, die du tatsächlich verwendest.
omp unterstützt auch anthropic-messages, und Kunavo antwortet mit /v1/messages. Diese Seite enthält kein Konfigurationsbeispiel für diese Kombination: Die beiden hier zitierten Seiten legen das Basis-URL-Format für die OpenAI-kompatible Route fest, sagen aber nichts darüber aus, wie ein abschließendes /v1 bei der Anthropic-Route behandelt wird. Ein Konfigurationsblock soll schließlich direkt kopierbar sein. Wenn du diesen Weg wählst, findest du unter disableStrictTools: true die dokumentierte Lösung für Tool-Aufrufe, die an einem Anthropic-kompatiblen Endpunkt mit einem 400-Fehler scheitern.
Häufig gestellte Fragen
Wie füge ich Oh My Pi einen benutzerdefinierten API-Anbieter hinzu?
Alles wird in ~/.omp/agent/models.yml konfiguriert. Füge unter `providers:` einen Schlüssel hinzu. Den Namen kannst du selbst wählen; er bildet den Anbieteranteil des Auswahlwerts. Ergänze dann baseUrl, api und apiKey in der Reihenfolge, die omp im eigenen Beispiel „Benutzerdefinierten Anbieter hinzufügen“ verwendet. Führe die Modelle entweder manuell unter `models:` auf oder füge einen `discovery:`-Block hinzu, damit omp sie abruft. Führe anschließend `omp models <your-provider-id>` aus, um das Laden der Datei zu prüfen. Wähle ein Modell mit `omp --model <provider>/<model-id>` oder über den /model-Hub innerhalb einer Sitzung aus.
Muss Oh My Pi bei baseUrl am Ende /v1 enthalten?
Bei einem OpenAI-kompatiblen Endpunkt: ja. omp bezeichnet baseUrl als Stamm des Endpunkts und hängt die Route für die angegebene api-Familie an. Mit `api: openai-completions` fragt omp also Chat Completions unter dem angegebenen Stamm ab. Laut einem eigenen Fehlerbehebungshinweis zu 404-Fehlern enden allgemeine OpenAI-kompatible Basis-URLs häufig mit /v1. Auch jedes Beispiel für einen benutzerdefinierten Anbieter in der Dokumentation enthält diesen Zusatz. Kunavo stellt /v1/chat/completions bereit. Daher musst du https://api.kunavo.com/v1 als Stamm eintragen. Fehlt /v1, erscheint ein 404-Fehler oder „Endpunkt nicht unterstützt“, kein Authentifizierungsfehler.
Wo sucht Oh My Pi nach dem API-Schlüssel und welcher Wert hat Vorrang?
Ein apiKey in models.yml wird in drei Schritten aufgelöst: Beginnt der Wert mit !, wird er als Shell-Befehl ausgeführt und die bereinigte Standardausgabe verwendet. Andernfalls sucht omp nach einer Umgebungsvariablen mit genau diesem Namen. Gibt es keine solche Variable, wird der Text selbst als Schlüssel verwendet. Dieser letzte Rückfall ist die Falle: Ein falsch geschriebener Variablenname wird ohne Beanstandung geladen und schlägt erst bei der ersten Anfrage fehl. In der allgemeinen Rangfolge hat ein Schlüssel aus models.yml Vorrang vor gespeichertem OAuth. Laut omp ist das beabsichtigt; ein für ein Gateway angegebener Schlüssel wird daher nicht durch eine vorgelagerte Anmeldung überschrieben.
Welchen Erkennungstyp sollte ein Gateway in omp verwenden?
openai-models-list, nicht proxy – es sei denn, das Gateway gibt supported_endpoint_types für jede Modellzeile an. Dieses Feld verwendet proxy, um zu bestimmen, ob ein Modell an /v1/messages oder /v1/chat/completions gesendet wird. Fehlt das Feld, wird auf die anbieterweite api zurückgegriffen oder das Modell ausgelassen. Kunavos /v1/models gibt dieses Feld nicht aus. Daher ist die allgemeine OpenAI-Liste der richtige Typ. Außerdem verlangt omp für jeden Erkennungstyp außer proxy eine anbieterweite api. Führe `omp models refresh <provider>` aus, um den Katalog neu abzurufen statt den zwischengespeicherten zu verwenden.
Hat Kunavo Oh My Pi mit seinem Endpunkt getestet?
Nein. Am 21. September 2026 wurde die Dokumentation von omp selbst überprüft. Die Feldnamen, ihre Reihenfolge, die Schlüsselauflösungsregel und die Erkennungstypen sind daraus zitiert. Zwei Details wurden anhand von Kunavos eigener /v1/models-Route überprüft und nicht einfach vorausgesetzt. Hier wurde keine omp-Sitzung mit api.kunavo.com ausgeführt. Es wird auch keine Aussage über Streaming, Tool-Roundtrips oder die Modellweiterleitung innerhalb des Clients getroffen. Unabhängig überprüfen lässt sich lediglich, ob der Endpunkt und der Schlüssel funktionieren. Dazu dient der curl-Aufruf auf dieser Seite.