Repository navigation
v2.2.0
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
/v1API allows cross-origin browser requests (CORS), and a browser OAuth (PKCE) example with a reusable JS module is inscripts/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.shlogs in through the device flow, stores keys per server in~/.config/lumen/keys.jsonplus 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/modelssetparentto 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=truealso 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.shsync and the Connect page) advertise each model'smodalities,attachment,tool_call, andreasoningflags, 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
modelsis copied verbatim intoconfig.yamland uses the config format (snake_case keys,endpointslist). - 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.consentsetting; 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,gpuandstoragevalues are gone. - Breaking (Helm chart): the unused
oauth2.redirectUrivalue; 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_infowhen available, otherwise from models.dev provider consensus. - Chat sidebar and message pane no longer resize while a reply streams.