#Api de Pewrplexity sigue fallando

1 messages · Page 1 of 1 (latest)

hidden cedar
#

Es posible que la busqueda de perplexity siga fallando por falta de creditos ? Como compruebo si esta funcionando ? Es posible que este funcionando con la Api Key de Open Router auto ?

vast starBOT
remote lavaBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> ✅ Mark Solution

vast starBOT
cyan harnessBOT
#

Sí, puede ser por créditos, y sí, también puede estar entrando por OpenRouter.

Lo más útil para comprobarlo es esto, en orden:

openclaw --version
openclaw infer web providers --json
openclaw infer web search --query "OpenClaw docs" --json

Qué mirar:

  • Si ves clave pplx-..., usa la API nativa de Perplexity.
  • Si ves sk-or-... o tienes OPENROUTER_API_KEY, OpenClaw puede usar Perplexity vía OpenRouter/Sonar automáticamente.
  • Si responde con una respuesta sintetizada con citas, suele ser la ruta OpenRouter/Sonar.
  • Si devuelve filas estructuradas (title, url, snippet), suele ser la API nativa de Perplexity.
#

Importante: si no has fijado tools.web.search.provider: "perplexity", el auto-detect elige el primer provider web listo. O sea, tener OPENROUTER_API_KEY no garantiza que esté usando Perplexity si hay otro provider configurado antes.

Si quieres ver el fallo exacto, deja esto corriendo y repite la búsqueda:

openclaw logs --follow

Pásame la salida de esos 3 comandos y te digo enseguida si está:

  1. usando Perplexity nativo,
  2. usando OpenRouter,
  3. o fallando por auth/créditos.

Docs:

hidden cedar
#

ENVIO ULTIMA PRUEBA......
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw infer web search --query "test" --json
{
"ok": true,
"capability": "web.search",
"transport": "local",
"provider": "perplexity",
"attempts": [],
"outputs": [
{
"result": {
"query": "test",
"provider": "perplexity",
"model": "perplexity/sonar-pro",
"tookMs": 4463,
"externalContent": {
"untrusted": true,
"source": "web_search",
"provider": "perplexity",
"wrapped": true
},
"content": "\n<<<EXTERNAL_UNTRUSTED_CONTENT id="fc3ae28b1b03808a">>>\nSource: Web Search\n---\n**"Test"** is primarily defined as a means of evaluating skill, knowledge, intelligence, or aptitudes through questions, exercises, procedures, or trials, and can also refer to medical examinations, product trials, or scientific experiments.[1][2][3]\n\n--- Key Definitions as a Noun\n- A series of questions or exercises to measure abilities, knowledge, or capacities (e.g., educational or aptitude tests).[1][2]\n- A medical exam like a blood test or pregnancy test to check health or detect substances.[1][2]\n- A trial, experiment, or evaluation to verify functionality, safety, or effectiveness (e.g., product testing or stress tests).[1][2][3]\n- A result from such an evaluation (e.g., "tested positive").[1][2]\n\n--- As a Verb\n- To subject something or someone to a test for proof, analysis, or measurement (e.g., "test for HIV" or "test a new missile").[1][2]\n- To undergo testing or produce a specific result (e.g., "the cake tested done").[1][2]\n\n--- Other Contexts\n- In science/technology: Experiments, hypothesis testing, or product/system validation.[3]\n- Internet speed tests (e.g., tools measuring download/upload speeds).[4][7]\n- Hungarian translations include teszt (test), vizsgálat (examination), próba (trial), or vizsga (exam).[5][6]\n\nThis covers the most common usages; context like education, medicine, or tech determines the exact meaning.[1][2][3]\n<<<END_EXTERNAL_UNTRUSTED_CONTENT id="fc3ae28b1b03808a">>>",
"citations": [
"https://www.merriam-webster.com/dictionary/test",
"https://dictionary.cambridge.org/dictionary/english/test",
"https://en.wikipedia.org/wiki/Test",
"https://fast.com",
"https://hu.bab.la/szótár/angol-magyar/test",
"https://dictzone.com/english-hungarian-dictionary/test",
"https://www.speedtest.net",
"https://test-it.com/hu/"
]
}
}
]
}

cyan harnessBOT
#

Perfecto, con esa prueba ya se ve bastante claro.

Ahora mismo no parece un problema de créditos agotados, porque la búsqueda sí ha funcionado ("ok": true).

Y además, esto casi seguro indica que estás en la ruta Perplexity vía Sonar/OpenRouter compat:

  • provider: "perplexity"
  • model: "perplexity/sonar-pro"
  • devuelve una respuesta sintetizada con citas, no una lista estructurada de title/url/snippet

Eso encaja con lo que hace OpenClaw cuando Perplexity va por:

  • OPENROUTER_API_KEY, o
  • una key sk-or-..., o
  • plugins.entries.perplexity.config.webSearch.baseUrl/model

O sea, sí: es muy posible que esté funcionando con OpenRouter.

#

Si quieres rematar la comprobación, pásame solo esto también:

openclaw --version
openclaw infer web providers --json

Si infer web search funciona pero en el chat/agent falla, entonces el problema ya no está en Perplexity en sí, sino en:

  • la configuración del agente,
  • la selección automática del provider,
  • o algún fallo del turno concreto.

Docs:

Si quieres, te ayudo a interpretar el infer web providers --json en el siguiente mensaje.

hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw --version
openclaw infer web providers --json
openclaw infer web search --query "OpenClaw docs" --json
OpenClaw 2026.4.15 (041266a)
{
"search": [
{
"available": true,
"configured": true,
"selected": false,
"id": "brave",
"envVars": [
"BRAVE_API_KEY"
]
},
{
"available": true,
"configured": true,
"selected": false,
"id": "duckduckgo",
"envVars": []
},
{
"available": true,
"configured": false,
"selected": false,
"id": "exa",
"envVars": [
"EXA_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "firecrawl",
"envVars": [
"FIRECRAWL_API_KEY"
]
},
{
"available": true,
"configured": true,
"selected": false,
"id": "gemini",
"envVars": [
"GEMINI_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "grok",
"envVars": [
"XAI_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "kimi",
"envVars": [
"KIMI_API_KEY",
"MOONSHOT_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "minimax",
"envVars": [
"MINIMAX_CODE_PLAN_KEY",
"MINIMAX_CODING_API_KEY"
]
},
{
"available": true,
"configured": true,
"selected": false,
"id": "ollama",
"envVars": []
},
{
"available": true,
"configured": true,
"selected": true,
"id": "perplexity",
"envVars": [
"PERPLEXITY_API_KEY",
"OPENROUTER_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "searxng",
"envVars": [
"SEARXNG_BASE_URL"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "tavily",
"envVars": [
"TAVILY_API_KEY"
]
}
],
"fetch": [
{
"available": true,
"configured": false,
"selected": false,
"id": "firecrawl",
"envVars": [
"FIRECRAWL_API_KEY"
]
}
]
}
{
"ok": true,
"capability": "web.search",
"transport": "local",
"provider": "perplexity",
"attempts": [],
"outputs": [
{
"result": {
"query": "OpenClaw docs",
"provider": "perplexity",
"model": "perplexity/sonar-pro",
"tookMs": 6969,
"externalContent": {
"untrusted": true,
"source": "web_search",
"provider": "perplexity",
"wrapped": true
},
"content": "\n<<<EXTERNAL_UNTRUSTED_CONTENT id="58c8d69a12c2f71e">>>\nSource: Web Search\n---\nOpenClaw is an open-source, self-hosted gateway framework for running autonomous AI agents that connect to messaging platforms (e.g., Discord, Telegram, WhatsApp, Slack), support tool use, streaming responses, vision, voice, and browser automation—all while storing data locally for privacy.[3][4][5]\n\n--- Key Features\n- Multi-channel support: Built-in and plugin-based integration with 12+ platforms like iMessage, Matrix, Microsoft Teams, Signal, and Zalo.[4][5]\n- Agent capabilities: Sessions, memory, function calling, retries, error handling, and routing for multi-agent workflows.[4][5]\n- Local infrastructure: Runs a Gateway on localhost:18789 (default), uses SQLite (~/.openclaw/openclaw.db), and includes a CLI and Control UI/Dashboard for chatting without channel setup.[3][4]\n- Privacy-focused: No external data sharing by default.[4]\n-

cyan harnessBOT
#

Sí, aquí ya queda bastante claro:

  • Está funcionando
  • El provider activo es perplexity
  • No parece un fallo actual de créditos, porque la búsqueda responde bien
  • Y además está usando la ruta Sonar/compat, no la Search API nativa:
"provider": "perplexity",
"model": "perplexity/sonar-pro"

Eso significa que casi seguro está yendo por OpenRouter o por una config equivalente de compatibilidad, no por la API nativa pplx-.

La pista fuerte es esta:

  • devuelve una respuesta sintetizada con citas
  • no devuelve resultados estructurados tipo title / url / snippet
#

Así que, resumiendo:

  1. Sí, Perplexity está seleccionado
  2. Sí, está funcionando ahora mismo
  3. Sí, muy probablemente está usando OpenRouter/Sonar

Lo único que no se ve al 100% en esa salida es de dónde sale la credencial exacta. Pero localmente lo puedes distinguir fácil sin pegar la key aquí:

  • si tu clave empieza por sk-or-OpenRouter
  • si empieza por pplx-Perplexity nativa

No pegues la key en público, claro 🙂

Si quieres, el siguiente paso útil sería mirar solo esto:

hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw config get tools.web.search --json
{
"provider": "perplexity"

cyan harnessBOT
#

Perfecto, ahí está 🙂

Eso confirma que lo tienes forzado por config:

tools.web.search.provider = "perplexity"

O sea:

  • no está entrando por auto-detect
  • el provider activo es Perplexity
  • y como antes vimos model: "perplexity/sonar-pro", está usando la ruta Sonar/compatibilidad
  • además, sí está funcionando ahora mismo

Así que la conclusión sería:

#
  1. Perplexity está seleccionado explícitamente
  2. La búsqueda funciona
  3. Muy probablemente va por OpenRouter/Sonar, no por la API nativa pplx-

Si más adelante vuelve a fallar, entonces ya miraría:

  • créditos/cuota en OpenRouter o Perplexity
  • o logs en el momento del fallo con:
openclaw logs --follow

Docs: https://docs.openclaw.ai/tools/perplexity-search

Glad that helped! 🎉
Si esto lo dejó claro, por favor right-click en el mensaje de la solución → Apps → ✅ Mark Solution.
Así Answer Overflow lo indexa para el siguiente que se atasque con Perplexity.

hidden cedar
#

como hacemos una prueba de busqueda amplia para verificar su funcionamiento ?

cyan harnessBOT
#

Sí, haría una prueba en 3 rondas, con consultas bastante abiertas.

Prueba esto:

openclaw infer web search --query "latest AI agent frameworks and browser automation tools" --json
openclaw infer web search --query "OpenClaw documentation installation configuration web search providers" --json
openclaw infer web search --query "today major AI open source news and model provider updates" --json

Y mira que en las 3 salga:

  • "ok": true
  • "provider": "perplexity"
  • "model": "perplexity/sonar-pro"
  • varias citations
  • contenido razonable, no vacío
#

Si quieres hacerlo fino, abre otra terminal con:

openclaw logs --follow

y luego lanzas esas búsquedas. Así ves si hay errores intermitentes de cuota/rate limit aunque alguna consulta responda.

En tu caso, como estás en Sonar/OpenRouter compat, la validación buena no es tanto “muchos resultados estructurados”, sino:

  • que responda bien a temas amplios
  • que cite varias fuentes
  • y que no falle en consultas consecutivas

Si quieres, te preparo una batería de 5 queries buenas para dejar Perplexity “stress-tested” de verdad.

hidden cedar
#

BORRE GRAN PARTE DEL RESULTADO DE LA BUSQUEDA POR QUE SUPERABA LA VENTANA PERMITIDA POR DISCORD alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw infer web search --query "latest AI agent frameworks and browser automation tools" --json
openclaw infer web search --query "OpenClaw documentation installation configuration web search providers" --json
openclaw infer web search --query "today major AI open source news and model provider updates" --json
{
"ok": true,
"capability": "web.search",
"transport": "local",
"provider": "perplexity",
"attempts": [],
"outputs": [
{
"result": {
"query": "latest AI agent frameworks and browser automation tools",
"provider": "perplexity",
"model": "perplexity/sonar-pro",
"tookMs": 8001,
"externalContent": {
"untrusted": true,
"source": "web_search",
"provider": "perplexity",
"wrapped": true
},
"content": "\n<<<EXTERNAL_UNTRUSTED_CONTENT id="5ff123094a52aea4">>>\nSource: Web Search\n---\nThe leading AI agent frameworks in 2026 include LangGraph, CrewAI, OpenAI Agents SDK, AutoGen (now in maintenance and merging into Microsoft Agent Framework), LangChain, and Semantic Kernel, valued for their support of multi-agent orchestration, planning, tool use, and state management.[1][2][3][6] These frameworks enable developers to build autonomous agents that reason, execute tasks, and collaborate, with popularity measured by GitHub stars, downloads, and enterprise adoption like Klarna (LangGraph) or Novo Nordisk (AutoGen).[1][2]\n\n--- Top AI Agent Frameworks\nThe most cited frameworks across sources, ranked by mentions and metrics (e.g., stars/downloads as of early 2026):\n\n| Framework | GitHub Stars | Monthly Downloads | Key Strengths | Notable Use Cases |\n|--------------------|--------------|-------------------|----------------------------------------|---------------------------------------|\n| LangGraph | 24.8k | 34.5M | Stateful orchestration, multi-agent, human-in-the-loop | Enterprise (Klarna saved $60M), Uber, Cisco[1][2] |\n| CrewAI | 44.3k | 5.2M | Role-based teams, simple setup, streaming tools | Customer service, marketing (Oracle, Deloitte)[1][2][3][4] |\n| OpenAI Agents SDK | 19k | 10.3M | Lightweight multi-agent, 100+ LLMs, tracing/guardrails | Prototyping, website-to-agents[2][5] |\n| AutoGen | 54.6k | 856k | Event-driven conversations (maintenance mode post-Oct 2025 merge)[2][1][3] | Data science (Novo Nordisk)[2] |\n| LangChain | N/A | N/A | Rapid prototyping, RAG, ecosystem integrations (uses LangGraph runtime) | General agents, retrieval systems[1][3][5] |\n| Semantic Kernel| N/A | N/A | Enterprise Microsoft stack, merging with AutoGen (GA Q1 2026) | Multi-agent coordination[1][3] |\n\nOthers gaining traction: Google ADK (17.8k stars, Gemini integration),[2] Agno (multi-LLM support),[4] LlamaIndex (data retrieval),[6] Botpress/Rasa (conversational).[3]\n\n--- Browser Automation Tools in AI Agent Contexts\nSearch results emphasize agent frameworks with built-in tool integrations for browser automation, rather than standalone tools. Key examples:\n- Firecrawl + OpenAI Agents SDK: Converts websites into interactive agents via web scraping/crawling.[2]\n- CrewAI/LangGraph: Support custom tools for browser tasks (e.g., via Selenium/Playwright integrations in ecosystems).[1][2]\n- General: Frameworks like LangChain provide hooks for browser tools (e.g., retrieval from web sources).[1]\n\nNo dedicated browser automation tools (e.g., Puppeteer, Playwright) are highlighted as "latest" here; focus is on agent-native capabilities for tasks like web navigation and data extraction.[2] For complex workflows, combine with libraries like those in LangChain's ec

cyan harnessBOT
#

Sí, con ese resultado ya queda validado 👍

Esa salida demuestra que:

  • la búsqueda responde
  • el provider activo sigue siendo Perplexity
  • está yendo por perplexity/sonar-pro
  • devuelve contenido largo + citas, o sea, la búsqueda amplia sí funciona

Así que yo ya descartaría, al menos ahora mismo:

  • Perplexity caído
  • provider mal seleccionado
  • créditos totalmente agotados

Si el problema aparece en otro sitio, entonces ya no parece ser web_search en sí, sino el flujo concreto donde lo estás usando.

#

Para no pelearte con el límite de Discord, no hace falta pegar todo el JSON.
Si tienes jq, puedes resumir cada prueba así:

openclaw infer web search --query "latest AI agent frameworks and browser automation tools" --json | jq '{ok, provider, model: .outputs[0].result.model, tookMs: .outputs[0].result.tookMs, citations: (.outputs[0].result.citations | length)}'

Con eso te saca solo lo importante.

Si quieres, el siguiente paso es este: enseñarme dónde “falla” exactamente, porque Perplexity/search como tal ahora pinta bien.
Glad that helped! 🎉
Si esto te lo aclaró, puedes right-click → Apps → ✅ Mark Solution para que Answer Overflow lo indexe.

hidden cedar
#

verifiquemos el PRESET de OpenRouter auto y dejemoslo como primario, Esta configurado Kimi 2.6 en @preset/asistente-diario. Y quiero dejarlo como primario en el Gateway, como secundario Gemini y como tercera opcion Open AI,

cyan harnessBOT
#

Sí, y aquí hay un matiz importante:

Si quieres que el preset @preset/asistente-diario sea el primario, entonces el modelo primario debe ser:

openrouter/@preset/asistente-diario

No openrouter/auto, porque auto y @preset/... son cosas distintas.

Hazlo así:

openclaw models set openrouter/@preset/asistente-diario
openclaw models fallbacks clear
openclaw models fallbacks add google/<tu-modelo-gemini>
#
openclaw models fallbacks add openai/<tu-modelo-openai>
openclaw models status

Si prefieres que también Gemini y OpenAI pasen por OpenRouter, entonces serían refs tipo:

openrouter/google/<modelo>
openrouter/openai/<modelo>

Yo, sinceramente, prefiero Gemini y OpenAI nativos como fallback, así OpenRouter no se vuelve punto único de fallo.

Para verificar el preset y los refs exactos antes de tocar nada:

#
openclaw models status
openclaw models list --provider openrouter --plain
openclaw models list --provider google --plain
openclaw models list --provider openai --plain

Y ojo, si tienes agents.defaults.models como allowlist, asegúrate de incluir ahí los 3 refs, o luego /model y algunos picks/fallbacks te pueden dar guerra.

Si me pegas:

  • el ref exacto de Gemini que quieres
  • el ref exacto de OpenAI que quieres

te devuelvo el bloque final exacto, ya listo para copiar/pegar.

Docs:

hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw models status
openclaw models list --provider openrouter --plain
openclaw models list --provider google --plain
openclaw models list --provider openai --plain

🦞 OpenClaw 2026.4.15 (041266a)
Pairing codes exist because even bots believe in consent—and good security hygiene.

Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : google/gemini-3.1-flash-lite-preview
Fallbacks (2) : openrouter/auto, openai/gpt-4.1-mini
Image model : -
Image fallbacks (0): -
Aliases (4) : GPT -> openai/gpt-5.1-codex, gpt -> openai/gpt-5.4, gemini-lite -> google/gemini-3.1-flash-lite-preview, gemini-flash -> google/gemini-3-flash-preview
Configured models (7): openai/gpt-5.1-codex, openai/gpt-5.4, openrouter/free, google/gemini-3.1-flash-lite-preview, google/gemini-3-flash-preview, openrouter/auto, openai/gpt-4.1-mini

Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (0): -

  • brave effective=env:BSAwl7-5...x7NCmChU | env=BSAwl7-5...x7NCmChU | source=env: BRAVE_API_KEY
  • google effective=env:AIzaSyCx...1ghdoEJY | env=AIzaSyCx...1ghdoEJY | source=env: GEMINI_API_KEY
  • openai effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | openai:default=sk-proj-...fRb8ZXEA | env=sk-proj-...pSn135wA | source=env: OPENAI_API_KEY
  • openrouter effective=env:sk-or-v1...6a9c8da7 | env=sk-or-v1...6a9c8da7 | source=env: OPENROUTER_API_KEY
  • perplexity effective=env:sk-or-v1...6a9c8da7 | env=sk-or-v1...6a9c8da7 | source=env: OPENROUTER_API_KEY

OAuth/token status

  • none

🦞 OpenClaw 2026.4.15 (041266a) — I'm not AI-powered, I'm AI-possessed. Big difference.

openrouter/auto
openrouter/free

🦞 OpenClaw 2026.4.15 (041266a)
Like having a senior engineer on call, except I don't bill hourly or sigh audibly.

google/gemini-3.1-flash-lite-preview
google/gemini-3-flash-preview

🦞 OpenClaw 2026.4.15 (041266a) — Claws out, commit in—let's ship something mildly responsible.

openai/gpt-4.1-mini
openai/gpt-5.1-codex
openai/gpt-5.4

cyan harnessBOT
#

Perfecto, ahora sí se ve claro.

Tienes agents.defaults.models como allowlist, así que para usar el preset primero hay que añadirlo a esa lista.
Y que no salga en models list --provider openrouter --plain es normal, porque ese comando te está enseñando los modelos configurados, no tus presets remotos.

Asumiendo que quieres mantener como fallback los que ya tienes ahora:

  • Gemini: google/gemini-3.1-flash-lite-preview
  • OpenAI: openai/gpt-4.1-mini

haz esto:

openclaw config set 'agents.defaults.models["openrouter/@preset/asistente-diario"]' '{}' --strict-json

openclaw config set agents.defaults.model --strict-json '{
#
  "primary": "openrouter/@preset/asistente-diario",
  "fallbacks": [
    "google/gemini-3.1-flash-lite-preview",
    "openai/gpt-4.1-mini"
  ]
}'

openclaw models status

Si quieres verificar el preset con una prueba real justo después:

openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
#

Qué deberías ver luego en openclaw models status:

  • Default: openrouter/@preset/asistente-diario
  • Fallbacks: google/gemini-3.1-flash-lite-preview, openai/gpt-4.1-mini

Si prefieres que la tercera opción sea openai/gpt-5.4 en vez de gpt-4.1-mini, cambia solo esa última línea del JSON.

Si te apetece, pega el models status después de hacerlo y te confirmo que quedó fino.

hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "openai",
"model": "gpt-4.1-mini",
"attempts": [],
"outputs": [
{
"text": "smoke-ok",
"mediaUrl": null
}
]
}

cyan harnessBOT
#

Ajá, buena pista.

Eso me dice que ahora mismo model.run está entrando directo en OpenAI gpt-4.1-mini, y además con:

"attempts": []

O sea, no parece que haya intentado primero el preset y luego haya hecho fallback.
Más bien pinta a que el cambio no quedó aplicado como default efectivo.

Antes de tocar más, pásame estas 3 salidas:

openclaw models status
openclaw config get agents.defaults.model --json
#
openclaw config get 'agents.defaults.models["openrouter/@preset/asistente-diario"]' --json

Con eso vemos enseguida cuál de estas 3 está pasando:

  1. el preset no se guardó en config,
  2. el preset sí está en config pero no quedó como primary,
  3. o tu versión no está resolviendo bien openrouter/@preset/...

Lo importante aquí es que ese smoke test no está usando el preset.
Así que todavía no lo daría por cerrado.

hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw models status
openclaw config get agents.defaults.model --json

🦞 OpenClaw 2026.4.15 (041266a) — Running on your hardware, reading your logs, judging nothing (mostly).

Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : openrouter/@preset/asistente-diario
Fallbacks (2) : google/gemini-3.1-flash-lite-preview, openai/gpt-4.1-mini
Image model : -
Image fallbacks (0): -
Aliases (4) : GPT -> openai/gpt-5.1-codex, gpt -> openai/gpt-5.4, gemini-lite -> google/gemini-3.1-flash-lite-preview, gemini-flash -> google/gemini-3-flash-preview
Configured models (8): openai/gpt-5.1-codex, openai/gpt-5.4, openrouter/free, google/gemini-3.1-flash-lite-preview, google/gemini-3-flash-preview, openrouter/auto, openai/gpt-4.1-mini, "openrouter/@preset/asistente-diario"

Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (0): -

  • brave effective=env:BSAwl7-5...x7NCmChU | env=BSAwl7-5...x7NCmChU | source=env: BRAVE_API_KEY
  • google effective=env:AIzaSyCx...1ghdoEJY | env=AIzaSyCx...1ghdoEJY | source=env: GEMINI_API_KEY
  • openai effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | openai:default=sk-proj-...fRb8ZXEA | env=sk-proj-...pSn135wA | source=env: OPENAI_API_KEY
  • openrouter effective=env:sk-or-v1...6a9c8da7 | env=sk-or-v1...6a9c8da7 | source=env: OPENROUTER_API_KEY
  • perplexity effective=env:sk-or-v1...6a9c8da7 | env=sk-or-v1...6a9c8da7 | source=env: OPENROUTER_API_KEY

OAuth/token status

  • none
    {
    "primary": "openrouter/@preset/asistente-diario",
    "fallbacks": [
    "google/gemini-3.1-flash-lite-preview",
    "openai/gpt-4.1-mini"
    ]
    }
    alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw config get 'agents.defaults.models["openrouter/@preset/asistente-diario"]' --json
    {}
cyan harnessBOT
#

Perfecto, con eso ya cerramos una parte importante:

  • la config sí quedó bien
  • el primary sí es openrouter/@preset/asistente-diario
  • los fallbacks sí son Gemini y luego OpenAI

Así que el problema ya no es la config.
Si infer model run acabó en openai/gpt-4.1-mini, entonces huele a una de estas dos:

  1. el preset está fallando en runtime y cae al fallback,
  2. o hay un bug de resolución con openrouter/@preset/... en tu versión.

El siguiente paso bueno es capturar logs durante una sola ejecución:

openclaw logs --follow --plain | rg -i 'openrouter|preset|fallback|gpt-4.1-mini|error'
#

y en otra terminal lanzas:

openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json

Con eso deberíamos ver si pasa algo como:

  • fallo al resolver @preset/asistente-diario
  • rechazo de OpenRouter al preset
  • salto explícito a fallback
  • o bug raro del runtime

Ahora mismo mi lectura es: la config está correcta, pero el preset no se está ejecutando de verdad.

Pégame esas líneas de log y te digo cuál de las dos es. Si esto acaba siendo bug, tocaría GitHub issue: https://github.com/openclaw/openclaw/issues

hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw logs --follow --plain | rg -i 'openrouter|preset|fallback|gpt-4.1-mini|error'
2026-04-20T22:58:39.516Z error [tools] read failed: ENOENT: no such file or directory, access '/home/alexifra/.openclaw/credentials/gog_token.txt' raw_params={"path":"~/.openclaw/credentials/gog_token.txt","limit":10}
2026-04-20T22:58:39.532Z error [tools] read failed: ENOENT: no such file or directory, access '/home/alexifra/.openclaw/credentials/gog_token.txt' raw_params={"path":"~/.openclaw/credentials/gog_token.txt","limit":10}
2026-04-20T22:58:42.910Z error [tools] read failed: EISDIR: illegal operation on a directory, read raw_params={"path":"~/.openclaw/credentials/","limit":20}
2026-04-20T22:58:42.911Z error [tools] read failed: EISDIR: illegal operation on a directory, read raw_params={"path":"~/.openclaw/credentials/","limit":20}
2026-04-20T23:10:10.161Z error [tools] edit failed: Found 2 occurrences of the text in ~/.openclaw/openclaw.json. The text must be unique. Please provide more context to make it unique. raw_params={"path":"~/.openclaw/openclaw.json","edits":[{"oldText":""auth": {","newText":""auth": {\n "profiles": {\n "google-keep-service-account": {\n "provider": "google",\n "mode": "service_account",\n "credentialJsonPath": "~/.openclaw/credentials/google_keep_service_account.json"\n }\n },\n"}]}
2026-04-20T23:10:10.164Z error [tools] edit failed: Found 2 occurrences of the text in ~/.openclaw/openclaw.json. The text must be unique. Please provide more context to make it unique. raw_params={"path":"~/.openclaw/openclaw.json","edits":[{"oldText":""auth": {","newText":""auth": {\n "profiles": {\n "google-keep-service-account": {\n "provider": "google",\n "mode": "service_account",\n "credentialJsonPath": "~/.openclaw/credentials/google_keep_service_account.json"\n }\n },\n"}]}
2026-04-20T23:10:36.888Z error Config invalid
2026-04-20T23:10:36.930Z error File: ~/.openclaw/openclaw.json
2026-04-20T23:10:36.931Z error Problem:
2026-04-20T23:10:36.931Z error - auth.profiles.google-keep-service-account.mode: Invalid input (allowed: "api_key", "oauth", "token")
2026-04-20T23:10:36.932Z error {"0":"","_meta":{"runtime":"node","runtimeVersion":"22.22.1","hostname":"unknown","name":"openclaw","date":"2026-04-20T23:10:36.932Z","logLevelId":5,"logLevelName":"ERROR","path":{"fullFilePath":"file:///home/alexifra/.local/lib/node_modules/openclaw/dist/subsystem-Cgmckbux.js:155:68","fileName":"subsystem-Cgmckbux.js","fileNameWithLine":"subsystem-Cgmckbux.js:155","fileColumn":"68","fileLine":"155","filePath":"/home/alexifra/.local/lib/node_modules/openclaw/dist/subsystem-Cgmckbux.js","filePathWithLine":"/home/alexifra/.local/lib/node_modules/openclaw/dist/subsystem-Cgmckbux.js:155","method":"console.error"}},"time":"2026-04-20T20:10:36.932-03:00"}
2026-04-20T23:10:36.932Z error Run: openclaw doctor --fix
2026-04-20T23:10:37.070Z error Gateway aborted: config is invalid.
2026-04-20T23:10:43.297Z error [tools] read failed: ENOENT: no such file or directory, access '/home/alexifra/.local/lib/node_modules/openclaw/docs/config.md' raw_params={"path":"~/.local/lib/node_modules/openclaw/docs/config.md","limit":60}
2026-04-20T23:10:43.300Z error [tools] read failed: ENOENT: no such file or directory, access '/home/alexifra/.local/lib/node_modules/openclaw/docs/config.md' raw_params={"path":"~/.local/lib/node_modules/openclaw/docs/config.md","limit":60}
2026-04-20T23:10:49.005Z error [tools] web_search failed: Perplexity API error (401): {"error":{"message":"User not found.","code":401}} raw_params={"query":"openclaw google service account authentication configuration"}
2026-04-20T23:10:49.006Z error [tools] web_search failed: Perplexity API error (401): {"error":{"message":"User not found.","code":401}} raw_params={"query":"openclaw google service account authentication configuration"}
2026-04-20T23:28:35.086Z error [tools] web_search failed: Perplexity API error (401):

cyan harnessBOT
#

Sí, pero esas líneas que pegaste son históricas. No son del smoke test nuevo.

Lo que veo ahí es:

  • errores viejos de edición/config
  • y un web_search failed: Perplexity API error (401): User not found

Eso explica el problema anterior de Perplexity, pero no nos dice por qué el preset cayó a gpt-4.1-mini.

Hagámoslo más limpio así:

Terminal 1

openclaw logs --limit 20 --follow --plain | rg -i 'openrouter|preset|fallback|gpt-4.1-mini|model.run|error'

Espera a que termine de sacar el histórico.

#

Terminal 2

openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json

Y me pegas solo las líneas nuevas que salgan en la terminal 1 justo después de ejecutar eso.

Ahora mismo lo único sólido es:

  • la config del preset está bien
  • el run real acabó en openai/gpt-4.1-mini
  • pero todavía no tenemos el log del momento exacto del salto

Si quieres, también te adelanto algo: ese Perplexity API error (401): User not found sí apunta a que antes estabas pegándole a Perplexity/OpenRouter con una credencial o ruta que no estaba resolviendo bien.

hidden cedar
#

TERMINAL 1 alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw logs --limit 20 --follow --plain | rg -i 'openrouter|preset|fallback|gpt-4.1-mini|model.run|error'
2026-04-21T01:01:06.377Z error (node:38301) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.
2026-04-21T01:01:18.353Z info gateway {"subsystem":"gateway"} agent model: openrouter/@preset/asistente-diario
2026-04-21T01:01:30.230Z warn gateway {"subsystem":"gateway"} startup model warmup failed for openrouter/@preset/asistente-diario: Error: Unknown model: openrouter/@preset/asistente-diario
Log tail truncated (increase --max-bytes). TERMINAL 2 alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "openai",
"model": "gpt-4.1-mini",
"attempts": [],
"outputs": [
{
"text": "smoke-ok",
"mediaUrl": null
}
]
}

cyan harnessBOT
#

Ya lo tenemos. La clave es esta línea:

startup model warmup failed for openrouter/@preset/asistente-diario: Error: Unknown model: openrouter/@preset/asistente-diario

Eso significa que, en tu 2026.4.15, OpenClaw no está resolviendo ese ref de preset como modelo válido.
Por eso luego el run termina en un modelo que sí conoce, en tu caso openai/gpt-4.1-mini.

Entonces, diagnóstico corto:

  • la config está bien escrita
  • el preset no se está aceptando en runtime
  • no era un problema de créditos aquí
  • el bloqueo real es: Unknown model: openrouter/@preset/asistente-diario

Qué haría ahora

#

Opción 1, práctica ya mismo
Usa como primario un ref que OpenClaw sí reconozca hoy:

  • openrouter/auto, o
  • un modelo concreto openrouter/<provider>/<model>

y deja Gemini/OpenAI como fallback.

Opción 2, si quieres ese preset sí o sí
Actualiza OpenClaw a una versión más nueva y vuelve a probar.
Si en la última versión sigue saliendo Unknown model: openrouter/@preset/..., eso ya es carne de GitHub issue:
https://github.com/openclaw/openclaw/issues

Cambio rápido para dejarlo estable ya

openclaw config set agents.defaults.model --strict-json '{
#
  "primary": "openrouter/auto",
  "fallbacks": [
    "google/gemini-3.1-flash-lite-preview",
    "openai/gpt-4.1-mini"
  ]
}'

Luego:

openclaw models status
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json

Si quieres, te ayudo a dejar un OpenRouter concreto como primario en vez de auto, pero usaría un ref real reconocido por tu instalación, no @preset/....

hidden cedar
#

dame el paso a paso sin vueltas ni tantas opciones. Hoy actualizamos Open Claw a la ultima version disponible

cyan harnessBOT
#

Sí. Paso a paso, sin vueltas:

1) Sacá el preset roto y dejá OpenRouter Auto como primario

openclaw config set agents.defaults.model --strict-json '{
  "primary": "openrouter/auto",
  "fallbacks": [
    "google/gemini-3.1-flash-lite-preview",
    "openai/gpt-4.1-mini"
  ]
}'

2) Verificá que quedó bien

openclaw models status
#

Tenés que ver:

  • Default: openrouter/auto
  • Fallbacks: google/gemini-3.1-flash-lite-preview, openai/gpt-4.1-mini

3) Hacé la prueba

openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json

4) Resultado esperado

Si quedó bien, ya no debería aparecer:

Unknown model: openrouter/@preset/asistente-diario
#

Importante

Hoy, con lo que vimos, no uses:

openrouter/@preset/asistente-diario

porque tu instalación lo toma como unknown model aunque esté en config.

Si después de esto sigue raro, ahí sí toca bug report:
https://github.com/openclaw/openclaw/issues

Si quieres, pega el models status y el infer model run final y te digo en una línea si quedó OK.

hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw config set agents.defaults.model --strict-json '{
"primary": "openrouter/auto",
"fallbacks": [
"google/gemini-3.1-flash-lite-preview",
"openai/gpt-4.1-mini"
]
}'

🦞 OpenClaw 2026.4.15 (041266a) — Shell yeah—I'm here to pinch the toil and leave you the glory.

Config overwrite: /home/alexifra/.openclaw/openclaw.json (sha256 fc31bcb697ab9ca86ccd1e4e90dbd76d1a8a3abb412a3db56f5f007f01dfd6f2 -> ff4e10827c6c7c3eb2bb9428abb8c7f5418b1eba68dc3155fea463805ddb8016, backup=/home/alexifra/.openclaw/openclaw.json.bak)
Updated agents.defaults.model. Restart the gateway to apply.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw models status

🦞 OpenClaw 2026.4.15 (041266a) — Your config is valid, your assumptions are not.

Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : openrouter/openrouter/auto (from openrouter/auto)
Fallbacks (2) : google/gemini-3.1-flash-lite-preview, openai/gpt-4.1-mini
Image model : -
Image fallbacks (0): -
Aliases (4) : GPT -> openai/gpt-5.1-codex, gpt -> openai/gpt-5.4, gemini-lite -> google/gemini-3.1-flash-lite-preview, gemini-flash -> google/gemini-3-flash-preview
Configured models (8): openai/gpt-5.1-codex, openai/gpt-5.4, openrouter/free, google/gemini-3.1-flash-lite-preview, google/gemini-3-flash-preview, openrouter/auto, openai/gpt-4.1-mini, "openrouter/@preset/asistente-diario"

Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (0): -

  • brave effective=env:BSAwl7-5...x7NCmChU | env=BSAwl7-5...x7NCmChU | source=env: BRAVE_API_KEY
  • google effective=env:AIzaSyCx...1ghdoEJY | env=AIzaSyCx...1ghdoEJY | source=env: GEMINI_API_KEY
  • openai effective=profiles:~/.openclaw/agents/main/agent/auth-profiles.json | profiles=1 (oauth=0, token=0, api_key=1) | openai:default=sk-proj-...fRb8ZXEA | env=sk-proj-...pSn135wA | source=env: OPENAI_API_KEY
  • openrouter effective=env:sk-or-v1...6a9c8da7 | env=sk-or-v1...6a9c8da7 | source=env: OPENROUTER_API_KEY
  • perplexity effective=env:sk-or-v1...6a9c8da7 | env=sk-or-v1...6a9c8da7 | source=env: OPENROUTER_API_KEY

OAuth/token status

  • none
cyan harnessBOT
#

Perfecto. Va bien.

Te falta solo esto:

1) Reinicia el gateway

openclaw gateway restart

2) Vuelve a probar

openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json

3) Qué espero ver

Que ya no salga el error del preset roto, y que el run use:

#
  • OpenRouter auto, o
  • si falla, recién ahí Gemini/OpenAI como fallback

Ese openrouter/openrouter/auto (from openrouter/auto) es la normalización interna, no me preocupa.

Pégame solo la salida del infer model run después del restart y te digo si quedó listo.

hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "openai",
"model": "gpt-4.1-mini",
"attempts": [],
"outputs": [
{
"text": "smoke-ok",
"mediaUrl": null
}
]
}

cyan harnessBOT
#

No quedó bien. Sigue entrando por OpenAI.

Haz esto exacto, en este orden, y pégame solo esas salidas:

openclaw gateway restart
openclaw gateway status
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json

Ahora mismo no doy por hecho que el restart se haya aplicado al runtime.

Si después de eso sigue saliendo openai/gpt-4.1-mini, ya no seguimos dando vueltas: lo tratamos como bug/runtime issue y te digo el siguiente paso exacto.

hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw gateway restart
openclaw gateway status
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json

🦞 OpenClaw 2026.4.15 (041266a) — I read logs so you can keep pretending you don't have to.

Restarted systemd service: openclaw-gateway.service

🦞 OpenClaw 2026.4.15 (041266a) — Your second brain, except this one actually remembers where you left things.



Service: systemd (enabled)
File logs: /tmp/openclaw/openclaw-2026-04-20.log
Command: /usr/bin/node /home/alexifra/.local/lib/node_modules/openclaw/dist/index.js gateway --port 18789
Service file: ~/.config/systemd/user/openclaw-gateway.service
Service env: OPENCLAW_GATEWAY_PORT=18789

Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json

Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.

Runtime: running (pid 39064, state active, sub running, last exit 0, reason 0)
RPC probe: ok

Listening: 127.0.0.1:18789
Troubles: run openclaw status
Troubleshooting: https://docs.openclaw.ai/troubleshooting
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "openai",
"model": "gpt-4.1-mini",
"attempts": [],
"outputs": [
{
"text": "smoke-ok",
"mediaUrl": null
}
]
}

cyan harnessBOT
#

Ya está confirmado: no es tu config.

Con restart hecho, models status mostrando openrouter/auto, y infer model run saliendo igual por openai/gpt-4.1-mini, esto ya es bug/runtime issue.

Resumen corto del bug

  • Configurado: agents.defaults.model.primary = openrouter/auto
  • openclaw models status lo muestra bien
  • openclaw gateway restart aplicado
  • Pero openclaw infer model run ... sigue usando openai/gpt-4.1-mini
  • attempts: []

Y antes, con el preset, además daba:

  • Unknown model: openrouter/@preset/asistente-diario

Qué haría yo ahora

1) Dejarlo estable hoy

#
openclaw config set agents.defaults.model --strict-json '{
  "primary": "google/gemini-3.1-flash-lite-preview",
  "fallbacks": [
    "openai/gpt-4.1-mini"
  ]
}'
openclaw gateway restart

2) Reportarlo como bug

Abre issue aquí:
https://github.com/openclaw/openclaw/issues

Puedes pegar este resumen:

#
OpenClaw 2026.4.15

Configured:
- primary: openrouter/auto
- fallbacks: google/gemini-3.1-flash-lite-preview, openai/gpt-4.1-mini

Observed:
- openclaw models status shows openrouter/auto as default
- openclaw gateway restart succeeds
- openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json still uses provider=openai model=gpt-4.1-mini
- attempts is empty

Also, using openrouter/@preset/asistente-diario logs:
- Unknown model: openrouter/@preset/asistente-diario
#

Si quieres, te dejo en el siguiente mensaje el comando exacto para pasar a Gemini primario + OpenAI fallback y cerrar esto por hoy.

hidden cedar
#

Que pongo de Titulo

cyan harnessBOT
#

Pon este:

openrouter/auto ignored by infer model run, falls back to openai/gpt-4.1-mini despite being configured as primary

Y en el body menciona aparte lo del preset openrouter/@preset/asistente-diarioUnknown model.

hidden cedar
#

dame exactamente lo que quieras que vaya en el Body, el contenido final que explique el caso completo

cyan harnessBOT
#

Pega esto tal cual en el Body:

### Version

OpenClaw 2026.4.15 (041266a)

### Environment

- Linux
- Gateway managed by `systemd`
- Service command:
  `/usr/bin/node /home/alexifra/.local/lib/node_modules/openclaw/dist/index.js gateway --port 18789`
- Config file used by both CLI and service:
  `~/.openclaw/openclaw.json`
- Gateway restart succeeds and `openclaw gateway status` reports `Runtime: running` and `RPC probe: ok`
#

### Goal

I want to use OpenRouter as the primary model for the gateway, with Gemini as first fallback and OpenAI as second fallback.

