{"id":198,"date":"2026-10-27T05:23:19","date_gmt":"2026-10-27T01:23:19","guid":{"rendered":"https:\/\/demensdeum.com\/blog\/2026\/10\/27\/freellmapi-opencode\/"},"modified":"2026-10-27T05:26:21","modified_gmt":"2026-10-27T01:26:21","slug":"freellmapi-opencode","status":"publish","type":"post","link":"https:\/\/demensdeum.com\/blog\/de\/2026\/10\/27\/freellmapi-opencode\/","title":{"rendered":"Kostenlose Modelle f\u00fcr OpenCode \u00fcber FreeLLMAPI"},"content":{"rendered":"<p>OpenCode ist ein offener Programmieragent, der im Terminal arbeitet: Projektdateien liest, Code bearbeitet, Befehle und Tests ausf\u00fchrt, das Repository durchsucht und mit Git arbeitet. Es ist nicht an einen Modellanbieter gebunden, sodass nahezu jeder OpenAI-kompatible Dienst damit verbunden werden kann.<\/p>\n<p>FreeLLMAPI ist ein offener, selbst gehosteter Router, der kostenlose Pl\u00e4ne von Dutzenden von KI-Anbietern unter einer OpenAI-kompatiblen \/v1-Adresse sammelt. Anstelle von drei\u00dfig Schl\u00fcsseln, drei\u00dfig Grenzwerten und drei\u00dfig Stellen, an denen eine Anfrage fehlschlagen kann, haben Sie ein lokales Gateway und einen einheitlichen Schl\u00fcssel. Der Router w\u00e4hlt selbst ein verf\u00fcgbares Modell aus, schaltet bei Fehler 429 oder 5xx auf das n\u00e4chste um und stellt sicher, dass Anfragen die Kontingente der Gratistarife nicht \u00fcberschreiten.<\/p>\n<p>In diesem Beitrag beschreibe ich die Installation von FreeLLMAPI, das Hinzuf\u00fcgen von Anbietern und die Verbindung des Gateways mit OpenCode.<\/p>\n<h2>Was Sie brauchen<\/h2>\n<p>Zum Arbeiten ben\u00f6tigen Sie vier Dinge:<\/p>\n<ul>\n<li><b>OpenCode installiert.<\/b> Wenn der Agent noch nicht installiert ist, habe ich den Installationsvorgang in einem separaten Hinweis zu OpenCode und DeepSeek besprochen.<\/li>\n<li><b>FreeLLMAPI l\u00e4uft.<\/b> Der einfachste Weg ist die Installation einer Desktop-Anwendung oder eines Docker-Containers.<\/li>\n<li><b>Node.js 20.18 oder h\u00f6her.<\/b> Dies wird f\u00fcr den CLI-Generator ben\u00f6tigt, der OpenCode konfiguriert. OpenCode selbst kann ohne Node installiert werden.<\/li>\n<li><b>Schl\u00fcssel von mindestens einem Anbieter.<\/b> Geeignet sind kostenlose Pl\u00e4ne von Google AI Studio, Groq, Cerebras, Mistral, OpenRouter, NVIDIA, HuggingFace und anderen Diensten aus dem Katalog.<\/li>\n<\/ul>\n<h2>FreeLLMAPI installieren<\/h2>\n<p>Das Projekt verf\u00fcgt \u00fcber mehrere Installationspfade. W\u00e4hlen Sie diejenige, die f\u00fcr Ihr System bequemer ist.<\/p>\n<h3>Desktop-Anwendung<\/h3>\n<p>Die einfachste Option f\u00fcr Windows und macOS ist der vorgefertigte Installer auf der Release-Seite. Unter Windows ist es .exe, unter macOS ist es .dmg f\u00fcr Apple Silicon oder Intel. Die Anwendung befindet sich im Fach und hebt den Router zusammen mit dem Bedienfeld lokal an.<\/p>\n<p>F\u00fcr die Desktop-Version ist kein Passwort erforderlich: Das Panel meldet sich selbstst\u00e4ndig \u00fcber ein verstecktes lokales Konto an. Die einzigen Anmeldeinformationen, die Sie ben\u00f6tigen, sind der einheitliche Schl\u00fcssel aus dem Popup-Fenster in der Taskleiste oder aus der Kopfzeile der Seite \u201eSchl\u00fcssel\u201c.<\/p>\n<p>Die Anwendungsdaten liegen in einem Verzeichnis:<\/p>\n<ul>\n<li><b>Windows<\/b> \u2014 %APPDATA%\\FreeLLMAPI\\<\/li>\n<li><b>macOS<\/b> \u2014 ~\/Library\/Application Support\/FreeLLMAPI\/<\/li>\n<li><b>Linux<\/b> \u2014 ~\/.config\/FreeLLMAPI\/<\/li>\n<\/ul>\n<h3>Docker<\/h3>\n<p>Wenn Docker bereits installiert ist, wird der Server mit einem Befehl hochgefahren. Das Skript erstellt das Verzeichnis ~\/freellmapi, generiert einen Verschl\u00fcsselungsschl\u00fcssel, l\u00e4dt das Bild herunter und startet den Container:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>curl -fsSL https:\/\/freellmapi.co\/install.sh | bash\n<\/code><\/pre>\n<\/div>\n<p>Das erneute Ausf\u00fchren des Skripts ist sicher: Die .env-Datei und der Verschl\u00fcsselungsschl\u00fcssel werden gespeichert und der Container wird auf die neueste Version aktualisiert. Unter Windows funktioniert diese Methode in WSL oder einer beliebigen Bash-Umgebung.<\/p>\n<p>Nach dem Start \u00f6ffnet sich das Panel unter:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>http:\/\/localhost:3001\n<\/code><\/pre>\n<\/div>\n<p>F\u00fcr die Serverinstallation m\u00fcssen Sie ein Konto mit einer E-Mail-Adresse und einem Passwort erstellen. Wenn das Passwort vergessen wird, wird der Reset-Code im Containerprotokoll ausgedruckt:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>docker compose logs -f freellmapi\n<\/code><\/pre>\n<\/div>\n<h3>Docker Compose<\/h3>\n<p>Wenn Sie die Konfiguration in Git beibehalten und den Start manuell verwalten m\u00f6chten, reicht normales Compose aus. Unter macOS und Linux:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>git clone https:\/\/github.com\/tashfeenahmed\/freellmapi.git\ncd freellmapi\nENCRYPTION_KEY=\"$(openssl rand -hex 32)\"\nprintf \"ENCRYPTION_KEY=%s\\nPORT=3001\\n\" \"$ENCRYPTION_KEY\" > .env\ndocker compose up -d\n<\/code><\/pre>\n<\/div>\n<p>In Windows PowerShell:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>git clone https:\/\/github.com\/tashfeenahmed\/freellmapi.git\ncd freellmapi\n$Bytes = New-Object Byte[] 32\n[Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($Bytes)\n$ENCRYPTION_KEY = -join ($Bytes | ForEach-Object { \"{0:x2}\" -f $_ })\n\"ENCRYPTION_KEY=$ENCRYPTION_KEY`nPORT=3001\" | Out-File -Encoding utf8 .env\ndocker compose up -d\n<\/code><\/pre>\n<\/div>\n<p>Der ENCRYPTION_KEY-Schl\u00fcssel ist erforderlich: Er wird zum Verschl\u00fcsseln von Anbieterschl\u00fcsseln in der SQLite-Datenbank verwendet. Sie k\u00f6nnen es nicht im Handumdrehen \u00e4ndern \u2013 alte Geheimnisse werden nicht mehr entschl\u00fcsselt. F\u00fcr die Rotation verf\u00fcgt das Projekt \u00fcber einen separaten Befehl rotation-encryption-key.<\/p>\n<h3>Wird von der Quelle ausgef\u00fchrt<\/h3>\n<p>Zur Entwicklung oder zum Debuggen k\u00f6nnen Sie das Projekt \u00fcber Node.js ausf\u00fchren:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>git clone https:\/\/github.com\/tashfeenahmed\/freellmapi.git\ncd freellmapi\nnpm install\nENCRYPTION_KEY=\"$(node -e 'console.log(require(\"crypto\").randomBytes(32).toString(\"hex\"))')\"\nprintf \"ENCRYPTION_KEY=%s\\nPORT=3001\\n\" \"$ENCRYPTION_KEY\" > .env\nnpm run dev\n<\/code><\/pre>\n<\/div>\n<p>In diesem Modus werden die API und das Panel auf Port 3001 und die Vite-Schnittstelle auf 5173 hochgefahren.<\/p>\n<h2>Erststart und Anbieterschl\u00fcssel<\/h2>\n<p>\u00d6ffnen Sie das Panel, gehen Sie zur Seite <b>Schl\u00fcssel<\/b> und f\u00fcgen Sie die Schl\u00fcssel der von uns verwendeten Dienste hinzu. F\u00fcr jeden Anbieter gibt es in der Schnittstelle einen Link zur Registrierung und einen Hinweis, wo man den Schl\u00fcssel bekommt. Es reicht aus, mit ein oder zwei zu beginnen: zum Beispiel Google AI Studio und Groq.<\/p>\n<p>Nach dem Hinzuf\u00fcgen wird der Schl\u00fcssel einem Gesundheitscheck unterzogen. Wenn der Anbieter mit einem Fehler geantwortet hat, bleibt der Schl\u00fcssel in der Liste, wird aber als fehlerhaft markiert \u2013 er kann erneut \u00fcberpr\u00fcft oder gel\u00f6scht werden.<\/p>\n<p>Als n\u00e4chstes sollten Sie zur Seite <b>Modelle<\/b> gehen und sehen, welche Modelle verf\u00fcgbar sind. Dort k\u00f6nnen Sie auch die Routing-Strategie und die Reihenfolge der <b>Fallback Chain<\/b> \u2013 der Kette, entlang derer der Router bei Fehlern und Limits geht \u2013 konfigurieren. Das <b>Auto<\/b>-Modell bedeutet, dass die Auswahl vom Router selbst getroffen wird. Dar\u00fcber hinaus stehen Optionen wie <b>auto:fast<\/b>, <b>auto:smart<\/b> und benannte Profile f\u00fcr bestimmte Aufgaben zur Verf\u00fcgung.<\/p>\n<p>Es lohnt sich auch zu pr\u00fcfen, ob es Modelle in der Kette gibt, die Tools unterst\u00fctzen. OpenCode nutzt aktiv Toolaufrufe, und ein Modell ohne diese Funktion kann keine Dateien lesen oder Befehle normal ausf\u00fchren.<\/p>\n<p>Der Unified-Schl\u00fcssel befindet sich dort, auf der Seite <b>Schl\u00fcssel<\/b> oder in der Taskleiste der Desktop-Anwendung. Es sieht aus wie eine Zeichenfolge mit einem Pr\u00e4fix:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>freellmapi-...\n<\/code><\/pre>\n<\/div>\n<p>Es ist dieser Schl\u00fcssel und nicht die Schl\u00fcssel einzelner Anbieter, der in OpenCode angezeigt wird.<\/p>\n<h2>Mit OpenCode verbinden<\/h2>\n<p>FreeLLMAPI verf\u00fcgt \u00fcber einen Konfigurationsgenerator, der selbst das Modellverzeichnis vom laufenden Gateway liest, eine Sicherungskopie der vorhandenen Konfiguration erstellt und den Anbieter sorgf\u00e4ltig hinzuf\u00fcgt.<\/p>\n<p>Legen wir zun\u00e4chst den einheitlichen Schl\u00fcssel auf die Umgebungsvariable fest. Der Generator liest es anstelle eines separaten Flags, sodass das Geheimnis nicht im Befehlsverlauf landet.<\/p>\n<p>Unter macOS und Linux:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>export FREELLMAPI_API_KEY=freellmapi-YOUR_KEY\n<\/code><\/pre>\n<\/div>\n<p>In Windows PowerShell:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>$env:FREELLMAPI_API_KEY=\"freellmapi-YOUR_KEY\"\n<\/code><\/pre>\n<\/div>\n<p>Schauen wir uns nun an, was genau aufgezeichnet wird:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>npx freellmapi setup-opencode --url http:\/\/localhost:3001 --dry-run\n<\/code><\/pre>\n<\/div>\n<p>Wenn diff zufriedenstellend ist, wiederholen Sie den Befehl ohne das Flag:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>npx freellmapi setup-opencode --url http:\/\/localhost:3001\n<\/code><\/pre>\n<\/div>\n<p>Der Generator schreibt die globale OpenCode-Konfiguration:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>~\/.config\/opencode\/opencode.json\n<\/code><\/pre>\n<\/div>\n<p>Darin erscheint der Freellmapi-Anbieter mit dem @ai-sdk\/openai-kompatiblen Paket, der Basisadresse http:\/\/localhost:3001\/v1 und einer Karte von Modellen aus dem Live-Katalog. Das Standardmodell wird freellmapi\/auto.<\/p>\n<p>Der Schl\u00fcssel selbst landet nicht in der Datei: Die Konfiguration enth\u00e4lt die Ersetzung {env:FREELLMAPI_API_KEY}. Daher muss die Variable beim Start des Agenten gesetzt bleiben:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>opencode\n<\/code><\/pre>\n<\/div>\n<p>Diese Methode ist auch praktisch, da das Geheimnis nicht in der Konfiguration und auch nicht in Git landet. Bei CI und einmaligen L\u00e4ufen ist dies korrekter als das Speichern des Schl\u00fcssels in einer Datei.<\/p>\n<h2>Manuelle Einstellung<\/h2>\n<p>Wenn Sie den Generator nicht ausf\u00fchren m\u00f6chten, k\u00f6nnen Sie den Anbieter manuell in opencode.json beschreiben. Die Mindestoption sieht so aus:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>{\n  \"$schema\": \"https:\/\/opencode.ai\/config.json\",\n  \"model\": \"freellmapi\/auto\",\n  \"provider\": {\n    \"freellmapi\": {\n      \"npm\": \"@ai-sdk\/openai-compatible\",\n      \"name\": \"FreeLLMAPI\",\n      \"options\": {\n        \"baseURL\": \"http:\/\/localhost:3001\/v1\",\n        \"apiKey\": \"{env:FREELLMAPI_API_KEY}\"\n      },\n      \"models\": {\n        \"auto\": {\n          \"name\": \"FreeLLMAPI Auto Router\",\n          \"limit\": { \"context\": 1048576, \"output\": 65536 }\n        }\n      }\n    }\n  }\n}\n<\/code><\/pre>\n<\/div>\n<p>Das Modellfeld auf der obersten Ebene ist wichtig: Ohne es verwendet OpenCode m\u00f6glicherweise weiterhin das vorherige Modell oder w\u00e4hlt bei einer Neuinstallation nichts aus. Es ist besser, den Kontext und die Ausgabegrenzen aus der Gateway-Antwort zu \u00fcbernehmen, als sie zu erfinden:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>curl http:\/\/localhost:3001\/v1\/models\n<\/code><\/pre>\n<\/div>\n<p>Sie k\u00f6nnen der Modellliste bestimmte Kennungen hinzuf\u00fcgen, wenn Sie manuell zu ihnen wechseln m\u00fcssen. Aber f\u00fcr den Alltag reicht Auto aus: Der Router w\u00e4hlt selbst ein Live-Modell aus und schaltet um, wenn das Limit erreicht ist.<\/p>\n<h2>So verwenden Sie es<\/h2>\n<p>Nach dem Start von Opencode \u00f6ffnet sich die Liste der Modelle mit einem bekannten Befehl:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>\/models\n<\/code><\/pre>\n<\/div>\n<p>Es wird einen FreeLLMAPI-Anbieter und ein Auto-Modell geben. Dann geht die Arbeit wie gewohnt weiter: Wir beschreiben die Aufgabe, geben Dateien per @ an, wechseln den Planungsmodus mit der Tab-Taste, machen die \u00c4nderungen mit dem \/undo-Befehl r\u00fcckg\u00e4ngig. F\u00fcr ein neues Projekt ist es sinnvoll, \/init auszuf\u00fchren, damit der Agent AGENTS.md erstellt.<\/p>\n<p>Ein paar praktische Tipps:<\/p>\n<ul>\n<li><b>Routing.<\/b> Belassen Sie es f\u00fcr Routinezwecke auf \u201eAuto\u201c. Wenn Sie Geschwindigkeit ben\u00f6tigen, versuchen Sie es mit auto:fast, wenn die Qualit\u00e4t auto:smart oder ein bestimmtes starkes Modell aus dem Katalog ist.<\/li>\n<li><b>Diagnose<\/b> Jede Gateway-Antwort enth\u00e4lt einen X-Routed-Via-Header mit dem Namen des Anbieters und Modells, der die Anfrage tats\u00e4chlich bedient hat. Es zeigt, wohin der Router die Aufgabe gesendet hat.<\/li>\n<li><b>Analytics.<\/b> Auf der Analytics-Seite zeigt das Panel das Volumen der Anfragen, den Erfolg, p50\/p95-Verz\u00f6gerungen und den Token-Verbrauch nach Anbieter an.<\/li>\n<li><b>Kontinuit\u00e4t des Dialogs.<\/b> Wenn Sie mitten in einem Gespr\u00e4ch das Modell wechseln, kann das Gateway eine kurze Notiz \u00fcber die \u00dcbertragung des Kontexts hinzuf\u00fcgen. Aktiviert durch die Variable FREELLMAPI_CONTEXT_HANDOFF=on_model_switch.<\/li>\n<\/ul>\n<p>Wenn OpenCode in einem Container und FreeLLMAPI auf einem Host ausgef\u00fchrt wird, verweist localhost auf den Container selbst. In diesem Fall m\u00fcssen Sie host.docker.internal oder eine andere Adresse verwenden, auf die \u00fcber den Container in der Basis-URL zugegriffen werden kann.<\/p>\n<h2>Worauf Sie achten sollten<\/h2>\n<p>FreeLLMAPI ist kein Ersatz f\u00fcr kostenpflichtige Modelle und kein Service mit SLA. Es ist eine M\u00f6glichkeit, kostenlose Pl\u00e4ne in einem \u00fcbersichtlichen Gateway zu b\u00fcndeln. Daher gibt es mehrere Einschr\u00e4nkungen:<\/p>\n<ul>\n<li><b>Qualit\u00e4t schwankt.<\/b> Kostenlose Tarife enden und am sp\u00e4ten Abend, kurz vor der Ersch\u00f6pfung der Tageskontingente, wechselt der Router m\u00f6glicherweise zu schw\u00e4cheren Modellen. Kontingente werden normalerweise um Mitternacht UTC zur\u00fcckgesetzt.<\/li>\n<li><b>Latenzen sind variabel.<\/b> Verschiedene Anbieter reagieren unterschiedlich und bei der Umstellung auf ein Backup-Modell kann die Anfrage merklich l\u00e4nger dauern.<\/li>\n<li><b>Es gibt keine Flaggschiff-Modelle.<\/b> Gute, aber nicht erstklassige Modelle sind in kostenlosen Tarifen erh\u00e4ltlich. Bei komplexen Architekturen ist dies eine \u00dcberlegung wert.<\/li>\n<li><b>Das Gateway muss ausgef\u00fchrt werden.<\/b> Wenn die Anwendung oder der Container gestoppt wird, erh\u00e4lt OpenCode keine Antwort. Durch den automatischen Start der Anwendung in der Taskleiste oder einen Neustart der Containerrichtlinie wird dieses Problem gel\u00f6st.<\/li>\n<li><b>Das Projekt ist f\u00fcr einen Benutzer konzipiert.<\/b> Anbieterschl\u00fcssel werden lokal und verschl\u00fcsselt gespeichert, ein gemeinsames Panel f\u00fcr mehrere Personen ist jedoch nicht das Szenario f\u00fcr dieses Tool. Der einheitliche Schl\u00fcssel und .env sollten auf die gleiche Weise wie ein normales Geheimnis gesch\u00fctzt werden.<\/li>\n<\/ul>\n<p>Und noch eine Nuance: Der Modellkatalog aktualisiert sich selbst, die kostenlose Installation erh\u00e4lt jedoch mit einer Verz\u00f6gerung von etwa drei\u00dfig Tagen einen Snapshot des Katalogs. Der kostenpflichtige Premium-Plan beschleunigt das Update, es ist jedoch keine Einarbeitung in das Projekt erforderlich \u2013 der Router selbst bleibt kostenlos und offen.<\/p>\n<h2>Links<\/h2>\n<p><a href=\"https:\/\/github.com\/tashfeenahmed\/freellmapi\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/tashfeenahmed\/freellmapi<\/a><br \/>\n<a href=\"https:\/\/freellmapi.co\/\" rel=\"noopener\" target=\"_blank\">https:\/\/freellmapi.co\/<\/a><br \/>\n<a href=\"https:\/\/freellmapi.co\/models\" rel=\"noopener\" target=\"_blank\">https:\/\/freellmapi.co\/models<\/a><br \/>\n<a href=\"https:\/\/github.com\/tashfeenahmed\/freellmapi\/releases\/latest\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/tashfeenahmed\/freellmapi\/releases\/latest<\/a><br \/>\n<a href=\"https:\/\/github.com\/tashfeenahmed\/freellmapi\/blob\/main\/docs\/en\/install\/01-install.md\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/tashfeenahmed\/freellmapi\/blob\/main\/docs\/en\/install\/01-install.md<\/a><br \/>\n<a href=\"https:\/\/github.com\/tashfeenahmed\/freellmapi\/blob\/main\/docs\/en\/clients\/01-agent-clients.md\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/tashfeenahmed\/freellmapi\/blob\/main\/docs\/en\/clients\/01-agent-clients.md<\/a><br \/>\n<a href=\"https:\/\/github.com\/tashfeenahmed\/freellmapi\/blob\/main\/cli\/README.md\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/tashfeenahmed\/freellmapi\/blob\/main\/cli\/README.md<\/a><br \/>\n<a href=\"https:\/\/opencode.ai\/\" rel=\"noopener\" target=\"_blank\">https:\/\/opencode.ai\/<\/a><br \/>\n<a href=\"https:\/\/opencode.ai\/docs\/\" rel=\"noopener\" target=\"_blank\">https:\/\/opencode.ai\/docs\/<\/a><br \/>\n<a href=\"https:\/\/opencode.ai\/docs\/providers\/\" rel=\"noopener\" target=\"_blank\">https:\/\/opencode.ai\/docs\/providers\/<\/a><\/p>\n<h2>Quellen<\/h2>\n<p><a href=\"https:\/\/github.com\/tashfeenahmed\/freellmapi\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/tashfeenahmed\/freellmapi<\/a><br \/>\n<a href=\"https:\/\/github.com\/tashfeenahmed\/freellmapi\/blob\/main\/README.ru.md\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/tashfeenahmed\/freellmapi\/blob\/main\/README.ru.md<\/a><br \/>\n<a href=\"https:\/\/github.com\/tashfeenahmed\/freellmapi\/blob\/main\/docs\/en\/install\/01-install.md\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/tashfeenahmed\/freellmapi\/blob\/main\/docs\/en\/install\/01-install.md<\/a><br \/>\n<a href=\"https:\/\/github.com\/tashfeenahmed\/freellmapi\/blob\/main\/docs\/en\/clients\/01-agent-clients.md\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/tashfeenahmed\/freellmapi\/blob\/main\/docs\/en\/clients\/01-agent-clients.md<\/a><br \/>\n<a href=\"https:\/\/github.com\/tashfeenahmed\/freellmapi\/blob\/main\/docs\/en\/clients\/02-supported-agents.md\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/tashfeenahmed\/freellmapi\/blob\/main\/docs\/en\/clients\/02-supported-agents.md<\/a><br \/>\n<a href=\"https:\/\/github.com\/tashfeenahmed\/freellmapi\/blob\/main\/cli\/README.md\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/tashfeenahmed\/freellmapi\/blob\/main\/cli\/README.md<\/a><br \/>\n<a href=\"https:\/\/opencode.ai\/docs\/providers\/\" rel=\"noopener\" target=\"_blank\">https:\/\/opencode.ai\/docs\/providers\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>OpenCode ist ein offener Programmieragent, der im Terminal arbeitet: Projektdateien liest, Code bearbeitet, Befehle und Tests ausf\u00fchrt, das Repository durchsucht und mit Git arbeitet. Es ist nicht an einen Modellanbieter gebunden, sodass nahezu jeder OpenAI-kompatible Dienst damit verbunden werden kann. FreeLLMAPI ist ein offener, selbst gehosteter Router, der kostenlose Pl\u00e4ne von Dutzenden von KI-Anbietern unter [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-198","post","type-post","status-publish","format-standard","hentry","category-notes"],"translation":{"provider":"WPGlobus","version":"3.0.6","language":"de","enabled_languages":["en","ru","zh","de","ja","fr","es","pt","hi"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"ru":{"title":true,"content":true,"excerpt":false},"zh":{"title":true,"content":true,"excerpt":false},"de":{"title":true,"content":true,"excerpt":false},"ja":{"title":true,"content":true,"excerpt":false},"fr":{"title":true,"content":true,"excerpt":false},"es":{"title":true,"content":true,"excerpt":false},"pt":{"title":true,"content":true,"excerpt":false},"hi":{"title":true,"content":true,"excerpt":false}}},"_links":{"self":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts\/198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/comments?post=198"}],"version-history":[{"count":1,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts\/198\/revisions"}],"predecessor-version":[{"id":199,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/posts\/198\/revisions\/199"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/media?parent=198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/categories?post=198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/de\/wp-json\/wp\/v2\/tags?post=198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}