Skip to content

Releases

v0.5.0

Choose a tag to compare

@Chleba Chleba released this 27 Sep 23:31

What's New

ollamaMQ now supports decision-model backends ("System One" models) alongside Ollama and
LM Studio. These are non-generative servers — clm-serve (CLM),
laya-serve (Laya), kev.serve (Kev)

  • that answer POST /v1/systemone with typed decisions (choice / score / noul) and calibrated
    probabilities instead of text.

They share no /api/* route with Ollama, so this required a real third API family rather than
another backend URL. Requests are still forwarded byte-for-byte; nothing is translated.

Added

  • POST /v1/systemone is proxied, and routed only to backends of this family. /api/chat,
    /api/tags and /v1/chat/completions are never sent to them, and they never receive a route
    their family cannot serve - such a request is refused, not misrouted.
  • Automatic detection of CLM and Kev from GET /v1/models answering {"models":[{"name":…}]}
    (OpenAI-compatible servers answer {"data":[{"id":…}]}, so the two are unambiguous).
  • kind: systemone per-backend config key to pin the family, needed for Laya, which exposes no
    listing endpoint and cannot be positively detected.
  • GET /health probe fallback - a 2xx marks a backend online when no other route identifies it.
    /health stays probe-internal and is never a proxied route.
  • models: entries now make a name routable, not merely pinned. This is the only way to reach a
    backend that cannot list its models.
  • Model listing falls back to proxy state. A backend that does not implement the listing route
    now contributes its known model names, and a listing request returns 200 instead of being passed
    through to a backend's own 404.
  • Per-backend token: works for this family out of the box - all three servers use
    Authorization: Bearer (CLM_API_KEY / LAYA_API_KEY / KEV_API_KEY).

Changed

  • GET /v1/models now always answers in OpenAI's data/id envelope, regardless of which
    backend replied first; GET /api/tags always uses models/name. Previously the first answering
    backend decided, so adding a decision-model backend could strip data from the reply and break
    OpenAI SDK clients.
  • Decision-model names appear in the aggregated /v1/models and /api/tags listings even though
    only /v1/systemone can serve them. ollamaMQ aggregates one namespace and routes by capability.
  • Model load/unload is explicitly not available for this family - these servers expose no model
    control API, no keep_alive and no /api/ps; residency is configured on the server itself
    (e.g. LAYA_PRELOAD, LAYA_MAX_LOADED).

Fixed

  • Startup no longer waits the full readiness window before applying model config when every backend
    is a decision-model server.
  • A pinned backend family and declared model names no longer wake the scheduler on every health round.

Known limitations

  • Only /v1/systemone is proxied. /v1/rank (CLM) and /v1/systemone/permute, /separate (Kev)
    are not.
  • A 404 from a backend is not yet treated as a family rejection, so an unclassified backend remains
    a candidate for routes it cannot serve.
  • The end-to-end suite does not yet cover this family (it is covered by unit-level mocks).

Upgrade notes

No config changes are required for existing Ollama / LM Studio / OpenAI deployments — their behaviour
is unchanged and pinned by tests. To add a decision-model backend:

backends:
  - url: "http://127.0.0.1:8700"          # CLM or Kev: auto-detected
  - url: "http://127.0.0.1:8000"          # Laya: must be pinned
    kind: systemone
    token: "laya-key"
models:
  - name: multilingual
    backends: ["http://127.0.0.1:8000"]   # selector required with more than one backend

v0.4.2

Choose a tag to compare

@Chleba Chleba released this 07 Sep 16:47

v0.4.0

Choose a tag to compare

@Chleba Chleba released this 23 Aug 12:31
  • New features: appconf.yaml config file, model load/unload control (TUI + admin API), API-family-aware scheduling with remembered bad endpoints, fail-fast 503, enforced per-model concurrency limits
  • Changed: deterministic bounded model matching (with a heads-up for clients that relied on substring matching), Docker pinning + BACKEND_URLS docs
  • Fixed: hanging queue, Ollama -> LM Studio misrouting
  • New config keys table with defaults

v0.3.0

Choose a tag to compare

@Chleba Chleba released this 18 Aug 23:52
  • added modal controls via Ollama & LM Studio API
  • U for Unload model
  • L for Load model

v0.2.8

Choose a tag to compare

@Chleba Chleba released this 16 Aug 12:46

Added

  • --host / -H flag - choose the interface to bind to. Default is now 127.0.0.1 (loopback only).
  • Optional API-key authentication - set OLLAMA_MQ_API_KEY to enable. When set, all proxy routes require the key via Authorization: Bearer or X-API-Key: ; missing or wrong keys get 401 Unauthorized. /health stays unauthenticated for healthchecks. Key comparison is constant-time.
  • Docker: new HOST environment variable (defaults to 0.0.0.0 in containers, preserving external reachability) and OLLAMA_MQ_API_KEY support via -e.

Changed

  • Default bind address changed from 0.0.0.0 to 127.0.0.1 - the binary no longer accepts connections from other machines unless you explicitly pass --host 0.0.0.0. If you relied on LAN access (e.g. via the systemd unit), add --host 0.0.0.0 to ExecStart and consider setting OLLAMA_MQ_API_KEY.

Security

  • The proxy is no longer exposed to the local network by default, closing the unauthenticated-access gap where anyone on the LAN could submit inference requests with a plain curl.
  • RFC 7235-compliant 401 responses (WWW-Authenticate: Bearer, Content-Type: application/json); Bearer scheme matching is case-insensitive.

v0.2.7

Choose a tag to compare

@Chleba Chleba released this 01 Jun 00:13
  • add lmstudio support
  • add detection of AI backend instances
  • add list of backend's models
  • add active / last used / loaded model(s)

v0.2.6

Choose a tag to compare

@Chleba Chleba released this 30 Mar 13:20
  • fixed docker composer to support multiple ollama backends

v0.2.5

Choose a tag to compare

@Chleba Chleba released this 22 Mar 20:55
  • add all endpoints for ollama
  • add flag to allow all request into a proxy --allow-all-routes for example to claude code local use
  • add support multiple ollama urls backends

v0.2.4

Choose a tag to compare

@Chleba Chleba released this 15 Mar 14:58
  • update TUI
  • add option to BOOST user requests 1:5
  • add option to have WIP user (every request is priority)

v0.2.3

Choose a tag to compare

@Chleba Chleba released this 14 Mar 12:42
  • add extra ollama api to support various ollama/openai client @wuhongzhi
  • fix queued requests counter
  • blocking / unblocking users in main list
  • fix always active list selected index
  • fix gracefull quit