Leading/trailing spaces in the endpoint field cause httpx to receive
a URL without a recognisable scheme, producing UnsupportedProtocol.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Log agent_type, full models payload and selected model on every request
to diagnose endpoint routing and empty-endpoint issues.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- test_connectivity.py: connectivity tests for all four endpoint types
(anthropic, openai, lm_studio, hermes, agent0) — treats no-credits as success
- test_hermes.py: raw WebSocket frame logger used to reverse-engineer protocol
- Fix handle_hermes: skip prompt.submit ack frame, read full text from
message.complete payload.text, always raise on status==error
- Fix requirements.txt: use >= pins (fastapi/uvicorn versions didn't exist)
- Fix dev.sh: prefer python3.12 for venv (mcp>=1.9.0 requires 3.10+)
- Remove ANTHROPIC_KEY env var dependency from server.py (keys come from DB)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
API keys (Anthropic, OpenAI etc.) are stored in the inference_endpoints
table and passed through the request from gnommoweb. Removed the
API_KEY_ANTHROPIC / AGENT_INFERENCE_MODEL env var fallbacks entirely.
Missing endpoint config now returns a clear error instead of silently
falling back to a hardcoded model.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Moved from gnommoweb/agent-inference. Generic LLM inference bridge
supporting litellm (anthropic/openai/ollama/lm_studio), Agent Zero MCP,
and Hermes JSON-RPC WebSocket agent types.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>