Thanks to visit codestin.com
Credit goes to github.com

Skip to content

app: add model manager with batch ops, copy, and per-model settings#14531

Open
4RH1T3CT0R7 wants to merge 5 commits intoollama:mainfrom
4RH1T3CT0R7:feature/model-manager
Open

app: add model manager with batch ops, copy, and per-model settings#14531
4RH1T3CT0R7 wants to merge 5 commits intoollama:mainfrom
4RH1T3CT0R7:feature/model-manager

Conversation

@4RH1T3CT0R7
Copy link

@4RH1T3CT0R7 4RH1T3CT0R7 commented Mar 1, 2026

Summary

Full model management UI for the Ollama desktop app:

  • Model list with search, expandable details (family, parameters, quantization, system prompt via /api/show)
  • Pull models with streaming progress bar, popular models suggestions with "installed" badges
  • Delete models with confirmation dialog
  • Batch operations — multi-select models via checkboxes, floating action bar for bulk delete
  • Copy / Alias — duplicate a model under a new name (POST /api/copy)
  • Sort controls — by name, size, or date (ascending/descending)
  • Per-model settings — temperature, context length, top_k, top_p, system prompt stored in SQLite (model_settings table, migration v15→v16), applied automatically in buildChatRequest()
  • SecurityauthProxy wrapper 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:

  1. PR app: add extended settings with tabbed UI #14526Extended Settings: Tabbed settings UI (General, GPU, Generation, Network)
  2. PR app: add monitoring dashboard #14528Monitoring Dashboard: GPU/memory monitoring, loaded models, system tray extensions
  3. This PR — Model Manager: Full model CRUD, batch ops, per-model settings

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

File Change
app/store/store.go ModelSettings struct, GetModelSettings/SetModelSettings/DeleteModelSettings Store methods
app/store/database.go Migration v15→v16 creating model_settings table, CRUD queries
app/ui/ui.go 3 new API endpoints (/api/v1/model-settings/{model}), authProxy for destructive routes, per-model settings applied in buildChatRequest()
app/ui/responses/types.go Size field on Model struct
app/wintray/ "Models..." system tray menu entry

Frontend changes

File Change
ModelManager.tsx 1262-line component: ModelCard, PullDialog, CopyDialog, BatchActionBar, SortDropdown, ModelSettingsPanel
api.ts getModelsDetailed, copyModel, deleteModel, showModel, pullModel (with error event handling), model settings CRUD
ChatSidebar.tsx Models navigation link
routes/models.tsx TanStack Router route

Test plan

  • Navigate to Models page from sidebar and system tray
  • Verify model list loads with sizes and dates
  • Pull a model — progress bar streams correctly
  • Delete a model — disappears from list
  • Batch select multiple models → bulk delete
  • Copy a model to a new name → appears in list
  • Sort by name/size/date in both directions
  • Set per-model temperature → verify it applies in chat
  • Set per-model system prompt → verify it prepends in conversation
  • Reset per-model settings → verify defaults restored
  • Verify destructive endpoints require auth (non-dev mode)
Screenshot_7 Screenshot_8 Screenshot_9 Screenshot_14

- 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant