Gateway
Lokale modelservices
models.providers.<id>.localService laat OmeniaClaw op aanvraag een door de provider beheerde lokale modelserver starten. Dit is configuratie op providerniveau: wanneer het geselecteerde model bij die provider hoort, controleert OmeniaClaw de service, start het proces als het endpoint niet beschikbaar is, wacht tot de service gereed is en verstuurt daarna de modelaanvraag.
Gebruik dit voor lokale servers die te kostbaar zijn om de hele dag actief te houden, of voor handmatige setups waarbij modelselectie voldoende moet zijn om de backend op te starten.
Hoe het werkt
- Een modelaanvraag wordt herleid tot een geconfigureerde provider.
- Als die provider
localServiceheeft, controleert OmeniaClawhealthUrl. - Als de controle slaagt, gebruikt OmeniaClaw de bestaande server.
- Als de controle mislukt, start OmeniaClaw
commandmetargs. - OmeniaClaw controleert de gereedheid totdat
readyTimeoutMsverloopt. - De modelaanvraag wordt via het normale providertransport verstuurd.
- Als OmeniaClaw het proces heeft gestart en
idleStopMspositief is, wordt het proces gestopt nadat de laatste lopende aanvraag zo lang inactief is geweest.
OmeniaClaw installeert hiervoor geen launchd, systemd, Docker of daemon. De server is een childproces van het OmeniaClaw-proces dat de server als eerste nodig had.
Configuratievorm
{ models: { providers: { local: { baseUrl: "http://127.0.0.1:8000/v1", apiKey: "local-model", api: "openai-completions", timeoutSeconds: 300, localService: { command: "/absolute/path/to/server", args: ["--host", "127.0.0.1", "--port", "8000"], cwd: "/absolute/path/to/working-dir", env: { LOCAL_MODEL_CACHE: "/absolute/path/to/cache" }, healthUrl: "http://127.0.0.1:8000/v1/models", readyTimeoutMs: 180000, idleStopMs: 0, }, models: [ { id: "my-local-model", name: "My Local Model", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 131072, maxTokens: 8192, }, ], }, }, },}Velden
command: absoluut pad naar het uitvoerbare bestand. Shell-lookup wordt niet gebruikt.args: procesargumenten. Er worden geen shell-expansie, pipes, globbing of quotingregels toegepast.cwd: optionele werkdirectory voor het proces.env: optionele omgevingsvariabelen die over de omgeving van het OmeniaClaw-proces worden samengevoegd.healthUrl: gereedheids-URL. Als deze wordt weggelaten, voegt OmeniaClaw/modelstoe aanbaseUrl, zodathttp://127.0.0.1:8000/v1verandert inhttp://127.0.0.1:8000/v1/models.readyTimeoutMs: deadline voor gereedheid bij opstarten. Standaard:120000.idleStopMs: vertraging voor afsluiten bij inactiviteit voor door OmeniaClaw gestarte processen.0of weglaten houdt het proces actief totdat OmeniaClaw afsluit.
Inferrs-voorbeeld
Inferrs is een aangepaste OpenAI-compatibele /v1-backend, dus dezelfde lokale service-API werkt met de providervermelding inferrs.
{ agents: { defaults: { model: { primary: "inferrs/google/gemma-4-E2B-it" }, }, }, models: { mode: "merge", providers: { inferrs: { baseUrl: "http://127.0.0.1:8080/v1", apiKey: "inferrs-local", api: "openai-completions", timeoutSeconds: 300, localService: { command: "/opt/homebrew/bin/inferrs", args: [ "serve", "google/gemma-4-E2B-it", "--host", "127.0.0.1", "--port", "8080", "--device", "metal", ], healthUrl: "http://127.0.0.1:8080/v1/models", readyTimeoutMs: 180000, idleStopMs: 0, }, models: [ { id: "google/gemma-4-E2B-it", name: "Gemma 4 E2B (inferrs)", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 131072, maxTokens: 4096, compat: { requiresStringContent: true, }, }, ], }, }, },}Vervang command door het resultaat van which inferrs op de machine waarop OmeniaClaw draait.
ds4-voorbeeld
{ models: { providers: { ds4: { baseUrl: "http://127.0.0.1:18000/v1", apiKey: "ds4-local", api: "openai-completions", timeoutSeconds: 300, localService: { command: "/Users/you/Projects/oss/ds4/ds4-server", args: [ "--model", "/Users/you/Projects/oss/ds4/ds4flash.gguf", "--host", "127.0.0.1", "--port", "18000", "--ctx", "393216", ], cwd: "/Users/you/Projects/oss/ds4", healthUrl: "http://127.0.0.1:18000/v1/models", readyTimeoutMs: 300000, idleStopMs: 0, }, models: [], }, }, },}Operationele opmerkingen
- Eén OmeniaClaw-proces beheert het childproces dat het heeft gestart. Een ander OmeniaClaw-proces dat dezelfde health-URL al actief ziet, hergebruikt die zonder het proces over te nemen.
- Opstarten wordt per provideropdracht en argumentenset geserialiseerd, zodat gelijktijdige aanvragen geen dubbele servers voor dezelfde configuratie starten.
- Actieve streamingresponses houden een lease vast; afsluiten bij inactiviteit wacht totdat de verwerking van de responsebody is voltooid.
- Gebruik
timeoutSecondsbij trage lokale providers, zodat koude starts en lange generaties niet tegen de standaardtime-out voor modelaanvragen aanlopen. - Gebruik een expliciete
healthUrlals je server gereedheid ergens anders aanbiedt dan/v1/models.