{"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\/es\/2026\/10\/27\/freellmapi-opencode\/","title":{"rendered":"Modelos gratuitos para OpenCode a trav\u00e9s de FreeLLMAPI"},"content":{"rendered":"<p>OpenCode es un agente de programaci\u00f3n abierto que funciona en la terminal: lee archivos de proyecto, edita c\u00f3digo, ejecuta comandos y pruebas, busca en el repositorio y trabaja con git. No est\u00e1 vinculado a un solo proveedor de modelo, por lo que se puede conectar a \u00e9l casi cualquier servicio compatible con OpenAI.<\/p>\n<p>FreeLLMAPI es un enrutador abierto y autohospedado que recopila planes gratuitos de docenas de proveedores de IA en una direcci\u00f3n \/v1 compatible con OpenAI. En lugar de treinta claves, treinta l\u00edmites y treinta lugares donde una solicitud puede fallar, tiene una puerta de enlace local y una clave unificada. El propio enrutador selecciona un modelo disponible, cambia al siguiente cuando ocurre el error 429 o 5xx y se asegura de que las solicitudes no excedan las cuotas de tarifas gratuitas.<\/p>\n<p>En esta publicaci\u00f3n describir\u00e9 la instalaci\u00f3n de FreeLLMAPI, la adici\u00f3n de proveedores y la conexi\u00f3n de la puerta de enlace a OpenCode.<\/p>\n<h2>Lo que necesitas<\/h2>\n<p>Para trabajar necesitas cuatro cosas:<\/p>\n<ul>\n<li><b>OpenCode instalado.<\/b> Si el agente a\u00fan no est\u00e1 instalado, analic\u00e9 el procedimiento de instalaci\u00f3n en una nota separada sobre OpenCode y DeepSeek.<\/li>\n<li><b>FreeLLMAPI en ejecuci\u00f3n.<\/b> La forma m\u00e1s sencilla es instalar una aplicaci\u00f3n de escritorio o un contenedor Docker.<\/li>\n<li><b>Node.js 20.18 o posterior.<\/b> Esto es necesario para el generador CLI que configura OpenCode. El propio OpenCode se puede instalar sin Node.<\/li>\n<li><b>Claves de al menos un proveedor.<\/b> Son adecuados los planes gratuitos de Google AI Studio, Groq, Cerebras, Mistral, OpenRouter, NVIDIA, HuggingFace y otros servicios del cat\u00e1logo.<\/li>\n<\/ul>\n<h2>Instalando FreeLLMAPI<\/h2>\n<p>El proyecto tiene varias v\u00edas de instalaci\u00f3n. Elija el que sea m\u00e1s conveniente para su sistema.<\/p>\n<h3>Aplicaci\u00f3n de escritorio<\/h3>\n<p>La opci\u00f3n m\u00e1s sencilla para Windows y macOS es el instalador listo para usar en la p\u00e1gina de lanzamientos. En Windows es .exe, en macOS es .dmg para Apple Silicon o Intel. La aplicaci\u00f3n vive en la bandeja y levanta el enrutador junto con el panel de control localmente.<\/p>\n<p>No se necesita contrase\u00f1a para la versi\u00f3n de escritorio: el panel inicia sesi\u00f3n por s\u00ed solo a trav\u00e9s de una cuenta local oculta. Las \u00fanicas credenciales que necesitar\u00e1 son la clave unificada de la ventana emergente de la bandeja o del encabezado de la p\u00e1gina Claves.<\/p>\n<p>Los datos de la aplicaci\u00f3n se encuentran en un directorio:<\/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>Si Docker ya est\u00e1 instalado, el servidor se activa con un comando. El script crea el directorio ~\/freellmapi, genera una clave de cifrado, descarga la imagen e inicia el contenedor:<\/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>Ejecutar el script nuevamente es seguro: el archivo .env y la clave de cifrado se guardan y el contenedor se actualiza a la \u00faltima versi\u00f3n. En Windows, este m\u00e9todo funciona en WSL o en cualquier entorno bash.<\/p>\n<p>Despu\u00e9s del lanzamiento, el panel se abre en:<\/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>Para la instalaci\u00f3n del servidor, debe crear una cuenta con un correo electr\u00f3nico y una contrase\u00f1a. Si se olvida la contrase\u00f1a, el c\u00f3digo de restablecimiento se imprime en el registro del contenedor:<\/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>Si desea mantener la configuraci\u00f3n en git y administrar el inicio manualmente, Compose normal ser\u00e1 suficiente. En macOS y 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>En 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>La clave ENCRYPTION_KEY es obligatoria: se utiliza para cifrar claves de proveedor en la base de datos SQLite. No puede cambiarlo sobre la marcha: los viejos secretos ya no se descifrar\u00e1n. Para la rotaci\u00f3n, el proyecto tiene un comando independiente para rotar clave de cifrado.<\/p>\n<h3>Ejecutando desde la fuente<\/h3>\n<p>Para desarrollo o depuraci\u00f3n, puede ejecutar el proyecto a trav\u00e9s de Node.js:<\/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>En este modo, la API y el panel se generan en el puerto 3001 y la interfaz Vite se genera en el 5173.<\/p>\n<h2>Primer lanzamiento y claves del proveedor<\/h2>\n<p>Abrimos el panel, vamos a la p\u00e1gina <b>Claves<\/b> y agregamos las claves de los servicios que utilizamos. Para cada proveedor, la interfaz tiene un enlace de registro y una pista de d\u00f3nde obtener la clave. Basta con empezar con uno o dos: por ejemplo, Google AI Studio y Groq.<\/p>\n<p>Una vez agregada, la clave se somete a un control de estado. Si el proveedor respondi\u00f3 con un error, la clave permanecer\u00e1 en la lista, pero se marcar\u00e1 como en mal estado; se puede verificar nuevamente o eliminar.<\/p>\n<p>A continuaci\u00f3n, debes ir a la p\u00e1gina <b>Modelos<\/b> y ver qu\u00e9 modelos est\u00e1n disponibles. All\u00ed tambi\u00e9n puede configurar la estrategia de enrutamiento y el orden de la <b>Fallback Chain<\/b>, la cadena por la que pasa el enrutador en caso de errores y l\u00edmites. El modelo <b>auto<\/b> significa que la elecci\u00f3n la realiza el propio enrutador. Adem\u00e1s, est\u00e1n disponibles opciones como <b>auto:fast<\/b>, <b>auto:smart<\/b> y perfiles con nombre para tareas espec\u00edficas.<\/p>\n<p>Tambi\u00e9n vale la pena comprobar que existen modelos en la cadena que admiten herramientas. OpenCode utiliza activamente la llamada a herramientas y un modelo sin esta funci\u00f3n no podr\u00e1 leer archivos ni ejecutar comandos normalmente.<\/p>\n<p>La clave unificada se lleva all\u00ed, en la p\u00e1gina <b>Claves<\/b> o en la bandeja de la aplicaci\u00f3n de escritorio. Parece una cadena con un prefijo:<\/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 esta clave, y no las claves de proveedores individuales, la que se indica en OpenCode.<\/p>\n<h2>Conectarse a OpenCode<\/h2>\n<p>FreeLLMAPI tiene un generador de configuraci\u00f3n que lee el directorio del modelo desde la puerta de enlace en ejecuci\u00f3n, hace una copia de seguridad de la configuraci\u00f3n existente y le agrega cuidadosamente el proveedor.<\/p>\n<p>Primero, configuremos la clave unificada para la variable de entorno. El generador lo lee en lugar de una bandera separada, por lo que el secreto no terminar\u00e1 en el historial de comandos.<\/p>\n<p>En macOS y 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>En 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>Ahora veamos qu\u00e9 se grabar\u00e1 exactamente:<\/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>Si la diferencia es satisfactoria, repita el comando sin la bandera:<\/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>El generador escribe la configuraci\u00f3n global de OpenCode:<\/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>El proveedor freellmapi aparece en \u00e9l con el paquete @ai-sdk\/openai-compatible, la direcci\u00f3n base http:\/\/localhost:3001\/v1 y un mapa de modelos del cat\u00e1logo en vivo. El modelo predeterminado pasa a ser freellmapi\/auto.<\/p>\n<p>La clave en s\u00ed no termina en el archivo: la configuraci\u00f3n contiene la sustituci\u00f3n {env:FREELLMAPI_API_KEY}. Por lo tanto, la variable debe permanecer configurada cuando se inicia el agente:<\/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>Este m\u00e9todo tambi\u00e9n es conveniente porque el secreto no termina en la configuraci\u00f3n y no terminar\u00e1 en git. Para CI y ejecuciones \u00fanicas, esto es m\u00e1s correcto que almacenar la clave en un archivo.<\/p>\n<h2>Configuraci\u00f3n manual<\/h2>\n<p>Si no desea ejecutar el generador, puede describir manualmente el proveedor en opencode.json. La opci\u00f3n m\u00ednima se ve as\u00ed:<\/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>El campo modelo en el nivel superior es importante: sin \u00e9l, OpenCode puede continuar usando el modelo anterior o no seleccionar nada en una instalaci\u00f3n nueva. Es mejor tomar el contexto y los l\u00edmites de salida de la respuesta de la puerta de enlace, en lugar de inventarlos:<\/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>Puede agregar identificadores espec\u00edficos a la lista de modelos si necesita cambiarlos manualmente. Pero para el trabajo diario, el modo autom\u00e1tico es suficiente: el propio enrutador seleccionar\u00e1 un modelo en vivo y cambiar\u00e1 cuando se alcance el l\u00edmite.<\/p>\n<h2>C\u00f3mo usarlo<\/h2>\n<p>Despu\u00e9s de iniciar el c\u00f3digo abierto, la lista de modelos se abre con un comando familiar:<\/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>Tendr\u00e1 un proveedor FreeLLMAPI y un modelo autom\u00e1tico. Luego, el trabajo contin\u00faa como de costumbre: describimos la tarea, especificamos archivos mediante @, cambiamos el modo de planificaci\u00f3n con la tecla Tab, revertimos las ediciones con el comando \/undo. Para un proyecto nuevo, es \u00fatil ejecutar \/init para que el agente cree AGENTS.md.<\/p>\n<p>Un par de consejos pr\u00e1cticos:<\/p>\n<ul>\n<li><b>Enrutamiento.<\/b> Para rutina, d\u00e9jelo en autom\u00e1tico. Si necesitas velocidad, prueba auto:fast, si la calidad es auto:smart o un modelo potente espec\u00edfico del cat\u00e1logo.<\/li>\n<li><b>Diagn\u00f3stico<\/b> Cada respuesta de puerta de enlace contiene un encabezado X-Routed-Via con el nombre del proveedor y el modelo que realmente atendi\u00f3 la solicitud. Muestra d\u00f3nde el enrutador envi\u00f3 la tarea.<\/li>\n<li><b>An\u00e1lisis.<\/b> En la p\u00e1gina An\u00e1lisis, el panel muestra el volumen de solicitudes, el \u00e9xito, los retrasos p50\/p95 y el consumo de tokens por proveedor.<\/li>\n<li><b>Continuidad del di\u00e1logo.<\/b> Al cambiar de modelo en medio de una conversaci\u00f3n, la puerta de enlace puede agregar una breve nota sobre la transferencia de contexto. Habilitado por la variable FREELLMAPI_CONTEXT_HANDOFF=on_model_switch.<\/li>\n<\/ul>\n<p>Si OpenCode se ejecuta en un contenedor y FreeLLMAPI se ejecuta en un host, localhost apuntar\u00e1 al contenedor mismo. En este caso, debe utilizar host.docker.internal u otra direcci\u00f3n accesible desde el contenedor en la URL base.<\/p>\n<h2>A qu\u00e9 prestar atenci\u00f3n<\/h2>\n<p>FreeLLMAPI no reemplaza los modelos pagos ni es un servicio con un SLA. Es una forma de agrupar planes gratuitos en una \u00fanica puerta de enlace. De ah\u00ed que existan varias restricciones:<\/p>\n<ul>\n<li><b>La calidad fluct\u00faa.<\/b> Las tarifas gratuitas terminan y, a \u00faltima hora de la noche, cuando se acerca el agotamiento de las cuotas diarias, el enrutador puede cambiar a modelos m\u00e1s d\u00e9biles. Las cuotas suelen restablecerse a la medianoche UTC.<\/li>\n<li><b>Las latencias son variables.<\/b> Los distintos proveedores responden de forma diferente y, al cambiar a un modelo de copia de seguridad, la solicitud puede tardar considerablemente m\u00e1s.<\/li>\n<li><b>No hay modelos emblem\u00e1ticos.<\/b> Hay modelos buenos, pero no de gama alta, disponibles en planes gratuitos. Para arquitecturas complejas vale la pena considerar esto.<\/li>\n<li><b>La puerta de enlace debe estar ejecut\u00e1ndose.<\/b> Si la aplicaci\u00f3n o el contenedor se detiene, OpenCode no recibir\u00e1 una respuesta. Iniciar autom\u00e1ticamente la aplicaci\u00f3n en la bandeja o reiniciar la pol\u00edtica del contenedor resuelve este problema.<\/li>\n<li><b>El proyecto est\u00e1 dise\u00f1ado para un usuario.<\/b> Las claves del proveedor se almacenan localmente y est\u00e1n cifradas, pero un panel compartido para varias personas no es el escenario para esta herramienta. La clave unificada y el .env deben protegerse de la misma manera que un secreto normal.<\/li>\n<\/ul>\n<p>Y un matiz m\u00e1s: el cat\u00e1logo de modelos se actualiza solo, pero la instalaci\u00f3n gratuita recibe una instant\u00e1nea del cat\u00e1logo con un retraso de unos treinta d\u00edas. El plan pago Premium acelera la actualizaci\u00f3n, pero no es necesario familiarizarse con el proyecto: el enrutador permanece gratuito y abierto.<\/p>\n<h2>Enlaces<\/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>Fuentes<\/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 es un agente de programaci\u00f3n abierto que funciona en la terminal: lee archivos de proyecto, edita c\u00f3digo, ejecuta comandos y pruebas, busca en el repositorio y trabaja con git. No est\u00e1 vinculado a un solo proveedor de modelo, por lo que se puede conectar a \u00e9l casi cualquier servicio compatible con OpenAI. FreeLLMAPI es [&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":"es","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\/es\/wp-json\/wp\/v2\/posts\/198","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=198"}],"version-history":[{"count":1,"href":"https:\/\/demensdeum.com\/blog\/es\/wp-json\/wp\/v2\/posts\/198\/revisions"}],"predecessor-version":[{"id":199,"href":"https:\/\/demensdeum.com\/blog\/es\/wp-json\/wp\/v2\/posts\/198\/revisions\/199"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=198"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=198"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=198"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}