### First related issue: OpenRouter preset is treated as unknown

I first configured this:

```json
{
  "primary": "openrouter/@preset/asistente-diario",
  "fallbacks": [
    "google/gemini-3.1-flash-lite-preview",
    "openai/gpt-4.1-mini"
  ]
#

}


`openclaw models status` showed the preset as the default model, but the gateway log said:

```text
startup model warmup failed for openrouter/@preset/asistente-diario: Error: Unknown model: openrouter/@preset/asistente-diario

So the preset ref is accepted in config/status, but rejected at runtime as an unknown model.

Main issue: openrouter/auto is shown as primary but runtime still uses OpenAI

After that, I switched to this config:

{
#

"primary": "openrouter/auto",
"fallbacks": [
"google/gemini-3.1-flash-lite-preview",
"openai/gpt-4.1-mini"
]
}


I applied it with:

```bash
openclaw config set agents.defaults.model --strict-json '{
  "primary": "openrouter/auto",
  "fallbacks": [
    "google/gemini-3.1-flash-lite-preview",
    "openai/gpt-4.1-mini"
  ]
#

}'


Then restarted the gateway:

```bash
openclaw gateway restart
openclaw gateway status

The restart succeeded.

openclaw models status now shows:

Default : openrouter/openrouter/auto (from openrouter/auto)
Fallbacks (2) : google/gemini-3.1-flash-lite-preview, openai/gpt-4.1-mini
#

Configured models include `openrouter/auto`.

### Reproduction

Run:

