Skip to content

v2.2.0

Choose a tag to compare

@robkooper robkooper released this 16 Oct 03:36
· 20 commits to main since this release

Upgrade warning: Back up the database first. The migrations drop api_keys.active (replaced by revoked_at), entity_managers.is_owner (replaced by entities.owner_entity_id) and the model_group_access table, so older versions cannot run against the new schema: stop every replica before starting this version; a rolling update is not supported. The upgrade stops if any project has no owner and lists their IDs; give every project an owner (Change Owner on the project page) before upgrading. Downgrading does not restore group model grants or project user memberships; restore the backup instead.

Breaking: API requests always require model acknowledgment and api.consent has been removed. Remove it from config.yaml (Lumen refuses to start) and from Helm values (the chart schema rejects it). Have users acknowledge models before upgrading. (#48)

Added

  • The /v1 API allows cross-origin browser requests (CORS), and a browser OAuth (PKCE) example with a reusable JS module is in scripts/web-oauth.
  • Models can be set to take their price automatically from models.dev; manually set prices are no longer overwritten by Update. (#117)
  • API keys can be rotated in place, issuing a new secret while keeping the key's name and usage stats; project keys can only be rotated by the user who created them.
  • Projects support users: users can create one API key, managers can add/remove users, only the owner can add/remove managers, and every project always has exactly one owner.
  • Show which user created each project API key.
  • API keys can retrieve their cumulative usage through GET /v1/usage, including the account's remaining coins.
  • Lumen is now licensed under the Apache License 2.0.
  • OAuth key-request flows: device flow for CLIs and authorization-code + PKCE for web apps mint scoped API keys after a consent page with model acknowledgements and overwrite control. (#67)
  • lumen.sh logs in through the device flow, stores keys per server in ~/.config/lumen/keys.json plus a managed shell rc block (LUMEN_API_KEY + LUMEN_BASE_URL), and syncs Lumen models into the opencode config by default (--no-opencode, --relogin). (#67)
  • Alias entries in /v1/models set parent to the canonical model ID.
  • API keys record OAuth provenance (client_id, requested_by), shown in the profile key list tooltip.
  • Admins can add and remove a user's groups from the Edit User dialog.
  • Admins can reset a user's coins from the Coins Available card on their profile.
  • API-key consumers can acknowledge model requirements and inspect consent state through the API; GET /v1/models?include_unacknowledged=true also lists models still awaiting acknowledgment. (#92)
  • Log a warning with email, affiliation and IdP when a login matches no auto-join group.

Changed

  • Illinois theme footer links to Illinois Chat, Lumen, LLMHub and LLMflux; other links moved into footer columns.
  • Compact the Model Dashboard table: grouped coin columns, health merged into status, relative check times; acknowledge models from the Access column.
  • Request and token totals of a million or more display compactly (e.g. "5.2 million", "16.1 billion").
  • Generated opencode configs (lumen.sh sync and the Connect page) advertise each model's modalities, attachment, tool_call, and reasoning flags, so OpenCode accepts image uploads for vision models instead of rejecting them client-side. (#79)
  • The model dashboard lists each model's accepted inputs (text/image/audio) as pills next to its name. (#79)
  • Require an owner when creating a project, with a user search in the owner field.
  • Only admins in admin mode can create groups.
  • Helm chart models is copied verbatim into config.yaml and uses the config format (snake_case keys, endpoints list).
  • Config editor model list is sorted A–Z, with disabled models listed after enabled ones; the first model in that order is selected by default.
  • Pages are usable on phones and tablets: tables scroll, toolbars wrap, and chat/help/config fill the screen on any device.
  • Remove usage stats from group pages. (#116)
  • API keys are revoked instead of deleted: Revoke replaces Delete on the profile and project pages, keeps the key's usage history and records when and by whom it was revoked.
  • Model Update no longer overwrites prices from models.dev unless the model sets auto_price: true (config file or the Automatic price checkbox in the config editor). (#115, #117)
  • Update application dependencies.

Removed

  • The api.consent setting; API requests always require model acknowledgment. (#48)
  • Breaking: Group grants for owned models: an owned model is usable only by its owner, and the migration drops existing grants. (#116, #121, #122)
  • Breaking (Helm chart): In-cluster vLLM/SGLang model deployment; the models[].replicas, engine, image, gpu and storage values are gone.
  • Breaking (Helm chart): the unused oauth2.redirectUri value; delete it from your values file before upgrading or the chart schema rejects it. Lumen computes the callback URL itself.

Fixed

  • Fix model Update resetting input modalities to text-only on SGLang endpoints.
  • Model Update no longer flips or repeatedly reports reasoning; reasoning support is read from the serving backend's /server_info when available, otherwise from models.dev provider consensus.
  • Chat sidebar and message pane no longer resize while a reply streams.

Contributors