Skip to content

Changelog

Format follows Keep a Changelog, versioning follows SemVer. The authoritative source is the CHANGELOG.md in the repository — this page mirrors the same content into the docs.

  • Interactive API reference (docs/openapi.yaml, OpenAPI 3.1): all 24 HTTP routes with schemas, error codes, and a ready-made cURL example per endpoint, automatically generated at /api/ on the docs website. The HTTP API reference has been trimmed accordingly — now covering only auth, SSE streaming, and one end-to-end example, with no more manually maintained endpoint list.
  • Real screenshots of the web UI (chat, jobs, models, settings) in the web UI docs.
  • Project logo as the header wordmark and browser favicon of the docs website.
  • Practical examples (MCP server, scheduler job) in the configuration docs.
  • entwicklung/ renamed to weiterentwicklung/: the sidebar sorts folders alphabetically once an OpenAPI specification is present — the rename brings the order to Installation → Configuration → Usage → Models → Further Development → API Reference.
  • TestChatSessionContinuity flaked under CI load (~9 out of 240 runs): automatic session-title assignment runs in a background goroutine and could overwrite the last recorded test request. The test now specifically targets the request carrying the expected message.
  • Web UI (embedded in the daemon, ollama-agent ui opens it in the browser; installable as a PWA): chat with multiple sessions, automatic naming (LLM-generated titles), renaming, full-text search, per-response token display, context meter with a compress function; jobs overview with instant execution and history; model page with capability matrix, benchmark launch from the UI (live progress), and Ollama tuning guide; settings page (masked config, task assignment, API token).
  • Persistent chat sessions (state_dir/sessions/), surviving daemon restarts.
  • New API endpoints: GET/PATCH /v1/sessions/{id}, POST /v1/sessions/{id}/compact, GET /v1/matrix, GET /v1/config (masked), POST /v1/probe/run + GET /v1/probe/status (benchmarks from the daemon).
  • Logo added to the repo (light/dark, SVG+PNG) and embedded in README/UI.
  • Text-to-speech & speech input (Google Cloud): a speaker icon under every agent response and a microphone on the input field, both appearing only after a successful key test. Language and voice are selectable (voice list live from Google, sample playback). The API key stays server-side (state_dir/speech.json, 0600) and is never delivered to the browser; a key that fails the test is never even stored. Endpoints: GET/PUT/DELETE /v1/speech/config, GET /v1/speech/voices, POST /v1/speech/tts, POST /v1/speech/stt.
  • Docker image: multi-stage build (static, Alpine, non-root, healthcheck), web UI as the default command; configuration either purely via env vars (OLLAMA_URLS, OLLAMA_DEFAULT_MODEL, optionally addr/token/state) or a mounted /data/config.json.
  • cmd/ollama-agent/main.go was missing from the repository (an overly broad .gitignore rule was swallowing the directory) — clones and Docker builds failed to compile.
  • Empty, never-used sessions are no longer persisted.
  • Model probe & capability matrix (probe): standardized test of all models per endpoint — complexity levels 1–5, needle-in-context ladder up to 256k, tokens/s, response times (cold/warm/8k), stability (technical vs. content errors), and measured GPU/CPU execution (/api/ps). Results persisted in state_dir/model-matrix.json.
  • Context depth test (probe deep, RULER principle): measures how well a model actually uses its large context — deterministically generated document, questions of increasing difficulty (retrieval at three depths, multi-hop, aggregation), weighted percentage score. --plan for a dry run with time estimate.
  • Model exclusion filter (--exclude, default uncensored,heretic) for model discovery.
  • Web tools (web_search, web_fetch): internet research and page analysis with a compression layer (Readability extraction, pagination, compact link/result lists) — tailored to small model context sizes.
  • Model guide (Models: which one for what): guidance on how to use the tests to find the optimal operating models and assign tasks.
  • The agent automatically uses the measured effective context sizes (conservative minimum across all endpoints) for history compaction.
  • Timeouts made generously long throughout for slow local models (chat request 900 s, scheduler job 900 s, classification 5 min, probe configurable). The probe couples its HTTP timeout to --call-timeout so large contexts aren’t cut off during RAM offload.
  • The router disables thinking during classification and uses category descriptions for higher accuracy.
  • Default API port set to 2330.
  • probe deep without run only displays results (no accidental test run).
  • Data-driven task assignment in the example/lab config (nemotron for document understanding, qwen3.5:9b for chat, qwen3-coder for code, gemma4:e4b as router).
  • The salvage parser now rescues XML-style tool calls (<function=…>) that coder models emit instead of structured tool_calls.
  • Application-level 5xx errors (e.g. model OOM) no longer mark an endpoint as “unhealthy”.
  • Endpoint names nvidia/cpu aligned with the real server topology (ports had been mentally swapped).

Initial version: endpoint pool with failover, model router, agent loop with salvage parsing, markdown skills, MCP client, HTTP API with sessions, cron scheduler, history compaction.