app: add model manager with batch ops, copy, and per-model settings#14531
Open
4RH1T3CT0R7 wants to merge 5 commits intoollama:mainfrom
Open
app: add model manager with batch ops, copy, and per-model settings#145314RH1T3CT0R7 wants to merge 5 commits intoollama:mainfrom
4RH1T3CT0R7 wants to merge 5 commits intoollama:mainfrom
Conversation
- Add /models route with ModelManager component featuring model listing, search filter, expandable cards with model details (family, parameters, quantization, format, system prompt), size display, and modification dates - Add PullDialog with streaming progress bar, popular models list with install status, and search filtering - Add getModelsDetailed() API function that fetches full model data (size, details, dates) directly from /api/tags, bypassing the limited Model class that loses data through the Time wrapper - Add deleteModel() and showModel() API functions - Fix pullModel() to use correct /api/pull endpoint - Add proxy routes for POST /api/pull, DELETE /api/delete, POST /api/copy - Add Models navigation link to ChatSidebar (Windows) - Add Models menu item to Windows system tray - Extend responses.Model with Size field and update gotypes
…model manager
- Batch selection with floating action bar for bulk delete
- Copy/alias dialog (POST /api/copy)
- Sort controls: name, size, date (asc/desc)
- Per-model settings: temperature, context length, top_k, top_p, system prompt
- New model_settings SQLite table (migration v15→v16)
- GET/POST/DELETE /api/v1/model-settings/{model} endpoints
- Applied in buildChatRequest() via api.ChatRequest.Options
- Security: authProxy wrapper for destructive proxy routes (pull/delete/copy)
- Fix proxy error handler leaking internal details
- Fix pullModel swallowing server-streamed error events
- Fix getModelsDetailed producing epoch dates for null modified_at
This was referenced Mar 1, 2026
fc6636d to
8340fbc
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Full model management UI for the Ollama desktop app:
/api/show)POST /api/copy)model_settingstable, migration v15→v16), applied automatically inbuildChatRequest()authProxywrapper enforcing token authentication on destructive proxy routes (/api/pull,/api/delete,/api/copy)Related PRs
This is Part 3 of 3 in the Ollama Desktop UI improvement series:
Each PR is independent and can be merged separately. Together they transform the desktop app from a chat-only interface into a comprehensive Ollama management tool.
Backend changes
app/store/store.goModelSettingsstruct,GetModelSettings/SetModelSettings/DeleteModelSettingsStore methodsapp/store/database.gomodel_settingstable, CRUD queriesapp/ui/ui.go/api/v1/model-settings/{model}),authProxyfor destructive routes, per-model settings applied inbuildChatRequest()app/ui/responses/types.goSizefield onModelstructapp/wintray/Frontend changes
ModelManager.tsxapi.tsgetModelsDetailed,copyModel,deleteModel,showModel,pullModel(with error event handling), model settings CRUDChatSidebar.tsxroutes/models.tsxTest plan