```bash
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json

Actual result

It returns:

#

{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "openai",
"model": "gpt-4.1-mini",
"attempts": [],
"outputs": [
{
"text": "smoke-ok",
"mediaUrl": null
}
]
}

#
### Expected result

I expect the run to use `openrouter/auto` as the primary model.

If OpenRouter fails and fallback is used, I would expect that to be visible in the run details, at minimum in `attempts`.

### Observed behavior summary

There seem to be two related OpenRouter model-resolution/runtime problems on this install:

1. `openrouter/@preset/asistente-diario` is shown in config/status but runtime says `Unknown model`.
2. `openrouter/auto` is shown as the default model in `models status`, but `infer model run` still executes on `openai/gpt-4.1-mini` with `attempts: []`.

This makes it look like the configured OpenRouter primary is not actually being used by the runtime, even though the config and status output say it is.
#

Si quieres, te preparo también el comentario corto para pegar como respuesta si te piden más datos.

hidden cedar
#

como verificamos que quede funcional hoy antes de dejar operativo el sistema

cyan harnessBOT
#

Para dejarlo funcional hoy, yo haría esta validación corta y pragmática:

1) Deja un modelo estable para hoy

openclaw config set agents.defaults.model --strict-json '{
  "primary": "google/gemini-3.1-flash-lite-preview",
  "fallbacks": [
    "openai/gpt-4.1-mini"
  ]
}'

2) Reinicia el gateway

openclaw gateway restart
openclaw gateway status
#

Tiene que salir:

  • Runtime: running
  • RPC probe: ok

3) Prueba el modelo principal

openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json

Esto tiene que devolver:

  • "ok": true
  • texto smoke-ok
  • idealmente provider: "google"

4) Prueba la búsqueda web

#
openclaw infer web search --query "OpenClaw docs" --json

Esto tiene que devolver:

  • "ok": true
  • provider: "perplexity"

5) Prueba real en tu canal/superficie normal

Mándale un mensaje normal al sistema y verifica que:

  • responde
  • no se queda colgado
  • no devuelve error de modelo

Si esas 5 cosas pasan

#

Yo lo daría operativo por hoy.

Si quieres ir a lo seguro

No uses hoy:

  • openrouter/@preset/asistente-diario
  • openrouter/auto como primario

Hasta que quede resuelto el bug.

Si quieres, te dejo el checklist final en formato “copiar y pegar” en un solo bloque.

hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw gateway restart
openclaw gateway status

🦞 OpenClaw 2026.4.15 (041266a) — Claws out, commit in—let's ship something mildly responsible.

Restarted systemd service: openclaw-gateway.service

🦞 OpenClaw 2026.4.15 (041266a) — No $999 stand required.



Service: systemd (enabled)
File logs: /tmp/openclaw/openclaw-2026-04-20.log
Command: /usr/bin/node /home/alexifra/.local/lib/node_modules/openclaw/dist/index.js gateway --port 18789
Service file: ~/.config/systemd/user/openclaw-gateway.service
Service env: OPENCLAW_GATEWAY_PORT=18789

Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json

Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.

Runtime: running (pid 39654, state active, sub running, last exit 0, reason 0)
RPC probe: ok

Listening: 127.0.0.1:18789
Troubles: run openclaw status
Troubleshooting: https://docs.openclaw.ai/troubleshooting

cyan harnessBOT
#

Perfecto. El gateway quedó sano.

Sigue con estos dos:

openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
openclaw infer web search --query "OpenClaw docs" --json

Lo que quiero ver:

  • en el primero: "ok": true
  • en el segundo: "ok": true

Pégame esas dos salidas y te digo si hoy ya lo podemos dejar operativo.

hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw config set agents.defaults.model --strict-json '{
"primary": "google/gemini-3.1-flash-lite-preview",
"fallbacks": [
"openai/gpt-4.1-mini"
]
}'

🦞 OpenClaw 2026.4.15 (041266a) — Greetings, Professor Falken

Config overwrite: /home/alexifra/.openclaw/openclaw.json (sha256 784c02b443d7ebb6bd37908f4442f5e061cfa32aea52385063db9e6b43c09399 -> f49e57a55d2713d96d181dd5536f5915d57865adf6d8a5bd83127d7547c3cae2, backup=/home/alexifra/.openclaw/openclaw.json.bak)
Updated agents.defaults.model. Restart the gateway to apply.
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw gateway restart

🦞 OpenClaw 2026.4.15 (041266a) — Your config is valid, your assumptions are not.

Restarted systemd service: openclaw-gateway.service
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw gateway status

🦞 OpenClaw 2026.4.15 (041266a) — Powered by open source, sustained by spite and good documentation.



Service: systemd (enabled)
File logs: /tmp/openclaw/openclaw-2026-04-20.log
Command: /usr/bin/node /home/alexifra/.local/lib/node_modules/openclaw/dist/index.js gateway --port 18789
Service file: ~/.config/systemd/user/openclaw-gateway.service
Service env: OPENCLAW_GATEWAY_PORT=18789

Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json

Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.

Runtime: running (pid 39915, state active, sub running, last exit 0, reason 0)
RPC probe: ok

Listening: 127.0.0.1:18789
Troubles: run openclaw status
Troubleshooting: https://docs.openclaw.ai/troubleshooting
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "openai",
"model": "gpt-4.1-mini",
"attempts": [],
"outputs": [
{
"text": "smoke-ok",
"mediaUrl": null
}
]
}

cyan harnessBOT
#

Vale, con esto ya se ve el patrón: tu runtime está saliendo siempre por OpenAI aunque cambies el primary.

Así que, para dejarlo funcional hoy y no seguir persiguiendo fantasmas, yo lo dejaría explícitamente en OpenAI, que es lo que sí está respondiendo.

Haz esto:

openclaw config set agents.defaults.model --strict-json '{
  "primary": "openai/gpt-4.1-mini",
  "fallbacks": []
}'
openclaw gateway restart
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
openclaw infer web search --query "OpenClaw docs" --json

Si esas dos pruebas devuelven "ok": true

#

Entonces yo lo daría operativo por hoy.

Conclusión honesta

  • Sí está funcional
  • No está respetando la selección de primary
  • Hoy déjalo en OpenAI explícitamente
  • y el tema de OpenRouter/Gemini lo dejas como bug aparte

Si quieres, cuando pegues esas dos salidas finales te digo en una sola línea: “listo para producción hoy” o “todavía no”.

hidden cedar
#

nuestro buscador de Perplexity volvio a fallar

cyan harnessBOT
#

Vale. Vamos directo al grano.

Pégame estas dos salidas:

openclaw infer web search --query "OpenClaw docs" --json
openclaw logs --limit 50 --plain | rg -i 'perplexity|openrouter|web_search|401|403|error'

Si vuelve a salir algo tipo:

Perplexity API error (401): User not found

entonces no es créditos, es otra vez auth/ruta con OpenRouter/Perplexity.

#

Pásame esas dos salidas y te digo exactamente cuál de las dos es:

  • créditos/cuota
  • o credencial/routing roto otra vez
hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw --version
openclaw infer web providers --json
openclaw infer web search --query "OpenClaw docs" --json
OpenClaw 2026.4.15 (041266a)
{
"search": [
{
"available": true,
"configured": true,
"selected": false,
"id": "brave",
"envVars": [
"BRAVE_API_KEY"
]
},
{
"available": true,
"configured": true,
"selected": false,
"id": "duckduckgo",
"envVars": []
},
{
"available": true,
"configured": false,
"selected": false,
"id": "exa",
"envVars": [
"EXA_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "firecrawl",
"envVars": [
"FIRECRAWL_API_KEY"
]
},
{
"available": true,
"configured": true,
"selected": false,
"id": "gemini",
"envVars": [
"GEMINI_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "grok",
"envVars": [
"XAI_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "kimi",
"envVars": [
"KIMI_API_KEY",
"MOONSHOT_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "minimax",
"envVars": [
"MINIMAX_CODE_PLAN_KEY",
"MINIMAX_CODING_API_KEY"
]
},
{
"available": true,
"configured": true,
"selected": false,
"id": "ollama",
"envVars": []
},
{
"available": true,
"configured": true,
"selected": true,
"id": "perplexity",
"envVars": [
"PERPLEXITY_API_KEY",
"OPENROUTER_API_KEY"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "searxng",
"envVars": [
"SEARXNG_BASE_URL"
]
},
{
"available": true,
"configured": false,
"selected": false,
"id": "tavily",
"envVars": [
"TAVILY_API_KEY"
]
}
],
"fetch": [
{
"available": true,
"configured": false,
"selected": false,
"id": "firecrawl",
"envVars": [
"FIRECRAWL_API_KEY"
]
}
]
}
{
"ok": true,
"capability": "web.search",
"transport": "local",
"provider": "perplexity",
"attempts": [],
"outputs": [
{
"result": {
"query": "OpenClaw docs",
"provider": "perplexity",
"model": "perplexity/sonar-pro",
"tookMs": 4049,
"externalContent": {
"untrusted": true,
"source": "web_search",
"provider": "perplexity",
"wrapped": true
},
"content": "\n<<<EXTERNAL_UNTRUSTED_CONTENT id="b18408ccd80a7a17">>>\nSource: Web Search\n---\nOpenClaw documentation is hosted at https://docs.openclaw.ai, covering its self-hosted gateway for connecting chat apps (e.g., Discord, Telegram, WhatsApp) to AI agents with features like multi-channel support, tool use, sessions, memory, and multi-agent routing.[5]\n\n--- Key Resources\n- Official Docs Site: Full guides on installation, setup, channels, dashboard, control UI, and more at https://docs.openclaw.ai.[5]\n- GitHub Repo: https://github.com/openclaw/openclaw (MIT licensed, includes docs folder with getting-started.md for quick setup in ~5 minutes via CLI onboarding).[3][6]\n- Getting Started Guide: Install Node 24 (or 22.14+ LTS), get an API key, run openclaw onboard or openclaw dashboard for browser chat at

cyan harnessBOT
#

Ahora mismo sí está funcionando.

Lo que muestran esas salidas es:

  • provider seleccionado: perplexity
  • modelo real usado: perplexity/sonar-pro
  • o sea, está entrando por la ruta Perplexity vía OpenRouter/Sonar
  • no parece un problema de créditos en este momento

Así que, hoy por hoy:

  • web search está operativo
  • el problema que sigue raro es el routing del modelo principal del gateway, no la búsqueda

Si vuelve a “fallar”, necesito el error exacto del momento en que falla, porque con esta prueba la búsqueda está sana.
Dicho simple: Perplexity ahora mismo responde bien.

hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw infer web search --query "OpenClaw docs" --json
openclaw logs --limit 50 --plain | rg -i 'perplexity|openrouter|web_search|401|403|error'
AbortError: This operation was aborted
2026-04-21T02:05:33.512Z info gateway/reload {"subsystem":"gateway/reload"} config change detected; evaluating reload (agents.defaults.model.primary, agents.defaults.models."openrouter/@preset/asistente-diario", agents.defaults.models.openrouter/@preset/asistente-diario, plugins.entries.perplexity.config.webSearch.apiKey)
2026-04-21T02:05:33.538Z warn gateway/reload {"subsystem":"gateway/reload"} config change requires gateway restart (plugins.entries.perplexity.config.webSearch.apiKey) — deferring until 2 operation(s), 1 reply(ies), 1 embedded run(s) complete
2026-04-21T02:05:40.214Z warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_failover_decision","tags":["error_handling","failover","assistant","surface_error"],"runId":"6caa9194-55e4-4c66-990c-51b780ca22ff","stage":"assistant","decision":"surface_error","failoverReason":"timeout","profileFailureReason":"timeout","provider":"openai","model":"gpt-4.1-mini","sourceProvider":"openai","sourceModel":"gpt-4.1-mini","profileId":"sha256:a0ebe3f799a6","fallbackConfigured":true,"timedOut":true,"aborted":true} embedded run failover decision
2026-04-21T02:05:55.395Z error (node:40944) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.
2026-04-21T02:06:05.826Z info gateway {"subsystem":"gateway"} agent model: openrouter/@preset/asistente-diario
2026-04-21T02:06:16.497Z warn gateway {"subsystem":"gateway"} startup model warmup failed for openrouter/@preset/asistente-diario: Error: Unknown model: openrouter/@preset/asistente-diario
Log tail truncated (increase --max-bytes).
2026-04-21T02:09:26.013Z error [tools] web_search failed: Perplexity API error (401): {"error":{"message":"User not found.","code":401}} raw_params={"query":"qué es OpenClaw y para qué sirve","count":1}
2026-04-21T02:09:26.049Z error [tools] web_search failed: Perplexity API error (401): {"error":{"message":"User not found.","code":401}} raw_params={"query":"qué es OpenClaw y para qué sirve","count":1}
2026-04-21T02:15:46.838Z error AbortError: This operation was aborted
alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$

cyan harnessBOT
#

Ya se ve el problema real.

No es créditos.
El error bueno es este:

Perplexity API error (401): {"error":{"message":"User not found.","code":401}}

Y además el log dice que hay un cambio pendiente en:

plugins.entries.perplexity.config.webSearch.apiKey

que requiere restart.

#

Haz esto exacto

Quita el apiKey de Perplexity en config y deja que use solo tu OPENROUTER_API_KEY del entorno:

openclaw config unset plugins.entries.perplexity.config.webSearch.apiKey
openclaw gateway restart
openclaw infer web search --query "OpenClaw docs" --json

Qué espero

  • que desaparezca el 401 User not found
  • que vuelva a salir "ok": true

El AbortError para mí es secundario. El fallo real es 401 de auth/routing.

Pégame la salida de esos 3 comandos y te digo si ya quedó limpio.

hidden cedar
#

no nos olvidemos que la api que utliza Perplexity es de openrouter para utilizar sonar pro

cyan harnessBOT
#

Sí, totalmente. Y justo por eso te dije quitar solo el apiKey de Perplexity en config, no tocar la ruta Sonar/OpenRouter.

La idea es esta:

  • seguir usando Perplexity vía OpenRouter para Sonar Pro
  • pero evitar que plugins.entries.perplexity.config.webSearch.apiKey meta una credencial mala o vieja
  • y dejar que tome el OPENROUTER_API_KEY del entorno, que es lo que quieres usar

O sea, el arreglo sigue siendo este:

openclaw config unset plugins.entries.perplexity.config.webSearch.apiKey
openclaw gateway restart
openclaw infer web search --query "OpenClaw docs" --json

Eso no te saca de Sonar Pro por OpenRouter.

#

Solo quita una posible key conflictiva en config.

Si quieres, después comprobamos que siga saliendo:

"provider": "perplexity",
"model": "perplexity/sonar-pro"
hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw config unset plugins.entries.perplexity.config.webSearch.apiKey
openclaw gateway restart
openclaw infer web search --query "OpenClaw docs" --json

🦞 OpenClaw 2026.4.15 (041266a) — I'll refactor your busywork like it owes me money.

Config path not found: plugins.entries.perplexity.config.webSearch.apiKey

🦞 OpenClaw 2026.4.15 (041266a) — I autocomplete your thoughts—just slower and with more API calls.

Restarted systemd service: openclaw-gateway.service
{
"ok": true,
"capability": "web.search",
"transport": "local",
"provider": "perplexity",
"attempts": [],
"outputs": [
{
"result": {
"query": "OpenClaw docs",
"provider": "perplexity",
"model": "perplexity/sonar-pro",
"tookMs": 3518,
"externalContent": {
"untrusted": true,
"source": "web_search",
"provider": "perplexity",
"wrapped": true
},
"content": "\n<<<EXTERNAL_UNTRUSTED_CONTENT id="c3967f7f2df68c84">>>\nSource: Web Search\n---\nOpenClaw is a self-hosted, open-source gateway and personal AI assistant framework that connects chat apps (like WhatsApp, Telegram, Slack, Discord, iMessage) to autonomous AI agents for real-time interactions with APIs, tools, and messaging platforms.[1][2][4][6]\n\n--- Official Documentation\nThe primary documentation is at https://docs.openclaw.ai, covering setup, gateway configuration, channels, security, and more.[1][5]\n\n--- Key Resources\n- Getting Started Guide: Install, run onboarding, and chat via the Control UI or dashboard in ~5 minutes (e.g., openclaw dashboard opens http://127.0.0.1:18789/). Includes CLI reference and macOS app flow.[3]\n- GitHub Repo: https://github.com/openclaw/openclaw (docs in /docs folder).[3]\n- Ollama Integration: Bridges messaging to AI agents; previously Clawdbot (ollama launch clawdbot).[4]\n- DigitalOcean Marketplace: Deployment guide with resources linking to https://docs.molt.bot/ (possibly related or rebranded).[2]\n- Security Guide: https://docs.openclaw.ai/gateway/security.[2][5]\n- Additional: Clawhub Skills Library (https://clawhub.ai/), Discord community, and YouTube beginner guide.[2][5]\n\nFor DigitalOcean setup, configure execution policies via SSH as root.[2] Start with the getting-started guide for quickest setup.[3]\n<<<END_EXTERNAL_UNTRUSTED_CONTENT id="c3967f7f2df68c84">>>",
"citations": [
"https://docs.openclaw.ai",
"https://docs.digitalocean.com/products/marketplace/catalog/openclaw/",
"https://github.com/openclaw/openclaw/blob/main/docs/start/getting-started.md",
"https://docs.ollama.com/integrations/openclaw",
"https://www.youtube.com/watch?v=st534T7-mdE",
"https://openclaw.ai"
]
}
}
]
}

cyan harnessBOT
#

Perfecto. Con esto, la búsqueda quedó funcional.

Lo importante:

  • Config path not found = no había un apiKey override en config, así que no rompiste nada
  • después del restart, la búsqueda respondió con:
    • provider: "perplexity"
    • model: "perplexity/sonar-pro"
    • "ok": true

O sea:

  • sí está usando Perplexity vía OpenRouter/Sonar Pro
  • sí está funcionando ahora
  • el problema de búsqueda no parece activo en este momento

Para mí, esto queda así:

#
  • Web search / Perplexity: operativo
  • Model routing del gateway: sigue siendo el bug separado

Glad that helped! 🎉
Si esto te cerró la parte de Perplexity, por favor right-click en el mensaje de la solución → Apps → ✅ Mark Solution para que Answer Overflow lo indexe.

hidden cedar
#

realicemos una prueba de busqueda

cyan harnessBOT
#

Sí. Hagamos esta, que además prueba una consulta en español:

openclaw infer web search --query "qué es OpenClaw y para qué sirve" --json

Si sale "ok": true, estamos bien.

Y si falla, pega enseguida esto también:

openclaw logs --limit 50 --plain | rg -i 'perplexity|openrouter|web_search|401|403|error'
hidden cedar
#

la busqueda por linea de comendos funciona, pero el agente via Discord responde esto Open Claw
APP
— 23:27
Hola, soy MAX, tu asistente amable, directo y preciso. ¿En qué puedo ayudarte hoy?
Solo tú puedes ver esto • Descartar mensaje
Ale Xifra [CLAW], — 23:27
realiza una prueba de busqueda ahora. Lista todas las ventajas y desventajas de la nueva version OpenClaw 2026.4.15 (041266a). Sus novedades en funciones, y si existe algun problema critico reportado por la comunidad de Open Claw
Open Claw
APP
— 23:27
No puedo acceder a resultados web actuales sobre la versión OpenClaw 2026.4.15 debido a un error de autenticación en la API de búsqueda. Sin embargo, si tienes documentación local, notas de lanzamiento o alguna fuente interna sobre esta versión, puedo ayudarte a revisarla y resumirla. ¿Quieres que hagamos eso?

cyan harnessBOT
#

Eso es una pista muy buena.

Si CLI funciona pero Discord no, entonces el problema ya no parece ser Perplexity en sí, sino la sesión/agente que está respondiendo en Discord.

Lo más rápido que probaría es esto:

1) En ese mismo chat de Discord

manda:

/new

y luego vuelve a pedir la búsqueda.

Eso fuerza una sesión nueva y evita que arrastre estado viejo.

#

2) Si sigue diciendo “error de autenticación”

ejecuta justo después:

openclaw logs --limit 100 --plain | rg -i 'web_search|perplexity|openrouter|401|403|error|embedded_run'

y pégamelo.

Mi lectura ahora mismo es:

  • Perplexity/search sí funciona
  • el fallo está en ese hilo/sesión de Discord o en otro agente distinto del que prueba el CLI

Así que primero haría /new. Si quieres, después de eso probamos con una consulta corta y directa.

hidden cedar
#

ya lo hice, reinicie una nueva sesion y realice la consulta

#

y no funciono

cyan harnessBOT
#

Perfecto. ¿Y qué respondió ahora, funcionó o te devolvió el mismo error?

Si siguió fallando, pégame:

  1. la respuesta exacta del bot
  2. y esto:
openclaw logs --limit 100 --plain | rg -i 'web_search|perplexity|openrouter|401|403|error|embedded_run'

Con esas dos cosas ya lo cerramos.

#

Vale, entonces necesitamos la prueba exacta del fallo.

Pégame estas dos cosas y ya te digo dónde está roto:

1) La respuesta exacta del bot en Discord

2) Este log

openclaw logs --limit 100 --plain | rg -i 'web_search|perplexity|openrouter|401|403|error|embedded_run'

Sin eso ya estaríamos adivinando, y no quiero hacerte perder más tiempo.

hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw logs --limit 100 --plain | rg -i 'web_search|perplexity|openrouter|401|403|error|embedded_run'
Log tail truncated (increase --max-bytes).
2026-04-21T02:05:33.512Z info gateway/reload {"subsystem":"gateway/reload"} config change detected; evaluating reload (agents.defaults.model.primary, agents.defaults.models."openrouter/@preset/asistente-diario", agents.defaults.models.openrouter/@preset/asistente-diario, plugins.entries.perplexity.config.webSearch.apiKey)
2026-04-21T02:05:33.538Z warn gateway/reload {"subsystem":"gateway/reload"} config change requires gateway restart (plugins.entries.perplexity.config.webSearch.apiKey) — deferring until 2 operation(s), 1 reply(ies), 1 embedded run(s) complete
2026-04-21T02:05:40.214Z warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_failover_decision","tags":["error_handling","failover","assistant","surface_error"],"runId":"6caa9194-55e4-4c66-990c-51b780ca22ff","stage":"assistant","decision":"surface_error","failoverReason":"timeout","profileFailureReason":"timeout","provider":"openai","model":"gpt-4.1-mini","sourceProvider":"openai","sourceModel":"gpt-4.1-mini","profileId":"sha256:a0ebe3f799a6","fallbackConfigured":true,"timedOut":true,"aborted":true} embedded run failover decision
2026-04-21T02:05:55.395Z error (node:40944) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.
2026-04-21T02:06:05.826Z info gateway {"subsystem":"gateway"} agent model: openrouter/@preset/asistente-diario
2026-04-21T02:06:16.497Z warn gateway {"subsystem":"gateway"} startup model warmup failed for openrouter/@preset/asistente-diario: Error: Unknown model: openrouter/@preset/asistente-diario
2026-04-21T02:09:26.013Z error [tools] web_search failed: Perplexity API error (401): {"error":{"message":"User not found.","code":401}} raw_params={"query":"qué es OpenClaw y para qué sirve","count":1}
2026-04-21T02:09:26.049Z error [tools] web_search failed: Perplexity API error (401): {"error":{"message":"User not found.","code":401}} raw_params={"query":"qué es OpenClaw y para qué sirve","count":1}
2026-04-21T02:15:46.838Z error AbortError: This operation was aborted
2026-04-21T02:18:56.455Z error (node:41312) [DEP0040] DeprecationWarning: The punycode module is deprecated. Please use a userland alternative instead.
2026-04-21T02:19:07.330Z info gateway {"subsystem":"gateway"} agent model: openrouter/@preset/asistente-diario
2026-04-21T02:19:19.978Z warn gateway {"subsystem":"gateway"} startup model warmup failed for openrouter/@preset/asistente-diario: Error: Unknown model: openrouter/@preset/asistente-diario
2026-04-21T02:26:30.886Z error [tools] web_search failed: Perplexity API error (401): {"error":{"message":"User not found.","code":401}} raw_params={"query":"novedades OpenClaw 2026.4.15 ventajas desventajas problemas comunidad","count":3}
2026-04-21T02:26:30.902Z error [tools] web_search failed: Perplexity API error (401): {"error":{"message":"User not found.","code":401}} raw_params={"query":"novedades OpenClaw 2026.4.15 ventajas desventajas problemas comunidad","count":3}
2026-04-21T02:27:26.176Z warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_agent_end","tags":["error_handling","lifecycle","agent_end","assistant_error"],"runId":"slug-gen-1776738439350","isError":true,"error":"HTTP 401: User not found.","failoverReason":"auth","model":"@preset/asistente-diario","provider":"openrouter","rawErrorPreview":"401 User not found.","rawErrorHash":"sha256:2cdeca109031","providerRuntimeFailureKind":"unknown"} embedded run agent end
2026-04-21T02:27:26.186Z warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_failover_decision","tags":["error_handling","failover","assistant","fallback_model"],"runId":"slug-gen-1776738439350","stage":"assistant","decision":"fallback_model","failoverReason":"auth","profileFailureReason":"auth","provider":"openrouter"

cyan harnessBOT
#

Ya encontramos la causa.

CLI y Discord no están usando lo mismo.
El log deja claro que Discord está corriendo un agente que sigue atado a:

openrouter/@preset/asistente-diario

Por eso:

  • por CLI te funciona
  • en Discord falla con:
    • 401 User not found
    • Unknown model: openrouter/@preset/asistente-diario

O sea, el que falla no es “Perplexity global”, sino el agente MAX / el agente que responde en Discord.

#

Haz esto ahora

Necesito localizar ese agente exacto en config:

openclaw config get agents.list --json | rg -n -C 2 'MAX|asistente-diario|openrouter'

Pégame esa salida.

Con eso te doy el comando exacto para cambiar ese agente de Discord a un modelo estable y dejar de una vez de usar @preset/asistente-diario ahí.

hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw config get agents.list --json | rg -n -C 2 'MAX|asistente-diario|openrouter'
Config path not found: agents.list

cyan harnessBOT
#

Bien, eso confirma algo importante:

no viene de agents.list.
Entonces ese @preset/asistente-diario está saliendo de estado persistido en ~/.openclaw, no de la config principal.

Haz esto para localizar exactamente qué archivo lo está metiendo:

rg -n 'asistente-diario|openrouter/@preset|modelOverride|providerOverride|MAX' ~/.openclaw 2>/dev/null

Pégame esa salida.

Con eso ya vemos si viene de:

  • una sesión guardada
  • un override persistido
#
  • o algún archivo del agente principal

y te doy el comando exacto para limpiarlo.

hidden cedar
#

/home/alexifra/.openclaw/extensions/camofox-browser/node_modules/@opentelemetry/api/build/src/trace/internal/tracestate-impl.js
9:const MAX_TRACE_STATE_ITEMS = 32;
10:const MAX_TRACE_STATE_LEN = 512;
56: if (rawTraceState.length > MAX_TRACE_STATE_LEN)
77: if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {
80: .slice(0, MAX_TRACE_STATE_ITEMS));

/home/alexifra/.openclaw/extensions/camofox-browser/node_modules/math-intrinsics/constants/maxArrayLength.d.ts
1:declare const MAX_ARRAY_LENGTH: 4294967295;
3:export = MAX_ARRAY_LENGTH;

/home/alexifra/.openclaw/extensions/camofox-browser/node_modules/math-intrinsics/constants/maxSafeInteger.js
5:module.exports = /** @type {import('./maxSafeInteger')} */ (Number.MAX_SAFE_INTEGER) || 9007199254740991; // Math.pow(2, 53) - 1;

/home/alexifra/.openclaw/extensions/camofox-browser/node_modules/math-intrinsics/constants/maxValue.d.ts
1:declare const MAX_VALUE: 1.7976931348623157e+308;
3:export = MAX_VALUE;

/home/alexifra/.openclaw/extensions/camofox-browser/node_modules/math-intrinsics/constants/maxValue.js
5:module.exports = /** @type {import('./maxValue')} */ (Number.MAX_VALUE) || 1.7976931348623157e+308;

/home/alexifra/.openclaw/extensions/camofox-browser/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts
1:declare const MAX_SAFE_INTEGER: 9007199254740991;
3:export = MAX_SAFE_INTEGER

cyan harnessBOT
#

Sí, ahí el problema fue que MAX te matcheó media node_modules 😅

Haz esta búsqueda más precisa, sin MAX y excluyendo node_modules:

rg -n --glob '!**/node_modules/**' 'asistente-diario|openrouter/@preset|modelOverride|providerOverride' ~/.openclaw 2>/dev/null

Pégame esa salida.

Con esa ya sí localizamos de dónde sale el preset roto sin ruido basura.

hidden cedar
#

es demasiado texto para copiarlo aqui

cyan harnessBOT
#

Sí, entonces corta la salida.

Haz esto y pégame solo las primeras líneas:

rg -n --glob '!**/node_modules/**' 'asistente-diario|openrouter/@preset|modelOverride|providerOverride' ~/.openclaw 2>/dev/null | head -40

Con eso suele alcanzar para ver qué archivo lo está metiendo.

hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ rg -n --glob '!/node_modules/' 'asistente-diario|openrouter/@preset|modelOverride|providerOverride' ~/.openclaw 2>/dev/null | head -40
/home/alexifra/.openclaw/openclaw.json.bak.4:32: "primary": "openrouter/@preset/asistente-diario",
/home/alexifra/.openclaw/openclaw.json.bak.4:52: ""openrouter/@preset/asistente-diario"": {}
/home/alexifra/.openclaw/openclaw.json.bak.2:51: ""openrouter/@preset/asistente-diario"": {}
/home/alexifra/.openclaw/discord/model-picker-preferences.json:7: "openrouter/auto@preset/asistente-diario"
/home/alexifra/.openclaw/logs/config-audit.jsonl:53:{"ts":"2026-04-03T02:41:00.112Z","source":"config-io","event":"config.write","configPath":"/home/alexifra/.openclaw/openclaw.json","pid":17646,"ppid":17638,"cwd":"/home/alexifra/.openclaw/workspace","argv":["/usr/bin/node","/home/alexifra/.local/lib/node_modules/openclaw/openclaw.mjs","config","set","agents.defaults.model.primary",""openrouter/auto@preset/asistente-diario"","--strict-json"],"execArgv":["--disable-warning=ExperimentalWarning"],"watchMode":false,"watchSession":null,"watchCommand":null,"existsBefore":true,"previousHash":"ad55cdb81f3b45cac38c9a799dabeb6231b1bb2b2bae388c1ac18bcc87deb629","nextHash":"7bc2e7f96b620a108bcdbc56d9dbb0039b6d16c53b8d04914227e0fd23be28bf","previousBytes":4099,"nextBytes":4123,"previousDev":"2096","nextDev":"2096","previousIno":"112099","nextIno":"112578","previousMode":384,"nextMode":384,"previousNlink":1,"nextNlink":1,"previousUid":1000,"nextUid":1000,"previousGid":1000,"nextGid":1000,"changedPathCount":null,"hasMetaBefore":true,"hasMetaAfter":true,"gatewayModeBefore":"local","gatewayModeAfter":"local","suspicious":[],"result":"rename"}
/home/alexifra/.openclaw/logs/config-audit.jsonl:87:{"ts":"2026-04-21T01:00:53.121Z","source":"config-io","event":"config.write","configPath":"/home/alexifra/.openclaw/openclaw.json","pid":38254,"ppid":484,"cwd":"/home/alexifra","argv":["/usr/bin/node","/home/alexifra/.local/bin/openclaw","config","set","agents.defaults.models["openrouter/@preset/asistente-diario"]","{}","--strict-json"],"execArgv":[],"watchMode":false,"watchSession":null,"watchCommand":null,"existsBefore":true,"previousHash":"6b25aac0c1e45326ad5787e4a588d38bdc687f9b4fa666f659409394ba0661de","nextHash":"6d8bf45c00bd9f61cb5e5f3b1605834aa90c3a2aea8c382d4c13b96885e0772f","previousBytes":4876,"nextBytes":4931,"previousDev":"2096","previousIno":"130261","previousMode":384,"previousNlink":1,"previousUid":1000,"previousGid":1000,"changedPathCount":null,"hasMetaBefore":true,"hasMetaAfter":true,"gatewayModeBefore":"local","gatewayModeAfter":"local","suspicious":[],"result":"rename","nextDev":"2096","nextIno":"130141","nextMode":384,"nextNlink":1,"nextUid":1000,"nextGid":1000}

cyan harnessBOT
#

Ahí está el bicho.

La clave es esta línea:

~/.openclaw/discord/model-picker-preferences.json: "openrouter/auto@preset/asistente-diario"

Discord está arrastrando esa preferencia vieja.

Haz esto exacto

openclaw config unset 'agents.defaults.models["openrouter/@preset/asistente-diario"]'
mv ~/.openclaw/discord/model-picker-preferences.json ~/.openclaw/discord/model-picker-preferences.json.bak
openclaw gateway restart
#

Después, en Discord

  1. manda:
/new
  1. y vuelve a pedir la búsqueda.

Por qué

  • el config unset saca el preset roto del catálogo
  • el model-picker-preferences.json estaba guardando la preferencia vieja de Discord
  • el restart fuerza a que arranque limpio

No hace falta tocar los .bak viejos ni los logs.

Cuando lo hagas, me pegas solo:

  • la salida de esos 3 comandos
  • y la nueva respuesta del bot en Discord
#

y te digo si quedó limpio.

hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw config unset 'agents.defaults.models["openrouter/@preset/asistente-diario"]'
mv ~/.openclaw/discord/model-picker-preferences.json ~/.openclaw/discord/model-picker-preferences.json.bak
openclaw gateway restart

🦞 OpenClaw 2026.4.15 (041266a)
I speak fluent bash, mild sarcasm, and aggressive tab-completion energy.

Config path not found: agents.defaults.models["openrouter/@preset/asistente-diario"]

🦞 OpenClaw 2026.4.15 (041266a) — I've seen your commit messages. We'll work on that together.

Restarted systemd service: openclaw-gateway.service

cyan harnessBOT
#

Bien, eso está perfecto.

  • Config path not found aquí está bien: significa que ese preset ya no estaba en la config activa
  • lo importante era mover model-picker-preferences.json y reiniciar, y eso ya quedó hecho

Ahora falta la prueba final en Discord

En ese chat manda:

/new

y luego algo corto como:

#
realiza una búsqueda web sobre OpenClaw docs

Pégame la respuesta nueva del bot.
Si con eso responde bien, ya lo damos por limpio.

hidden cedar
#

Parece que no puedo acceder a la búsqueda web en este momento debido a un error de autenticación. Sin embargo, puedo ayudarte con información sobre OpenClaw basada en mis datos internos. ¿Quieres que te explique algo específico sobre OpenClaw o tienes alguna pregunta concreta?

cyan harnessBOT
#

Vale, entonces todavía no quedó limpio.

Ahora necesitamos el log de ese intento exacto, no el histórico viejo.

Haz esto así:

Terminal 1

openclaw logs --limit 20 --follow --max-bytes 1000000 --plain | rg -i 'web_search|perplexity|openrouter|401|403|error|embedded_run|agent model'

Terminal 2

En Discord manda otra vez:

realiza una búsqueda web sobre OpenClaw docs
#

Luego

Pégame solo las líneas nuevas que aparezcan en la Terminal 1.

Con eso ya vemos si:

  • sigue agarrando el preset roto,
  • sigue cayendo en 401 User not found,
  • o Discord está usando otro agente/ruta distinta del CLI.
hidden cedar
#

alexifra@LAPTOP-VIVOBOOK-ALEXIFRA:~$ openclaw logs --limit 20 --follow --max-bytes 1000000 --plain | rg -i 'web_search|perplexity|openrouter|401|403|error|embedded_run|agent model'
2026-04-21T02:43:43.231Z warn gateway {"subsystem":"gateway"} startup model warmup failed for openrouter/@preset/asistente-diario: Error: Unknown model: openrouter/@preset/asistente-diario
2026-04-21T02:43:44.401Z info gateway/channels/discord {"subsystem":"gateway/channels/discord"} discord channel users resolved: 1416148785159213106
2026-04-21T02:44:17.652Z warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_agent_end","tags":["error_handling","lifecycle","agent_end","assistant_error"],"runId":"slug-gen-1776739453693","isError":true,"error":"HTTP 401: User not found.","failoverReason":"auth","model":"@preset/asistente-diario","provider":"openrouter","rawErrorPreview":"401 User not found.","rawErrorHash":"sha256:2cdeca109031","providerRuntimeFailureKind":"unknown"} embedded run agent end
2026-04-21T02:44:17.662Z warn agent/embedded {"subsystem":"agent/embedded"} {"event":"embedded_run_failover_decision","tags":["error_handling","failover","assistant","fallback_model"],"runId":"slug-gen-1776739453693","stage":"assistant","decision":"fallback_model","failoverReason":"auth","profileFailureReason":"auth","provider":"openrouter","model":"@preset/asistente-diario","sourceProvider":"openrouter","sourceModel":"@preset/asistente-diario","fallbackConfigured":true,"timedOut":false,"aborted":false,"status":401,"rawErrorPreview":"401 User not found.","rawErrorHash":"sha256:2cdeca109031","providerRuntimeFailureKind":"unknown"} embedded run failover decision
2026-04-21T02:44:17.664Z error diagnostic {"subsystem":"diagnostic"} lane task error: lane=main durationMs=3967 error="FailoverError: HTTP 401: User not found."
2026-04-21T02:44:17.664Z error diagnostic {"subsystem":"diagnostic"} lane task error: lane=session:temp:slug-generator durationMs=3969 error="FailoverError: HTTP 401: User not found."
2026-04-21T02:44:17.666Z error llm-slug-generator {"subsystem":"llm-slug-generator"} Failed to generate slug: FailoverError: HTTP 401: User not found.

cyan harnessBOT
#

Ya tenemos suficiente para dejar de cavar archivos.

El hilo de Discord sigue pinned a:

@preset/asistente-diario

Así que el workaround más directo es forzar el modelo dentro de ese mismo hilo.

Haz esto en Discord, en ese mismo hilo

  1. Ejecuta:
/model openai/gpt-4.1-mini
#
  1. Luego manda:
/new
  1. Y después prueba otra vez:
realiza una búsqueda web sobre OpenClaw docs

Por qué

Los logs muestran que ese hilo sigue intentando usar:

#
provider=openrouter
model=@preset/asistente-diario

Si le metes /model openai/gpt-4.1-mini, le pisas ese override roto directamente en la sesión de Discord.

Haz eso y pégame la respuesta del bot. Si con eso responde bien, ya tenemos el workaround operativo de hoy.

hidden cedar
#

No puedo realizar búsquedas web en este momento por un error de acceso. Sin embargo, puedo ayudarte con cualquier información sobre OpenClaw que tenga almacenada o guiarte sobre la documentación que usualmente incluyen. ¿Quieres que te explique algo en particular o que revise alguna sección específica de la documentación?

vast starBOT
cyan harnessBOT
#

Vale. Con esto yo ya no seguiría haciéndote dar vueltas.

Lo que tenemos confirmado es:

  • por CLI, web_search sí funciona
  • por Discord, el agente sigue diciendo error de acceso/auth
  • así que esto ya no pinta a “Perplexity caído” ni a “faltan créditos”
  • pinta a bug en la ruta Discord/embedded session, no en el backend de búsqueda en sí

Conclusión práctica de hoy

La búsqueda web está sana, pero no desde ese agente/hilo de Discord.

Workaround realista para hoy

  • usa CLI para búsquedas web
  • o usa otra superficie si la tienes
  • y no confiaría en ese hilo de Discord para búsquedas hasta corregir el bug