inferrs
inferrs can serve local models behind an OpenAI-compatible/v1 API. OpenClaw works with inferrs through the generic
openai-completions path.
inferrs is currently best treated as a custom self-hosted OpenAI-compatible
backend, not a dedicated OpenClaw provider plugin.
Quick start
- Start
inferrswith a model.
- Verify the server is reachable.
- Add an explicit OpenClaw provider entry and point your default model at it.
Full config example
This example uses Gemma 4 on a localinferrs server.
Why requiresStringContent matters
Some inferrs Chat Completions routes accept only string
messages[].content, not structured content-part arrays.
If OpenClaw runs fail with an error like:
Gemma and tool-schema caveat
Some currentinferrs + Gemma combinations accept small direct
/v1/chat/completions requests but still fail on full OpenClaw agent-runtime
turns.
If that happens, try this first:
inferrs, the remaining issue is usually upstream model/server
behavior rather than OpenClaw’s transport layer.
Manual smoke test
Once configured, test both layers:Troubleshooting
curl /v1/modelsfails:inferrsis not running, not reachable, or not bound to the expected host/port.messages[].content ... expected a string: setcompat.requiresStringContent: true.- Direct tiny
/v1/chat/completionscalls pass, butopenclaw infer model runfails: trycompat.supportsTools: false. - OpenClaw no longer gets schema errors, but
inferrsstill crashes on larger agent turns: treat it as an upstreaminferrsor model limitation and reduce prompt pressure or switch local backend/model.
Proxy-style behavior
inferrs is treated as a proxy-style OpenAI-compatible /v1 backend, not a
native OpenAI endpoint.
- native OpenAI-only request shaping does not apply here
- no
service_tier, no Responsesstore, no prompt-cache hints, and no OpenAI reasoning-compat payload shaping - hidden OpenClaw attribution headers (
originator,version,User-Agent) are not injected on custominferrsbase URLs